<?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>237863</bug_id>
          
          <creation_ts>2022-03-14 18:48:38 -0700</creation_ts>
          <short_desc>[JSC] Use constants buffer in DFG</short_desc>
          <delta_ts>2022-04-19 10:21:02 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>angelos</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</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>1851107</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-14 18:48:38 -0700</bug_when>
    <thetext>[JSC] Use constants buffer in DFG</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851108</commentid>
    <comment_count>1</comment_count>
      <attachid>454645</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-14 18:49:23 -0700</bug_when>
    <thetext>Created attachment 454645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851115</commentid>
    <comment_count>2</comment_count>
      <attachid>454648</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-14 19:15:37 -0700</bug_when>
    <thetext>Created attachment 454648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851116</commentid>
    <comment_count>3</comment_count>
      <attachid>454649</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-14 19:25:13 -0700</bug_when>
    <thetext>Created attachment 454649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851660</commentid>
    <comment_count>4</comment_count>
      <attachid>454802</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-15 22:56:35 -0700</bug_when>
    <thetext>Created attachment 454802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852553</commentid>
    <comment_count>5</comment_count>
      <attachid>455044</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-17 16:51:21 -0700</bug_when>
    <thetext>Created attachment 455044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852631</commentid>
    <comment_count>6</comment_count>
      <attachid>455072</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-18 00:22:53 -0700</bug_when>
    <thetext>Created attachment 455072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852649</commentid>
    <comment_count>7</comment_count>
      <attachid>455076</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-03-18 01:31:53 -0700</bug_when>
    <thetext>Created attachment 455076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853473</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-21 18:49:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/90606538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854143</commentid>
    <comment_count>9</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2022-03-23 06:33:58 -0700</bug_when>
    <thetext>I cancelled jsc builds https://ews-build.webkit.org/#/builders/46/builds/21500 and https://ews-build.webkit.org/#/builders/45/builds/12635
There were various segmentation faults in https://ews-build.webkit.org/#/builders/45/builds/12635/steps/15/logs/stdio. Please have a look it&apos;s that&apos;s because of the patch or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858277</commentid>
    <comment_count>10</comment_count>
      <attachid>456680</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-05 00:30:45 -0700</bug_when>
    <thetext>Created attachment 456680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860469</commentid>
    <comment_count>11</comment_count>
      <attachid>457299</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-11 16:36:16 -0700</bug_when>
    <thetext>Created attachment 457299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860486</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-11 17:12:57 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/274</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861010</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-12 20:02:45 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/279</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862460</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-19 01:07:42 -0700</bug_when>
    <thetext>Committed r293009 (249748@main): &lt;https://commits.webkit.org/249748@main&gt;

Reviewed commits have been landed. Closing PR #279 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862615</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-19 10:20:05 -0700</bug_when>
    <thetext>Committed r293020 (249759@trunk): &lt;https://commits.webkit.org/249759@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862618</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-04-19 10:21:02 -0700</bug_when>
    <thetext>This is not directly related to uDFG, but it seems that TempRegisterSet, ScratchRegisterAllocator etc. is heavily relying on a wrong implementation of GPRInfo::numberOfRegisters. TempRegisterSet can only accept register which is considered as a temp register in GPRInfo. But this does not work if we remove constants-buffer register from DFG &amp; GPRInfo while using it in FTL. But fundamental problem is that TempRegisterSet and ScratchRegisterAllocator are relying on GPRInfo::numberOfRegisters since it is DFG specific information (and if we use it in IC, which can be used in FTL too, then we hit this crash).
In ARM64, it does not have a problem since constants buffer register is not included anyway in GPRInfo::numberOfRegisters even before that</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454645</attachid>
            <date>2022-03-14 18:49:23 -0700</date>
            <delta_ts>2022-03-14 19:28:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220314184922.patch</filename>
            <type>text/plain</type>
            <size>248085</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
N2M5YjFjZGFkNTg1YmUxYjU4Y2IwOWI4ZWUyMTllMDI4MzhhNWQ1Li5mYWZhN2M0NjFmODAxOGM5
ZGMyZDRkMDMzMmY5ODQ1NGE2YjJhMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTQgQEAKKzIwMjItMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXJQdHIpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0
cmFuc2ZlclB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
SklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01h
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldERGR0pJ
VERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxv
Y2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OndhdGNoQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6d2F0Y2hDb25kaXRpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
d2F0Y2hHbG9iYWxQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnRyeUdldENv
bnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRDb25zdGFu
dENsb3N1cmVWYXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZp
ZXcpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpnZXRSZWdFeHBQcm90b3R5cGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNj
ZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2FuRG9GYXN0U3ByZWFkKToKKyAgICAg
ICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAg
ICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBp
bGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6
VW5saW5rZWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQ6Om1hdGVyaWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudDo6cG9rZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtQdHIpOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAg
KEpTQzo6REZHOjpQbGFuOjphZGRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZH
OjpQbGFuOjpmaW5hbGl6ZUpJVERhdGEpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAg
ICAgICogZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEdldENhbGxlZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQ
cml2YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hX
aXRoU2NvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
aW5nU2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Vy
cmVudEJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrVHJhcHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbik6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJh
bmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAq
IGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRDb2Rl
QmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxw
ZXJzOjpwb2tlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6
R1BSSW5mbzo6dG9SZWdpc3Rlcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TWF0ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDb21waWxhdGlvbk1vZGUuY3BwOgorICAgICAgICAo
V1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBqaXQvSklUQ29tcGlsYXRpb25Nb2RlLmg6
CisgICAgICAgIChKU0M6OmlzREZHKToKKyAgICAgICAgKEpTQzo6aXNVbmxpbmtlZCk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGppdC9KSVRQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUGxhbjo6dGllciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpJVFBsYW46OnJlcG9ydENvbXBpbGVUaW1lcyBjb25zdCk6
CisgICAgICAgICogaml0L0pJVFBsYW4uaDoKKyAgICAgICAgKEpTQzo6SklUUGxhbjo6aXNERkcg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKSVRQbGFuOjppc1VubGlua2VkIGNvbnN0KToKKyAgICAg
ICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpm
dGxDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmg6CisgICAg
ICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNv
bnRlbnRzOjpkYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6ZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGFXaXRob3V0UEFDVmFsaWRhdGlvbiBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKwogMjAyMi0wMy0xMSAgQWRyaWFuIFBlcmV6IGRl
IENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHTGliXSBFeHBvc2UgQXJy
YXlCdWZmZXIgaW4gdGhlIHB1YmxpYyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKaW5kZXggNjMzNzczYWVlYzlkMWM5
NjdmYTk4YTVhY2IyYTEyNDUyZWIyNTA3Yy4uYzhkN2U3ZGRkYTM2NDJjNDBlZTRmNTQ1OGI5OGZi
ZWQ5MDc5ZDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTE5NjAsNiArMTk2MCwxNyBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlckFSTTY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVy
PiB7CiAgICAgICAgIHN0b3JlNjQoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQog
CisgICAgdm9pZCB0cmFuc2ZlcjY0KEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgewor
ICAgICAgICBsb2FkNjQoc3JjLCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlk
YXRlKCkpOworICAgICAgICBzdG9yZTY0KGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZElu
dmFsaWRhdGUoKSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB0cmFuc2ZlclB0cihBZGRyZXNz
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgdHJhbnNmZXI2NChzcmMsIGRlc3Qp
OworICAgIH0KKwogICAgIERhdGFMYWJlbDMyIHN0b3JlNjRXaXRoQWRkcmVzc09mZnNldFBhdGNo
KFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAgICAgICBEYXRhTGFi
ZWwzMiBsYWJlbCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCmluZGV4IDM2NDY4NmRmZjY4OTk0ZGVhYTA0
ZTk1NjYzNmFkNjJmMDJlYzExNTUuLmIzYmY2ZWJmOTcwMjE1MzY4MjhkMjhkMDFhZDQ4MGMzNThj
YjlmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJSSVNDVjY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclJJU0NWNjQuaApAQCAtMTE3MSw2ICsxMTcxLDE4IEBAIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyUklTQ1Y2NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxl
cj4gewogICAgICAgICBtX2Fzc2VtYmxlci5zZEluc24odGVtcC5tZW1vcnkoKSwgaW1tUmVnaXN0
ZXIsIEltbTo6UzwwPigpKTsKICAgICB9CiAKKyAgICB2b2lkIHRyYW5zZmVyNjQoQWRkcmVzcyBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPERhdGE+
KCk7CisgICAgICAgIGxvYWQ2NChzcmMsIHRlbXAuZGF0YSgpKTsKKyAgICAgICAgc3RvcmU2NCh0
ZW1wLmRhdGEoKSwgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB0cmFuc2ZlclB0cihBZGRyZXNz
IHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgdHJhbnNmZXI2NChzcmMsIGRlc3Qp
OworICAgIH0KKwogICAgIHZvaWQgc3RvcmVQYWlyMzIoUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3Rl
cklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIHN0b3JlUGFpcjMyKHNy
YzEsIHNyYzIsIGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYjJlOTEx
YWExMzY2M2EyNTA5ODQwYTA1Njg4NDEyZjI5MjhlZjQ2My4uMWJlYzllODU1YmZjYTgxYjA5MTQ0
OGFkYWNkNTJmOGZmMWU1NzY1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTAyNiw2ICsxMDI2LDE3IEBA
IGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uIHsKICAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgbV9h
c3NlbWJsZXIubW92cV9ybShzY3JhdGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJl
c3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQorCisgICAgdm9p
ZCB0cmFuc2ZlcjY0KEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBs
b2FkNjQoc3JjLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJl
Z2lzdGVyKCksIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBz
cmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsK
KyAgICB9CiAgICAgCiAgICAgRGF0YUxhYmVsMzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0
Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA5OGFlZDkzNWE2OGY3ZDY2
ODdiZDM1MjMyNTMwNzdmMzFlZDE5ZjIuLjI1OTZmODM0OTA2YjNkODFkYzNjNzM0MzdlYjEyMTM2
ZDAyZWQxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCkBAIC03ODcsOSArNzg3LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVwV2l0aFVubGlua2Vk
QmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAKICAgICB7CiAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgQVNTRVJUKCFt
X2Jhc2VsaW5lSklURGF0YSk7Ci0gICAgICAgIG1fYmFzZWxpbmVKSVREYXRhID0gQmFzZWxpbmVK
SVREYXRhOjpjcmVhdGUoaml0Q29kZS0+bV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKLSAgICAgICAg
bV9iYXNlbGluZUpJVERhdGEtPm1fc3R1YkluZm9zID0gRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1
YkluZm8+KGppdENvZGUtPm1fdW5saW5rZWRTdHViSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgQVNT
RVJUKCFtX2ppdERhdGEpOworICAgICAgICBhdXRvIGJhc2VsaW5lSklURGF0YSA9IEJhc2VsaW5l
SklURGF0YTo6Y3JlYXRlKGppdENvZGUtPm1fY29uc3RhbnRQb29sLnNpemUoKSk7CisgICAgICAg
IGJhc2VsaW5lSklURGF0YS0+bV9zdHViSW5mb3MgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVTdHVi
SW5mbz4oaml0Q29kZS0+bV91bmxpbmtlZFN0dWJJbmZvcy5zaXplKCkpOwogICAgICAgICBmb3Ig
KGF1dG8mIHVubGlua2VkQ2FsbExpbmtJbmZvIDogaml0Q29kZS0+bV91bmxpbmtlZENhbGxzKSB7
CiAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGdldENhbGxMaW5rSW5m
b0ZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCB1bmxpbmtlZENhbGxMaW5rSW5mby5ieXRlY29kZUlu
ZGV4KTsKICAgICAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm8pOwpAQCAtODAwLDI4ICs4MDAs
MjkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxC
YXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAgICAgICAgICAgICBhdXRvIGVudHJ5ID0gaml0Q29k
ZS0+bV9jb25zdGFudFBvb2wuYXQoaSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUo
KSkgewogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6OlR5cGU6Okdsb2JhbE9iamVj
dDoKLSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBtX2dsb2JhbE9i
amVjdC5nZXQoKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZUpJVERhdGEtPmF0KGkpID0gbV9n
bG9iYWxPYmplY3QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6U3RydWN0dXJlU3R1YkluZm86IHsKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVudHJ5LnBv
aW50ZXIoKSk7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyYgdW5s
aW5rZWRTdHViSW5mbyA9IGppdENvZGUtPm1fdW5saW5rZWRTdHViSW5mb3NbaW5kZXhdOwotICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IG1fYmFzZWxpbmVKSVRE
YXRhLT5tX3N0dWJJbmZvc1tpbmRleF07CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvID0gYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJbmZvc1tpbmRleF07CiAgICAg
ICAgICAgICAgICAgc3R1YkluZm8uaW5pdGlhbGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJ
bmZvKHRoaXMsIHVubGlua2VkU3R1YkluZm8pOwotICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVK
SVREYXRhLT5hdChpKSA9ICZzdHViSW5mbzsKKyAgICAgICAgICAgICAgICBiYXNlbGluZUpJVERh
dGEtPmF0KGkpID0gJnN0dWJJbmZvOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6OlR5cGU6OkZ1bmN0aW9uRGVj
bDogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4oZW50cnkucG9pbnRlcigpKTsKLSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0
YS0+YXQoaSkgPSBmdW5jdGlvbkRlY2woaW5kZXgpOworICAgICAgICAgICAgICAgIGJhc2VsaW5l
SklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkRlY2woaW5kZXgpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6OlR5
cGU6OkZ1bmN0aW9uRXhwcjogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKLSAgICAgICAgICAgICAgICBt
X2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkV4cHIoaW5kZXgpOworICAgICAgICAg
ICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkV4cHIoaW5kZXgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgICAgIG1faml0RGF0YSA9IGJhc2VsaW5lSklURGF0YS5yZWxlYXNlKCk7CiAgICAg
fQogCiAgICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7CkBAIC05MDYsMjAgKzkwNywyNCBAQCBDb2Rl
QmxvY2s6On5Db2RlQmxvY2soKQogICAgIC8vIGRlc3RydWN0b3JzLgogCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0g
ICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAg
ICAgICAgICAgc3R1YkluZm8uYWJvdXRUb0RpZSgpOwotICAgICAgICAgICAgc3R1YkluZm8uZGVy
ZWYoKTsKLSAgICAgICAgfQotICAgIH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1f
c3R1YkluZm9zKSB7CiAgICAgICAgICAgICBzdHViSW5mby0+YWJvdXRUb0RpZSgpOwogICAgICAg
ICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0KLSAgICB9CisgICAgICAgIGlmICht
X2ppdERhdGEpCisgICAgICAgICAgICBkZWxldGUgYml0d2lzZV9jYXN0PERGRzo6REZHSklURGF0
YSo+KG1faml0RGF0YSk7CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byog
aml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0
dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5m
by5hYm91dFRvRGllKCk7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uZGVyZWYoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBqaXREYXRhOworICAgICAgICB9CisgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKQEAgLTEyNDgsMTggKzEyNTMsMTcgQEAgdm9pZCBD
b2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFZpc2l0b3ImIHZpc2l0b3IKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRD
b2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9i
YXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8g
OiBqaXREYXRhLT5tX3N0dWJJbmZvcykKLSAgICAgICAgICAgICAgICBzdHViSW5mby5wcm9wYWdh
dGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAgICAgICAgfQotICAgIH0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9zKQogICAgICAgICAgICAgc3R1YkluZm8tPnByb3Bh
Z2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwotICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKKyAgICAgICAg
fQorICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAogI2lmIEVOQUJMRShERkdfSklU
KQpAQCAtMTU4NSwxNSArMTU4OSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5s
aW5lQ2FjaGVzKCkKICNpZiBFTkFCTEUoSklUKQogdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplSklU
SW5saW5lQ2FjaGVzKCkKIHsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVRE
YXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0
dWJJbmZvcykgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyQmFzZSBsb2NrZXIoTm9M
b2NraW5nTmVjZXNzYXJ5KTsKLSAgICAgICAgICAgIHN0dWJJbmZvLnZpc2l0V2Vha1JlZmVyZW5j
ZXMobG9ja2VyLCB0aGlzKTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIEVOQUJMRShERkdfSklU
KQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVO
QUJMRShERkdfSklUKQogICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0
Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgIGZvciAoYXV0byogY2FsbExpbmtJbmZvIDogZGZn
Q29tbW9uLT5tX2NhbGxMaW5rSW5mb3MpCiAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnZpc2l0
V2Vhayh2bSgpKTsKQEAgLTE2MDEsOCArMTU5OCwxNSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxp
emVKSVRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyQmFzZSBs
b2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICAgICAgICAgIHN0dWJJbmZvLT52aXNpdFdl
YWtSZWZlcmVuY2VzKGxvY2tlciwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9CiAjZW5kaWYKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgp
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5m
b3MpIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xv
Y2tpbmdOZWNlc3NhcnkpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvLnZpc2l0V2Vha1JlZmVy
ZW5jZXMobG9ja2VyLCB0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0K
ICNlbmRpZgogCkBAIC0xNjg5LDEyICsxNjkzLDggQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3Rh
dHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAg
ICAgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkg
ewotICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KQotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNTdGF0
dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZvOwotICAgICAgICB9Ci0j
aWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
aml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICAgICAgREZHOjpDb21t
b25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAgICAgICAgICAg
Zm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9zdHViSW5mb3MpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0
b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CkBAIC0xNzEwLDggKzE3MTAsMTMgQEAgdm9p
ZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElD
U3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0
LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuaW5TdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQo
KTsKICAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0
dXNlcy5kZWxldGVzKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNT
dGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmRlbGV0ZVN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgp
OwotICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChh
dXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3It
PnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZvOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKQEAgLTE3MjgsMjEgKzE3MzMs
MjEgQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiByZXN1bHQp
CiBTdHJ1Y3R1cmVTdHViSW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1YkluZm8oQ29kZU9yaWdpbiBj
b2RlT3JpZ2luKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAg
ICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAg
IGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAg
ICAgaWYgKHN0dWJJbmZvLmNvZGVPcmlnaW4gPT0gY29kZU9yaWdpbikKLSAgICAgICAgICAgICAg
ICByZXR1cm4gJnN0dWJJbmZvOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgICAgIGZvciAoYXV0byogc3R1YkluZm8gOiBqaXRDb2RlKCkt
PmRmZ0NvbW1vbigpLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5j
b2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJbmZv
OwogICAgICAgICB9Ci0gICAgfQogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1
dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgZm9yIChhdXRv
JiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7CisgICAgICAgICAgICAgICAgaWYg
KHN0dWJJbmZvLmNvZGVPcmlnaW4gPT0gY29kZU9yaWdpbikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICZzdHViSW5mbzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTc4MSw3ICsxNzg2LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKICAgICBSRUxFQVNFX0FTU0VSVCghSklUQ29kZTo6aXNK
SVQoaml0VHlwZSgpKSk7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgIAotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsK
KyAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CiAgICAgICAgIC8v
IFdlIGNhbiBjbGVhciB0aGVzZSBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIGhhdmUgcmVm
ZXJlbmNlcyB0byBhbnkgc3R1YiBpbmZvcywgY2FsbAogICAgICAgICAvLyBsaW5rIGluZm9zLCBv
ciBieSB2YWwgaW5mb3MgaWYgd2UgZG9uJ3QgaGF2ZSBKSVQgY29kZS4gQXR0ZW1wdHMgdG8gcXVl
cnkgdGhlc2UgZGF0YQogICAgICAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50
IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYg
d2UKQEAgLTE4MDIsNyArMTgwNyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklU
RGF0YSgpCiAgICAgICAgIC8vIFdlIGNhbiBjbGVhciB0aGlzIGJlY2F1c2UgdGhlIERGRydzIHF1
ZXJpZXMgdG8gdGhlc2UgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBndWFyZGVkIGJ5IHdoZXRoZXIKICAg
ICAgICAgLy8gdGhlcmUgaXMgSklUIGNvZGUuCiAKLSAgICAgICAgbV9iYXNlbGluZUpJVERhdGEg
PSBudWxscHRyOworICAgICAgICBtX2ppdERhdGEgPSBudWxscHRyOwogICAgIH0KIH0KICNlbmRp
ZgpAQCAtMTg0OCwxOSArMTg1MywxOSBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0
cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgfSk7
CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJ
VERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1f
c3R1YkluZm9zKQotICAgICAgICAgICAgc3R1YkluZm8udmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7
Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwog
ICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogZGZnQ29tbW9uLT5tX3N0dWJJbmZvcykKICAg
ICAgICAgICAgIHN0dWJJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgZGZn
Q29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAg
ICB2aXNpdE9TUkV4aXRUYXJnZXRzKGxvY2tlciwgdmlzaXRvcik7CisjZW5kaWYKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCisg
ICAgICAgICAgICAgICAgc3R1YkluZm8udmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgICAg
IH0KICAgICB9CiAjZW5kaWYKIH0KQEAgLTM0NzcsMjEgKzM0ODIsMjIgQEAgc3RkOjpvcHRpb25h
bDxDb2RlT3JpZ2luPiBDb2RlQmxvY2s6OmZpbmRQQyh2b2lkKiBwYykKIAogICAgIHsKICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICBpZiAoYXV0byog
aml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc3R1YkluZm8uY29udGFpbnNQQyhwYykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBz
dHViSW5mby5jb2RlT3JpZ2luOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0jaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgp
KSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICAgICAgREZHOjpDb21tb25EYXRhKiBk
ZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAgICAgICAgICAgZm9yIChhdXRv
KiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9zdHViSW5mb3MpIHsKICAgICAgICAgICAgICAgICBp
ZiAoc3R1YkluZm8tPmNvbnRhaW5zUEMocGMpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c3R1YkluZm8tPmNvZGVPcmlnaW47CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KICNlbmRpZgor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGlu
ZUpJVERhdGEoKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXRE
YXRhLT5tX3N0dWJJbmZvcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY29u
dGFpbnNQQyhwYykpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3R1YkluZm8uY29k
ZU9yaWdpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAg
ICB9CiAKICAgICByZXR1cm4gbV9qaXRDb2RlLT5maW5kUEModGhpcywgcGMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDQ2OTYzZDczZGUyM2UwMWZk
MTUyNTQ1MWE4MzQ3YjZjNzc1YzE4MjYuLjQ1NzlhZWQ3NDAwODg4ZTkwYWI4MTI2M2FmZGZhNWMw
NTBjNDBhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTc5LDYgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
IG5hbWVzcGFjZSBERkcgeworY2xhc3MgREZHSklURGF0YTsKIHN0cnVjdCBPU1JFeGl0U3RhdGU7
CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgpAQCAtMjQ3LDcgKzI0OCw3IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RkOjpvcHRpb25hbDxCeXRlY29kZUlu
ZGV4PiBieXRlY29kZUluZGV4RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7CiAKLSAg
ICAvLyBCZWNhdXNlIHdlIG1pZ2h0IHRocm93IG91dCBiYXNlbGluZSBKSVQgY29kZSBhbmQgYWxs
IGl0cyBiYXNlbGluZSBKSVQgZGF0YSAobV9iYXNlbGluZUpJVERhdGEpLAorICAgIC8vIEJlY2F1
c2Ugd2UgbWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2Vs
aW5lIEpJVCBkYXRhIChtX2ppdERhdGEpLAogICAgIC8vIHlvdSBuZWVkIHRvIGJlIGNhcmVmdWwg
YWJvdXQgdGhlIGxpZmV0aW1lIG9mIHdoZW4geW91IHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRo
aXMgZnVuY3Rpb24uCiAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBtYXkgaGF2ZSByYXcgcG9pbnRl
cnMgaW50byB0aGlzIGRhdGEgc3RydWN0dXJlIHRoYXQgZ2V0cyB0aHJvd24gYXdheS4KICAgICAv
LyBTcGVjaWZpY2FsbHksIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IG5vIEdDIGNhbiBiZSBmaW5h
bGl6ZWQgKHR5cGljYWxseSB0aGF0IG1lYW5zIG5vCkBAIC0yNTgsNyArMjU5LDcgQEAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lkIHNl
dHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+KTsKIAotICAg
IHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2Jhc2VsaW5lSklURGF0YSk7IH0KKyAgICBzdGF0aWMg
cHRyZGlmZl90IG9mZnNldE9mSklURGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2Rl
QmxvY2ssIG1faml0RGF0YSk7IH0KIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRPcHRpbWl6
aW5nU3R1YkluZm8oQWNjZXNzVHlwZSwgQ29kZU9yaWdpbik7CiAKQEAgLTUzNCw5ICs1MzUsMjUg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxl
JiBiYXNlbGluZVN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCk7CiAgICAgQmFz
ZWxpbmVKSVREYXRhKiBiYXNlbGluZUpJVERhdGEoKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKLSAgICAgICAgcmV0dXJu
IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpOworICAgICAgICBpZiAoIUpJVENvZGU6OmlzT3B0aW1p
emluZ0pJVChqaXRUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxCYXNl
bGluZUpJVERhdGEqPihtX2ppdERhdGEpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICB2b2lkIHNldERGR0pJVERhdGEoc3RkOjp1bmlx
dWVfcHRyPERGRzo6REZHSklURGF0YT4mJiBqaXREYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2ppdERhdGEpOworICAgICAgICBtX2ppdERhdGEgPSBqaXREYXRhLnJlbGVhc2UoKTsKKyAg
ICB9CisKKyAgICBERkc6OkRGR0pJVERhdGEqIGRmZ0pJVERhdGEoKQorICAgIHsKKyAgICAgICAg
aWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKQorICAgICAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxERkc6OkRGR0pJVERhdGEqPihtX2ppdERhdGEpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKICNlbmRpZgogICAgIHNpemVfdCBudW1iZXJP
ZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2Rl
LT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9CiAgICAgY29uc3QgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4
KSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJ
bmRleCk7IH0KQEAgLTkzNyw3ICs5NTQsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOwogI2lmIEVOQUJMRShKSVQpCiBw
dWJsaWM6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2VsaW5lSklURGF0YT4gbV9iYXNlbGluZUpJ
VERhdGE7CisgICAgdm9pZCogbV9qaXREYXRhIHsgbnVsbHB0ciB9OwogcHJpdmF0ZToKICNlbmRp
ZgogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBkOThmYjc2ZWNiNjEzZDI2ZmI2ZjI2ZDViYTE1YjNl
M2RiNzg2YjAxLi4yOGYxMjE1YjM2OGUzZThhMDFmMGUxNmQ1MjE2ODYyZTBmMThjYjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAt
MTU2Niw2ICsxNTY2LDExIEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3Qo
Q2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1CiAgICAgICAgIHJldHVy
biBVSU5UX01BWDsKICAgICB9CiAKKyAgICBpZiAobV9ncmFwaC5tX3BsYW4uaXNVbmxpbmtlZCgp
KSB7CisgICAgICAgIFZFUkJPU0VfTE9HKCIgICAgRmFpbGluZyBiZWNhdXNlIHRoZSBjb21waWxh
dGlvbiBtb2RlIGlzIHVubGlua2VkIERGRy5cbiIpOworICAgICAgICByZXR1cm4gVUlOVF9NQVg7
CisgICAgfQorCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLmZ1
bmN0aW9uRXhlY3V0YWJsZSgpOwogICAgIGlmICghZXhlY3V0YWJsZSkgewogICAgICAgICBWRVJC
T1NFX0xPRygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmdW5jdGlvbiBleGVjdXRh
YmxlLlxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxB
cnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggMjNmZDQ1
NDdjNTliOTJhOTM0Mzc0MmE1ODRmN2RkY2RmMjkxZjllYi4uNGUwM2FhM2VkZTQyODllMDhjMjU4
ODgyOTA4YjU0YjYzZjM5YWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3Iu
aApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVT
aXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZwogcHVibGljOgogICAg
IENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcigKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IFBfSklUT3BlcmF0aW9uX0dTdFpCIGZ1bmN0aW9uLAotICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIGNvbnRpZ3VvdXNTdHJ1Y3R1cmUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdG9y
YWdlU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCisgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50IGdsb2JhbE9i
amVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJlLCBSZWdpc3RlcmVk
U3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBz
dG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KQogICAgICAgICAsIG1fY29udGlndW91c1N0cnVjdHVyZShjb250aWd1b3VzU3RydWN0dXJlKQpA
QCAtMTE1LDcgKzExNSw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNp
emVTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKdW1waW5nCiAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmU7CiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBtX2FycmF5U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZTsKICAgICBHUFJSZWcgbV9yZXN1
bHRHUFI7Ci0gICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0Owor
ICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQ
UlJlZyBtX3NpemVHUFI7CiAgICAgR1BSUmVnIG1fc3RvcmFnZUdQUjsKICAgICBWZWN0b3I8U2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbiwgMj4gbV9wbGFuczsKQEAgLTEyNSw3ICsxMjUsNyBAQCBjbGFz
cyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93
UGF0aEdlbmVyYXRvciBmaW5hbAogcHVibGljOgogICAgIENhbGxBcnJheUFsbG9jYXRvcldpdGhW
YXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgUF9KSVRP
cGVyYXRpb25fR1N0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0ciBnbG9iYWxPYmplY3QsIEdQUlJlZyBzdHJ1Y3R1cmVHUFIs
IEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgZ2xvYmFsT2JqZWN0LCBHUFJSZWcg
c3RydWN0dXJlR1BSLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCiAgICAgICAg
IDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJv
bSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9yZXN1
bHRHUFIocmVzdWx0R1BSKQpAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZp
bmFsCiAKICAgICBQX0pJVE9wZXJhdGlvbl9HU3RaQiBtX2Z1bmN0aW9uOwogICAgIEdQUlJlZyBt
X3Jlc3VsdEdQUjsKLSAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgbV9nbG9iYWxPYmpl
Y3Q7CisgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgbV9nbG9iYWxPYmplY3Q7CiAg
ICAgR1BSUmVnIG1fc3RydWN0dXJlR1BSOwogICAgIEdQUlJlZyBtX3NpemVHUFI7CiAgICAgR1BS
UmVnIG1fc3RvcmFnZUdQUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKaW5k
ZXggMTQ0Y2MxOTI4NzNkMDc2ZTFlZmZiZjg0ZGRlNmUxNjFhODVjMTc3OC4uNjNiZjRiY2VkZTE0
ZDQwODQxNTFlYmJhMGFjZTMzZTQxNmY2MGY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKQEAgLTEwNjEsNiArMTA2MSw5IEBAIHZvaWQgR3JhcGg6OmNsZWFyRmxhZ3NP
bkFsbE5vZGVzKE5vZGVGbGFncyBmbGFncykKIAogYm9vbCBHcmFwaDo6d2F0Y2hDb25kaXRpb24o
Y29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mIGtleSkKIHsKKyAgICBpZiAobV9wbGFuLmlz
VW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFrZXkuaXNXYXRj
aGFibGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDgxLDYgKzEwODQsOSBAQCBi
b29sIEdyYXBoOjp3YXRjaENvbmRpdGlvbihjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYg
a2V5KQogCiBib29sIEdyYXBoOjp3YXRjaENvbmRpdGlvbnMoY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQmIGtleXMpCiB7CisgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICgha2V5cy5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMTA5OCw2ICsxMTA0LDkgQEAgYm9vbCBHcmFwaDo6aXNTYWZlVG9M
b2FkKEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAKIGJvb2wgR3JhcGg6
OndhdGNoR2xvYmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlcikKIHsKKyAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50
aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEg
V2F0Y2hwb2ludFNldCwgYW5kIGl0IGlzIGFscmVhZHkgaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRo
YXQgdGhpcyBzY29wZSBvcGVyYXRpb24gbXVzdCBiZSBjaGFuZ2VkIGZyb20gR2xvYmFsUHJvcGVy
dHkgdG8gR2xvYmFsTGV4aWNhbFZhciwKICAgICAvLyBidXQgd2Ugc3RpbGwgaGF2ZSBzdGFsZSBt
ZXRhZGF0YSBoZXJlIHNpbmNlIHdlIGhhdmUgbm90IHlldCBleGVjdXRlZCB0aGlzIGJ5dGVjb2Rl
IG9wZXJhdGlvbiBzaW5jZSB0aGUgaW52YWxpZGF0aW9uLiBKdXN0IGVtaXR0aW5nIEZvcmNlT1NS
RXhpdCB0byB1cGRhdGUgdGhlCkBAIC0xMjY3LDYgKzEyNzYsOSBAQCB1bnNpZ25lZCBHcmFwaDo6
cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhpdCgpCiBKU1ZhbHVlIEdyYXBo
Ojp0cnlHZXRDb25zdGFudFByb3BlcnR5KAogICAgIEpTVmFsdWUgYmFzZSwgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7
CisgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CisKICAgICBpZiAoIWJhc2UgfHwgIWJhc2UuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAKQEAgLTEzNTIsNiArMTM2NCw5IEBAIEFic3RyYWN0VmFsdWUgR3JhcGg6
OmluZmVycmVkVmFsdWVGb3JQcm9wZXJ0eSgKIEpTVmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50
Q2xvc3VyZVZhcihKU1ZhbHVlIGJhc2UsIFNjb3BlT2Zmc2V0IG9mZnNldCkKIHsKICAgICAvLyBU
aGlzIGhhcyBhbiBhd2Vzb21lIGNvbmN1cnJlbmN5IHN0b3J5LiBTZWUgY29tbWVudCBmb3IgR2V0
R2xvYmFsVmFyIGluIEJ5dGVDb2RlUGFyc2VyLgorCisgICAgaWYgKG1fcGxhbi5pc1VubGlua2Vk
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgCiAgICAgaWYgKCFiYXNlKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMTQwMiw2ICsxNDE3LDggQEAgSlNWYWx1ZSBHcmFw
aDo6dHJ5R2V0Q29uc3RhbnRDbG9zdXJlVmFyKE5vZGUqIG5vZGUsIFNjb3BlT2Zmc2V0IG9mZnNl
dCkKIAogSlNBcnJheUJ1ZmZlclZpZXcqIEdyYXBoOjp0cnlHZXRGb2xkYWJsZVZpZXcoSlNWYWx1
ZSB2YWx1ZSkKIHsKKyAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
SlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3
Kj4obV92bSwgdmFsdWUpOwpAQCAtMTczMCw2ICsxNzQ3LDkgQEAgTWV0aG9kT2ZHZXR0aW5nQVZh
bHVlUHJvZmlsZSBHcmFwaDo6bWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZvcihOb2RlKiBj
dXJyZW4KIAogYm9vbCBHcmFwaDo6Z2V0UmVnRXhwUHJvdG90eXBlUHJvcGVydHkoSlNPYmplY3Qq
IHJlZ0V4cFByb3RvdHlwZSwgU3RydWN0dXJlKiByZWdFeHBQcm90b3R5cGVTdHJ1Y3R1cmUsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEpTVmFsdWUmIHJldHVybkpTVmFsdWUpCiB7CisgICAgaWYg
KG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCA9IHJlZ0V4cFByb3RvdHlwZVN0cnVjdHVyZS0+Z2V0Q29uY3VycmVu
dGx5KHVpZCk7CiAgICAgaWYgKCFpc1ZhbGlkT2Zmc2V0KG9mZnNldCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE3NzcsNiArMTc5Nyw5IEBAIGJvb2wgR3JhcGg6OmlzU3RyaW5nUHJvdG90
eXBlTWV0aG9kU2FuZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBVbmlxdWVkU3RyCiAK
IGJvb2wgR3JhcGg6OmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNjZXNzKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4pCiB7CisgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIGlmIChoYXNFeGl0U2l0ZShjb2RlT3JpZ2luLCBCYWRDYWNo
ZSkgfHwgaGFzRXhpdFNpdGUoY29kZU9yaWdpbiwgQmFkQ29uc3RhbnRDYWNoZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTgyOSw2ICsxODUyLDkgQEAgYm9vbCBHcmFwaDo6Y2FuRG9G
YXN0U3ByZWFkKE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0VmFsdWUmIHZhbHVlKQogICAgIC8v
IFRoZSBwYXJhbWV0ZXIgJ3ZhbHVlJyBpcyB0aGUgQWJzdHJhY3RWYWx1ZSBmb3IgY2hpbGQxICh0
aGUgdGhpbmcgYmVpbmcgc3ByZWFkKS4KICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTcHJlYWQp
OwogCisgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gQXJyYXlVc2UpIHsKICAgICAg
ICAgLy8gTm90ZTogd2Ugb25seSBzcGVjdWxhdGUgb24gQXJyYXlVc2Ugd2hlbiB3ZSd2ZSBzZXQg
dXAgdGhlIG5lY2Vzc2FyeSB3YXRjaHBvaW50cwogICAgICAgICAvLyB0byBwcm92ZSB0aGF0IHRo
ZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgbm9uLW9ic2VydmFibGUgc3RhcnRpbmcgZnJvbSBBcnJh
eVByb3RvdHlwZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCBmYjkwMDQx
YzVhYzBmODUwZDgxNTA5OTg1MmFiMjIwOTI2ODA0OGI1Li5kMGZhNzZiZjBjMDdlMWFhYzU4OGJi
MDU4MmJkYzllMmZkMzUzN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBA
IC00NzYsMTkgKzQ3Niw2IEBAIGNsYXNzIEdyYXBoIGZpbmFsIDogcHVibGljIHZpcnR1YWwgU2Nh
bm5hYmxlIHsKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU09iamVjdCo+KG9iamVjdC0+bWV0aG9k
VGFibGUobV92bSktPnRvVGhpcyhvYmplY3QsIG9iamVjdCwgRUNNQU1vZGU6OnNsb3BweSgpKSk7
CiAgICAgfQogICAgIAotICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGVGb3IoSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCi0gICAgewotICAgICAgICBpZiAoIWlubGluZUNh
bGxGcmFtZSkKLSAgICAgICAgICAgIHJldHVybiBtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgfQotICAgIAotICAgIFNjcmlwdEV4ZWN1
dGFibGUqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBleGVjdXRhYmxlRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KCkpOwotICAgIH0KLSAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKElu
bGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFpbmxp
bmVDYWxsRnJhbWUpCkBAIC01MDMsNiArNDkwLDggQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJs
aWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVm
aW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikK
ICAgICB7CisgICAgICAgIGlmIChtX3BsYW4uaXNVbmxpbmtlZCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pLT5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5pc1N0aWxsVmFsaWQoKTsKICAgICB9
CiAgICAgCkBAIC03OTUsMTIgKzc4NCwxNyBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2
aXJ0dWFsIFNjYW5uYWJsZSB7CiAKICAgICBib29sIGlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdh
dGNocG9pbnQoTm9kZSogbm9kZSkKICAgICB7CisgICAgICAgIGlmIChtX3BsYW4uaXNVbmxpbmtl
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAg
ICAgICAgIHJldHVybiB3YXRjaHBvaW50cygpLmlzV2F0Y2hlZChnbG9iYWxPYmplY3QtPmhhdmlu
Z0FCYWRUaW1lV2F0Y2hwb2ludCgpKTsKICAgICB9CiAKICAgICBib29sIGlzV2F0Y2hpbmdHbG9i
YWxPYmplY3RXYXRjaHBvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElubGluZVdh
dGNocG9pbnRTZXQmIHNldCkKICAgICB7CisgICAgICAgIGlmIChtX3BsYW4uaXNVbmxpbmtlZCgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgICAgIGlmICh3YXRjaHBvaW50cygp
LmlzV2F0Y2hlZChzZXQpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTgxOSw2ICs4
MTMsOSBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAK
ICAgICBib29sIGlzV2F0Y2hpbmdBcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KE5vZGUq
IG5vZGUpCiAgICAgeworICAgICAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIElubGlu
ZVdhdGNocG9pbnRTZXQmIHNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludFNldCgpOwogICAgICAgICByZXR1cm4gaXNXYXRjaGluZ0dsb2JhbE9iamVjdFdh
dGNocG9pbnQoZ2xvYmFsT2JqZWN0LCBzZXQpOwpAQCAtODI2LDYgKzgyMyw5IEBAIGNsYXNzIEdy
YXBoIGZpbmFsIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAgIGJvb2wgaXNXYXRj
aGluZ051bWJlclRvU3RyaW5nV2F0Y2hwb2ludChOb2RlKiBub2RlKQogICAgIHsKKyAgICAgICAg
aWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXQgPSBn
bG9iYWxPYmplY3QtPm51bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldCgpOwogICAgICAgICByZXR1
cm4gaXNXYXRjaGluZ0dsb2JhbE9iamVjdFdhdGNocG9pbnQoZ2xvYmFsT2JqZWN0LCBzZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCA0NTNjM2RjZGFlZDFmM2Mz
YzJhZjE0YjgxMmI4YTIzYTU2ZDExY2EyLi40MDU4N2U5YWQ1ZWQ5MDUxZDFjMjEwYmNhMWRmZWI4
YmI1ZWQxMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApAQCAtNDks
NiArNDksMjMgQEAgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJVENvbXBpbGVyOwogCitjbGFz
cyBERkdKSVREYXRhIGZpbmFsIDogcHVibGljIFRyYWlsaW5nQXJyYXk8REZHSklURGF0YSwgdm9p
ZCo+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBUcmFpbGluZ0Fy
cmF5PERGR0pJVERhdGEsIHZvaWQqPjsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8REZH
SklURGF0YT4gY3JlYXRlKHVuc2lnbmVkIHBvb2xTaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiB7IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhC
YXNlOjphbGxvY2F0aW9uU2l6ZShwb29sU2l6ZSkpKSBERkdKSVREYXRhKHBvb2xTaXplKSB9Owor
ICAgIH0KKworICAgIGV4cGxpY2l0IERGR0pJVERhdGEodW5zaWduZWQgc2l6ZSkKKyAgICAgICAg
OiBCYXNlKHNpemUpCisgICAgeworICAgIH0KK307CisKIGNsYXNzIEpJVENvZGUgZmluYWwgOiBw
dWJsaWMgRGlyZWN0SklUQ29kZSB7CiBwdWJsaWM6CiAgICAgSklUQ29kZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA0NWYzNDNmMGRkMDU5
MDdmMDk5MTdkYjAzYTFmNDE0ZGQ2ODAxNGNiLi5mZGI0ZWY4Mzk5YTg2YWI0OGFlMjJhY2Q1ZWEw
ZWUwMzg2ZTQ0OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGh1bmtH
ZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTEwLDEzICsxMTEsMjQgQEAgdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2lsbCBi
ZSBkZXBlbmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9yIHRo
aXMgaW4KICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5nIHRv
IGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAg
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKTsKKyAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2Rl
KQorICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSSW5mbzo6cmVn
VDAsIG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpOworI2lmIEFTU0VSVF9FTkFCTEVECisg
ICAgcHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0
VHlwZSgpKSk7CisgICAgfSk7CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQogewogICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsK
ICAgICBlbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOyAgICAKKyNpZiBVU0UoSlNW
QUxVRTY0KQorICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jaywgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIGxvYWRQdHIoQWRk
cmVzcyhHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlciwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERh
dGEoKSksIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyNlbmRpZgogfQogCiB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRW50cnlFeGVjdXRpb25GbGFnKCkKQEAgLTM0MCw3ICszNTIsOCBA
QCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGlu
dDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKIAotICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2Rl
QmxvY2spOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jaywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBtX3NwZWN1bGF0aXZlLT5j
YWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93RXJyb3IsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAKICAgICAvLyBH
ZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3NwZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdl
bmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxkZXIpOwpAQCAtNDEzLDcgKzQyNiw4IEBA
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgaWYgKG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNf
Y2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAKLSAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3Is
IG1fY29kZUJsb2NrKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgbV9zcGVjdWxh
dGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJh
dGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAg
IAogICAgIC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGludG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBj
aGVjayB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzCiAgICAgLy8gaGF2ZSBiZWVuIHBh
c3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhlIGZhc3QgZW50cnkgcG9pbnQgd2hlcmUg
d2UgY2FuIHN0YXRpY2FsbHkKQEAgLTQzMiw3ICs0NDYsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpj
b21waWxlRnVuY3Rpb24oKQogICAgICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4o
Qnl0ZWNvZGVJbmRleCgwKSkpOwogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0
aENhbGwpCiAgICAgICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQz
Ml90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rl
cik7Ci0gICAgICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9u
Q29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpy
ZWdUMCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJv
bGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlv
bkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGlmIChtYXhG
cmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1t
MzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikubGlu
a1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKQEAgLTY0Myw2ICs2NTksMzYgQEAgdm9pZCBKSVRD
b21waWxlcjo6bWFrZUNhdGNoT1NSRW50cnlCdWZmZXIoKQogICAgIH0KIH0KIAordm9pZCBKSVRD
b21waWxlcjo6bG9hZFVubGlua2VkQ29uc3RhbnQoVW5saW5rZWRDb25zdGFudCBjb25zdGFudCwg
R1BSUmVnIGRlc3QpCit7CisgICAgY29uc3RhbnQubWF0ZXJpYWxpemUoKnRoaXMsIGRlc3QpOwor
fQorCit2b2lkIEpJVENvbXBpbGVyOjpzdG9yZVVubGlua2VkQ29uc3RhbnQoVW5saW5rZWRDb25z
dGFudCBjb25zdGFudCwgQWRkcmVzcyBkZXN0KQoreworICAgIGNvbnN0YW50LnBva2UoKnRoaXMs
IGRlc3QpOworfQorCitKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25z
dGFudChHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2VsbCkKKyAgICA6IG1faW5kZXgoZ3JhcGgubV9w
bGFuLmFkZFVubGlua2VkQ29uc3RhbnQoU3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKGdyYXBoLCBjZWxsKSkpCit7Cit9CisKK0pJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50OjpVbmxpbmtlZENvbnN0YW50KEdyYXBoJiBncmFwaCwgdm9pZCogcG9pbnRlciwgTm9u
Q2VsbFRhZykKKyAgICA6IG1faW5kZXgoZ3JhcGgubV9wbGFuLmFkZFVubGlua2VkQ29uc3RhbnQo
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKSkKK3sKK30KKwordm9pZCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6bWF0ZXJpYWxpemUoQ0NhbGxIZWxwZXJzJiBqaXQs
IEdQUlJlZyByZXN1bHRHUFIpCit7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyLCBERkdKSVREYXRhOjpvZmZzZXRPZkRhdGEo
KSArIHNpemVvZih2b2lkKikgKiBtX2luZGV4KSwgcmVzdWx0R1BSKTsKK30KKwordm9pZCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6cG9rZShDQ2FsbEhlbHBlcnMmIGppdCwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgaml0LnRyYW5zZmVyUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlciwgREZHSklURGF0YTo6b2Zm
c2V0T2ZEYXRhKCkgKyBzaXplb2Yodm9pZCopICogbV9pbmRleCksIGFkZHJlc3MpOworfQorCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA5ODQyNzY4Mzhk
M2U4OTBjNTExMzZlMGEzZDE4ZWUwYjk3MjQ2YzE3Li42M2YyODY0MGIxOTZmZjBhNWUxMTAxYWZk
ZjQ3MjcyN2UwNGU0NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCkBAIC0yNTUsMTQgKzI1NSw2IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIEND
YWxsSGVscGVycyB7CiAgICAgICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHN0cnVjdHVyZVNldFtp
XSk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgSnVtcCBicmFu
Y2hXZWFrUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBKU0NlbGwqIHdlYWtQ
dHIpCi0gICAgewotICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaFB0cihjb25kLCBsZWZ0LCBU
cnVzdGVkSW1tUHRyKHdlYWtQdHIpKTsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFrUHRy
KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIFQgbGVmdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAgIHsKQEAg
LTMxMiw2ICszMDQsMzUgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJz
IHsKICAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExpc3Q6
OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgfQogCisgICAgY2xhc3MgVW5saW5rZWRD
b25zdGFudCBmaW5hbCA6IHB1YmxpYyBDQ2FsbEhlbHBlcnM6OkNvbnN0YW50TWF0ZXJpYWxpemVy
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gTm9uQ2VsbFRhZyB7IE5vbkNlbGwgfTsKKyAg
ICAgICAgVW5saW5rZWRDb25zdGFudChHcmFwaCYsIEpTQ2VsbCopOworCisgICAgICAgIHZvaWQg
bWF0ZXJpYWxpemUoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnKTsKKyAgICAgICAgdm9pZCBwb2tlKEND
YWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CisKKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIFVubGlua2VkQ29uc3RhbnQgbm9uQ2VsbFB0cihH
cmFwaCYgZ3JhcGgsIFQqIHBvaW50ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19h
c3NlcnQoIXN0ZDo6aXNfYmFzZV9vZl92PEpTQ2VsbCwgVD4pOworICAgICAgICAgICAgcmV0dXJu
IFVubGlua2VkQ29uc3RhbnQoZ3JhcGgsIHBvaW50ZXIsIE5vbkNlbGwpOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIFVubGlua2VkQ29uc3RhbnQgc3RydWN0dXJlKEdyYXBoJiBncmFwaCwg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBVbmxpbmtlZENvbnN0YW50KGdyYXBoLCBzdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICB9
CisKKyAgICBwcml2YXRlOgorICAgICAgICBVbmxpbmtlZENvbnN0YW50KEdyYXBoJiwgdm9pZCos
IE5vbkNlbGxUYWcpOworCisgICAgICAgIHVuc2lnbmVkIG1faW5kZXggeyAwIH07CisgICAgfTsK
KworICAgIHZvaWQgbG9hZFVubGlua2VkQ29uc3RhbnQoVW5saW5rZWRDb25zdGFudCwgR1BSUmVn
KTsKKyAgICB2b2lkIHN0b3JlVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0YW50LCBBZGRy
ZXNzKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRl
cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmlu
YWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNw
cAppbmRleCBkNjM2MTMyOTdjMjdmMzg4MTU4NmJjYWE3N2UzYWNjZmY0ZTI2NGM3Li41ZWNlNDU2
NzU1MGRhMzE2YjQyNjkzYWE1NWJmNjZlYWU3NzJlNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIGJvb2wgSklU
RmluYWxpemVyOjpmaW5hbGl6ZSgpCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX3BsYW4u
Y29kZUJsb2NrKCk7CiAKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNvcHlS
ZWYoKSk7CisgICAgY29kZUJsb2NrLT5zZXRERkdKSVREYXRhKG1fcGxhbi5maW5hbGl6ZUpJVERh
dGEoKSk7CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2ppdENvZGUtPm9wdGltaXplQWZ0
ZXJXYXJtVXAoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmlu
ZGV4IGYwZWY5YTg5NzEyNzQ0ODVmNDQzYzU0NmE3NDY5ZWI3OGIyMThkNmQuLmFkMWM2ODI3OTBi
NmI5ZjU0NjlmNTNiOTNjMjE4Njc3ZWQ0YWU0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcApAQCAtMTEyLDYgKzExMiw4IEBAIFByb2ZpbGVyOjpDb21waWxhdGlvbktpbmQg
cHJvZmlsZXJDb21waWxhdGlvbktpbmRGb3JNb2RlKEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlCiAg
ICAgICAgIHJldHVybiBQcm9maWxlcjo6REZHOwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2Rl
OjpERkc6CiAgICAgICAgIHJldHVybiBQcm9maWxlcjo6REZHOworICAgIGNhc2UgSklUQ29tcGls
YXRpb25Nb2RlOjpVbmxpbmtlZERGRzoKKyAgICAgICAgcmV0dXJuIFByb2ZpbGVyOjpVbmxpbmtl
ZERGRzsKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6RlRMOgogICAgICAgICByZXR1cm4g
UHJvZmlsZXI6OkZUTDsKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6RlRMRm9yT1NSRW50
cnk6CkBAIC0zMTUsNyArMzE3LDggQEAgUGxhbjo6Q29tcGlsYXRpb25QYXRoIFBsYW46OmNvbXBp
bGVJblRocmVhZEltcGwoKQogICAgIH0KIAogICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0gICAgY2Fz
ZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzogeworICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2Rl
OjpERkc6CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OlVubGlua2VkREZHOiB7CiAgICAg
ICAgIGRmZy5tX2ZpeHBvaW50U3RhdGUgPSBGaXhwb2ludENvbnZlcmdlZDsKIAogICAgICAgICBS
VU5fUEhBU0UocGVyZm9ybVRpZXJVcENoZWNrSW5qZWN0aW9uKTsKQEAgLTY3OCw2ICs2ODEsMjEg
QEAgdm9pZCBQbGFuOjpjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpCiAgICAgfQog
fQogCit1bnNpZ25lZCBQbGFuOjphZGRVbmxpbmtlZENvbnN0YW50KENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0ciBwdHIpCit7CisgICAgcmV0dXJuIG1fY29uc3RhbnRQb29sLmFkZChiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHB0ci5hc0ludHB0cigpKSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKS5pdGVy
YXRvci0+dmFsdWU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBQbGFuOjpmaW5h
bGl6ZUpJVERhdGEoKQoreworICAgIGlmIChtX2NvbnN0YW50UG9vbC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gaml0RGF0YSA9IERGR0pJVERhdGE6OmNyZWF0
ZShtX2NvbnN0YW50UG9vbC5zaXplKCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29uc3Rh
bnRQb29sKQorICAgICAgICBqaXREYXRhLT5hdChwYWlyLnZhbHVlKSA9IHBhaXIua2V5OworICAg
IHJldHVybiBqaXREYXRhOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXgg
NDA4MDMyOTZhNmRiZTBlNDdlYTM4MzNkYmJmMjRhNmMyOTAzYjZlMi4uZGFlZTFlMDcxODc0NjJk
ZWQzNGJhNGY4MGY3MGQwNGM3ZmMxMTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ29kZUJsb2NrOwogbmFtZXNwYWNlIERGRyB7CiAK
IGNsYXNzIFRocmVhZERhdGE7CitjbGFzcyBERkdKSVREYXRhOwogCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAKQEAgLTEwMSw2ICsxMDIsOSBAQCBjbGFzcyBQbGFuIGZpbmFsIDogcHVibGljIEpJVFBs
YW4gewogICAgIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjayogY2FsbGJhY2soKSBjb25zdCB7
IHJldHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDYWxsYmFjayhSZWY8RGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKTsgfQogCisgICAgdW5zaWduZWQgYWRkVW5saW5rZWRDb25zdGFudChDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRh
PiBmaW5hbGl6ZUpJVERhdGEoKTsKKwogcHJpdmF0ZToKICAgICBDb21waWxhdGlvblBhdGggY29t
cGlsZUluVGhyZWFkSW1wbCgpIG92ZXJyaWRlOwogICAgIApAQCAtMTM0LDYgKzEzOCw3IEBAIGNs
YXNzIFBsYW4gZmluYWwgOiBwdWJsaWMgSklUUGxhbiB7CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5k
ZXg+IG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBSZWZQdHI8RGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIEhhc2hNYXA8dm9pZCosIHVuc2ln
bmVkPiBtX2NvbnN0YW50UG9vbDsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFs
U2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0
cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCBmYWJjZTAxODJkZTkwMDI1M2Yw
ZGYzZjBiZjJlOTMwMTg3YzBmZjE0Li42NDNiZDI1YzA5YzJhMzIwMjI0NTdhMTVkNjE2OTQ2MTkx
MTIzYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJp
bmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIFNhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEp1bXBpbmdTbG93UGF0aEdl
bmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4gewogcHVibGljOgogICAgIFNhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIGdsb2JhbE9iamVjdCwgR1BSUmVnIGJhc2VSZWcs
IEdQUlJlZyBwcm9wZXJ0eVJlZykKKyAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXAm
IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50IGdsb2JhbE9iamVjdCwgR1BSUmVnIGJhc2VSZWcsIEdQ
UlJlZyBwcm9wZXJ0eVJlZykKICAgICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFj
cm9Bc3NlbWJsZXI6Okp1bXA+KGZyb20sIGppdCkKICAgICAgICAgLCBtX3Jlc3VsdFJlZ3MocmVz
dWx0UmVncykKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCkBAIC03OSw3
ICs3OSw3IEBAIGNsYXNzIFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvCiAgICAgfQogCiAgICAgSlNWYWx1ZVJl
Z3MgbV9yZXN1bHRSZWdzOwotICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBtX2dsb2Jh
bE9iamVjdDsKKyAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCBtX2dsb2JhbE9iamVj
dDsKICAgICBHUFJSZWcgbV9iYXNlUmVnOwogICAgIEdQUlJlZyBtX3Byb3BlcnR5UmVnOwogICAg
IFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzNjBlMTgxODNl
Y2JhMWUwY2MwNWQ3NmM3MmNkZjEyMTllY2NiMTZkLi45NjA5MTk3ODMwMWQ0NmExMWZlNWMzYzhi
YTQ4OTA1MzAxZTdjMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJM
TEludFRodW5rcy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlZ0V4
cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlR5cGVQ
cm9maWxlckxvZy5oIgpAQCAtMjA1LDExICsyMDYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0R2V0Q2FsbGVlKENvZGVPcmlnaW4gb3JpZ2luLCBHUFJSZWcgY2FsbGVlR1BSKQogICAgICAg
ICAgICAgbV9qaXQubG9hZFB0cigKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVz
c0ZvcihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwK
ICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50
KCkuYXNDZWxsKCkpLAotICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7Ci0gICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLCBjYWxsZWVHUFIpOwogICAgIH0g
ZWxzZQogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSksIGNhbGxlZUdQUik7CiB9CkBAIC02ODYsNyArNjg0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaWxlbnRSZWdpc3RlclNhdmVQbGFu
JiBwbGFuKQogICAgICAgICBicmVhazsKICAgICBjYXNlIFNldENlbGxDb25zdGFudDoKICAgICAg
ICAgQVNTRVJUKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKLSAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpKSwg
cGxhbi5ncHIoKSk7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHBsYW4ubm9kZSgpLT5jb25zdGFudCgpLT52
YWx1ZSgpLmFzQ2VsbCgpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRUcnVzdGVkSlNDb25zdGFudDoKQEAgLTExOTEsMjIgKzEx
ODksMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9k
ZSkKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAg
ICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VH
UFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRp
bWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxl
dGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9k
ZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQ
UiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTEyMjcs
NyArMTIyNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUq
IG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdz
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEyNzcsMjIg
KzEyNzUsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
IG5vZGUpCiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkg
ewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93
T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3Mo
YmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1Yklu
Zm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAg
ICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNs
b3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlS
ZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAg
ICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTMxNCw3ICsx
MzEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJ
bW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAg
dW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTM1MiwxMiArMTM1
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAg
ICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUs
CiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hl
Y2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVh
YmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAgICAgfQog
CiAgICAgbV9qaXQuYWRkSW5CeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTQwMiwxMiAr
MTQwMCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2Rl
KQogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGws
IEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25JbkJ5VmFsT3B0aW1pemUsCiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkSW5CeVZh
bChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTE0NTYsMTIgKzE0NTQsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGUoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSB0eXBl
KQogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlv
bigpKSwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1By
aXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwKICAg
ICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJh
dGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRp
bWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKKyAgICAgICAgICAgIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJh
bmRHUFIpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOwpAQCAtMTQ5NSw3ICsxNDkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1
c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG9iamVjdEVk
Z2UsIG9iamVjdEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdEdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RH
UFIpOwogICAgICAgICAvLyBObyBleGNlcHRpb24gY2hlY2sgaGVyZSBhcyB3ZSBkaWQgbm90IGhh
dmUgdG8gY2FsbCB0b09iamVjdCgpLgogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChvYmpl
Y3RFZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTE1MDMsNyArMTUwMSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3BlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEpTVmFsdWVSZWdzIG9iamVjdFJlZ3MgPSBvYmplY3QuanNWYWx1ZVJlZ3MoKTsKIAogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1
c2hXaXRoU2NvcGUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJl
bnRTY29wZUdQUiwgb2JqZWN0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UHVzaFdpdGhTY29wZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
Y3VycmVudFNjb3BlR1BSLCBvYmplY3RSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICB9CiAgICAgCkBAIC0xOTIyLDEyICsxOTIwLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdHJpbmdTbGljZShOb2RlKiBub2RlKQogCiAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGJpZ0NoYXJhY3RlciwgdGhpcywgb3BlcmF0aW9uU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nLCB0ZW1wR1BSLCAmdm0sIHRlbXBHUFIpKTsKIAotICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmlu
Z1N1YnN0ciwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwg
c3RhcnRJbmRleEdQUiwgdGVtcEdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1N1YnN0ciwgdGVtcEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRJbmRleEdQUiwg
dGVtcEdQUikpOwogCiAgICAgaWYgKGVuZEdQUikKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCAqZW5k
R1BSKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUs
IHRoaXMsIG9wZXJhdGlvblN0cmluZ1NsaWNlLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEdQUiwgKmVuZEdQUikpOwogICAgIGVsc2UKLSAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3Bl
cmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
dHJpbmdHUFIsIHN0YXJ0R1BSLCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChpc1JvcGUsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1NsaWNlLCB0ZW1wR1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEdQUiwgVHJ1c3RlZEltbTMyKHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOwogCiAgICAgZG9uZUNhc2VzLmxp
bmsoJm1faml0KTsKICAgICBjZWxsUmVzdWx0KHRlbXBHUFIsIG5vZGUpOwpAQCAtMTk3NCw3ICsx
OTcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJDYXNlKE5vZGUqIG5v
ZGUpCiAgICAgCiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKGxlbmd0aEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0xvd2Vy
Q2FzZSwgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBp
bmRleEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0xvd2VyQ2FzZSwgbGVuZ3Ro
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBpbmRleEdQUik7
CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtMjE5MywxMCArMjE5MSwyMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICB9CiAKICAg
ICBpZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gRm9yIGNhdGNo
IGVudHJ5IHBvaW50LCBPU1IgZW50cnkgc2V0cyBhIG5ldyBDb2RlQmxvY2sgcG9pbnRlci4KICAg
ICAgICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQuZ3Jh
cGgoKS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
ICAgICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0
TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9j
ayk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgbV9qaXQucHJvYmVEZWJ1ZyhbPV0oUHJv
YmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
dHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAg
ICAgICAgfSk7CisjZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5lbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUklu
Zm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZKSVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9
CiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwpA
QCAtMjQ3Nyw3ICsyNDg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHJh
cHMoTm9kZSogbm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhtX2pp
dC52bSgpLnRyYXBzKCkudHJhcEJpdHNBZGRyZXNzKCkpLAogICAgICAgICBUcnVzdGVkSW1tMzIo
Vk1UcmFwczo6QXN5bmNFdmVudHMpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChuZWVkVHJhcEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRpb25IYW5kbGVUcmFwcywgdW51
c2VkR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChuZWVkVHJhcEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRpb25IYW5k
bGVUcmFwcywgdW51c2VkR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAg
IG5vUmVzdWx0KG5vZGUpOwogfQogCkBAIC0yNTQyLDcgKzI1NTAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgICAgIChub2RlLT5v
cCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJh
eUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3Qp
IDoKICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKLSAgICAgICAgICAgIE5vUmVzdWx0
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVl
UmVncykpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7CiAgICAgfQogCiAgICAgbm9S
ZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTI2MTcsNyArMjYy
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbChOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/CiAgICAg
ICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9u
UHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1
dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAg
ICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZh
bERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlW
YWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCi0gICAgICAgICAgICAgICAgTm9SZXN1bHQs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVS
ZWcpKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgIH0KIAogICAgIG5v
UmVzdWx0KG1fY3VycmVudE5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0y
Njc1LDkgKzI2ODMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9k
ZSogbm9kZSkKIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJl
Y3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CisgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9u
U3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5
UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOworICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9u
UHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CiAg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgICAgICBub1Jlc3Vs
dChub2RlKTsKQEAgLTI3MzAsMTEgKzI3MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6REZHSklUKSkgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2Fs
bCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb24sCi0gICAgICAgICAgICAg
ICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFs
dWVSZWdzLCBzdHViSW5mb0dQUiwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgTm9SZXN1bHQs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBz
dHViSW5mb0dQUiwgbnVsbHB0cik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbiwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNl
UmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsK
KyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIG1faml0LmFkZFB1dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtMjgyNSw3ICsyODMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFs
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8KICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgICAgICAo
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5
b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91
bmRzTm9uU3RyaWN0KSwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZ3MpKTsKKyAgICAgICAg
ICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCB2YWx1ZVJlZ3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIG5vUmVzdWx0
KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0yOTUyLDEyICsyOTYwLDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLnJl
Z2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVy
ZSk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0
cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAotICAgICAgICAgICAgICAgIG91dE9mQm91
bmRzLCB0aGlzLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBnbG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAg
IG91dE9mQm91bmRzLCB0aGlzLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywg
dGhpcywgb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQsCi0gICAgICAgICAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVj
dCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbV9jdXJyZW50Tm9kZSk7CkBAIC0yOTgxLDcgKzI5ODks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9t
Q2hhckNvZGVVbnR5cGVkLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
b3ByUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJD
b2RlVW50eXBlZCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
clJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTMwMDEsNyArMzAwOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJpbmdzUmVn
LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwgc2NyYXRjaFJlZyk7
CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgc2NyYXRjaFJlZykpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSwgc2NyYXRj
aFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3BlcnR5UmVnKSk7CisgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
U3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgcHJvcGVydHlSZWcpKTsKICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY3VycmVu
dE5vZGUpOwogfQogCkBAIC0zOTI1LDkgKzM5MzMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
CiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KSA6CiAgICAg
ICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdE5vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KSwKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsKKyAgICAgICAgICAgIE5v
UmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHZhbHVlR1BSKSk7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAg
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVJlZyks
IEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKKyAgICAgICAgICAgIE5vUmVz
dWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVJlZyksIEpT
VmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICNlbmRpZgogICAgIH0KIApAQCAt
NDAzNSw3ICs0MDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9y
T2JqZWN0V2l0aFN0cmluZyhOb2RlKiBub2RlLCBjb25zdCBTY29wZWQKICAgICAgICAgc2lsZW50
U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CiAgICAgZWxzZQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJp
bmcsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcy
R1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3RyaW5nLCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQ
Uik7CiAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC00
MDYyLDcgKzQwNzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JP
YmplY3RXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJv
bCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJH
UFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTeW1ib2wsIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BS
KTsKICAgICBpZiAoY2FuVXNlRmx1c2ggPT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQx
MzAsMTIgKzQxMzgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVO
YW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgaWYgKEpJ
VENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICByZXR1cm4g
c2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1
YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwg
U3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0
UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCks
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCiAgICAgICAgICAgICAgICAgYmFzZSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3Vs
dC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCisgICAgICAgICAgICBy
ZXN1bHQucmVncygpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLAogICAgICAg
ICAgICAgYmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigp
KSk7CiAgICAgfTsKIApAQCAtNDIxNSw3ICs0MjIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSogbm9kZSkKICAgICAgICAgbm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1
dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0KSA6CiAgICAgICAgICAgICAobm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmlu
Z05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCksCi0gICAg
ICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVn
cyk7CisgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcy
R1BSLCBhcmczUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVz
dWx0KG5vZGUpOwpAQCAtNDIzOCw3ICs0MjQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5
VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0KQogICAgICAgICAgICAgOiAobm9kZS0+b3Ao
KSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5v
blN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCksCi0gICAgICAg
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7
CisgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BS
LCBhcmczUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0
KG5vZGUpOwpAQCAtNDI1Niw3ICs0MjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
IEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1ZhbHVlUmVncywgc3Vic2NyaXB0UmVn
cyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CkBAIC00MjgyLDcgKzQyOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtp
bmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5l
cmljIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRHZW5lcmljOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1
c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQz
MjYsMTEgKzQzMzQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVO
YW1lKE5vZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb24sCi0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZh
bHVlUmVncywgc3R1YkluZm9HUFIsIG51bGxwdHIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb24sCi0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlH
UFIpLCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKKyAgICAgICAgICAgIE5v
UmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgZ2Vu
LnN0dWJJbmZvKCksIG51bGxwdHIpOwogICAgIH0KIAogICAgIG1faml0LmFkZFB1dEJ5VmFsKGdl
biwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtNDQwMCwxMSArNDQwOCwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZv
KCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkNoZWNrUHJp
dmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BS
KSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVn
cywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFu
ZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTQ0NDgsMTEgKzQ0NTYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
SUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5k
T3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJp
dmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9CiAKICAgICBtX2ppdC5h
ZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NDg4LDcgKzQ0
OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBKU1ZhbHVlUmVnc0Zs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25QYXJzZUludEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCB2YWx1ZVJlZ3MsIHJhZGl4R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUGFyc2VJbnRHZW5lcmljLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgdmFsdWVSZWdzLCByYWRpeEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1MDEsNyArNDUwOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmcsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUdQUiwgcmFkaXhHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50U3RyaW5nLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIsIHJhZGl4R1BSKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDUxNCw3ICs0NTIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmljLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmljLCByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDUyNyw3ICs0NTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblBhcnNlSW50U3RyaW5nTm9SYWRpeCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHZhbHVlR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50
U3RyaW5nTm9SYWRpeCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHZhbHVlR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC00NTUwLDExICs0NTU4LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAg
IC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKICAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWVO
b2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uICE9IGhh
c0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewogICAgICAgICBKU1ZhbHVlUmVncyBoYXNJ
bnN0YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICAg
ICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgcmVzdWx0R1BSKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5ncHIoKSwg
VHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOworICAgICAgICBub3REZWZhdWx0
LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0
YW5jZVZhbHVlUmVncy5ncHIoKSwgcmVzdWx0R1BSKSk7CiAjZWxzZQogICAgICAgICBub3REZWZh
dWx0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoaGFzSW5zdGFuY2VWYWx1ZVJlZ3MpKTsK
LSAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1t
UHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVS
ZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0R1BSKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTQ1ODgs
MTAgKzQ1OTcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JD
ZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVS
ZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbklu
c3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVn
cyk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRp
bWl6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJ
bmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CiAgICAgfQogICAgIAogICAgIG1faml0
LmFkZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NzAxLDcgKzQ3MTAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAg
ICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIApAQCAtNDcxNiw3ICs0
NzI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5v
ZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQml0Tm90LCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZFJlZ3MpOworICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvcGVyYW5kUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00NzU2LDcgKzQ3NjUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9k
ZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93
UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRo
RnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
UmVncywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNDgyMSw3ICs0ODMwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wKE5vZGUq
IG5vZGUpCiAgICAgICAgIG1faml0Lm1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwg
cmlnaHRSZWdzKTsKICAgICB9CiAKLSAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1
bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdo
dFJlZ3MpOwogCiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CkBAIC00ODg0LDEzICs0ODkzLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogCiAgICAgICAgIHN3aXRjaCAob3Ap
IHsKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25CaXRYb3JIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25CaXRYb3JIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0T3JI
ZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQ
UiwgcmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhl
YXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00OTc0LDcgKzQ5ODMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJp
dE9wKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihzbmlw
cGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRT
bG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUwNDAsNyAr
NTA0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNo
aWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQt
PmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24oc25p
cHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93
UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTUwNjksNyArNTA3OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqIG5vZGUpCiAgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNTA5Niw3ICs1MTA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKQEAgLTUxODQsNyArNTE5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CiAgICAgICAgIC8vIEZJWE1FOiBjYWxsIGEgbW9yZSBzcGVjaWFsaXplZCBm
dW5jdGlvbgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVy
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIs
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmln
aHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTIwNSw3ICs1MjE0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKQEAgLTUyMjEsNyArNTIzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUpOwpAQCAtNTI4NCw3ICs1MjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25WYWx1ZVN1YiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZh
bHVlU3ViLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJl
Z3MsIHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUzMDUsNyArNTMxNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogICAgICAg
ICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TdWJIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTU0MTIs
OSArNTQyMSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9k
ZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGlmIChhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNo
KQotICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBj
YWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1t
UHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRS
ZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9u
KG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzKTsKKyAgICAgICAgICAgICAgICBh
ZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihub25SZXBh
dGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBpbm5lckxlZnRSZWdzLCBpbm5lclJpZ2h0UmVncyk7CiAKICAgICAgICAgICAgIHNpbGVudEZp
bGwoc2F2ZVBsYW5zKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC01
NDQzLDcgKzU0NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUq
IG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9CiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNo
aW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVu
Y3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICB9CiAK
QEAgLTU0NzYsNyArNTQ4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mQ3VzdG9tKE5vZGUqIG5vZGUpCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93Q2Fz
ZSA9IG1faml0Lmp1bXAoKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvckdQUiwgaGFz
SW5zdGFuY2VSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJ
bnN0YW5jZVJlZ3MpKTsKIAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KQEAgLTU1NzUsOSArNTU4NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUb09iamVjdE9yQ2FsbE9iamVjdENvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiBlcnJvck1lc3NhZ2UgPSBudWxscHRyOwogICAgICAgICBpZiAobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpICE9IFVJTlQzMl9NQVgpCiAgICAgICAgICAgICBlcnJvck1l
c3NhZ2UgPSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7Ci0gICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZ3MsIGVycm9yTWVzc2FnZSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub09iamVjdCwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBlcnJvck1lc3NhZ2UpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVlUmVncykpOworICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgdmFsdWVS
ZWdzKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC01NzIxLDcg
KzU3MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhBYnMoTm9kZSogbm9k
ZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQWJzLCByZXN1bHQuZnByKCksIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Bcml0aEFicywgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTU3NDUsNyArNTc1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aENsejMy
KE5vZGUqIG5vZGUpCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcg
cmVzdWx0UmVnID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aENsejMyLCByZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRo
Q2x6MzIsIHJlc3VsdFJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3Mp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVz
dWx0UmVnLCBub2RlKTsKIH0KQEAgLTU3NjksNyArNTc3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcml0aERvdWJsZVVuYXJ5T3AoTm9kZSogbm9kZSwgZG91YmxlICgqZG91Ymxl
RnVuY3RpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdC5mcHIo
KSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9
CkBAIC01ODg2LDcgKzU4OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JE
ZWMoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBh
dXRvIG9wZXJhdGlvbiA9IG5vZGUtPm9wKCkgPT0gSW5jID8gb3BlcmF0aW9uSW5jIDogb3BlcmF0
aW9uRGVjOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CiB9CkBAIC02MDI1LDkgKzYwMzQsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJ
QwogICAgICAgICAgICAgc2lsZW50U3BpbGwoc2F2ZVBsYW5zKTsKIAogICAgICAgICAgICAgaWYg
KGljR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICAg
ICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVwYXRj
aGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hp
bGRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAgIGljR2VuZXJh
dGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlv
biwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncywg
VHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihub25SZXBh
dGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBj
aGlsZFJlZ3MpOworICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CiAKICAgICAgICAgICAgIHNp
bGVudEZpbGwoc2F2ZVBsYW5zKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CkBAIC02MDQ4LDcgKzYwNTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElD
KE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQwogICAgICAgICB9
KTsKICAgICB9IGVsc2UgewogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9uUmVw
YXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgY2hpbGRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICB9CiAK
QEAgLTYxMTMsNyArNjEyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11
bChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKQEAgLTYxMzEsNyArNjE0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVmFsdWVNdWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZU11bCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02MzEzLDcgKzYz
MjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkK
ICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGl2SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBA
IC02MzMxLDcgKzYzNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYo
Tm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blZhbHVlRGl2LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJl
Z3MsIHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYs
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmln
aHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNjQxNSw3ICs2NDI0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0
Lm1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwgcmlnaHRSZWdzKTsKICAgICB9CiAK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogCiAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02NTc5LDcgKzY1ODgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhGUm91bmQoTm9kZSogbm9kZSkKICAg
ICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQXJpdGhGUm91bmQsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhGUm91bmQs
IHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIo
KSwgbm9kZSk7CiB9CkBAIC02NjA0LDcgKzY2MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVhcEJp
Z0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJp
Z2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02NjIxLDcgKzY2MzAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVl
TW9kLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywg
b3AyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzAxOCw3ICs3MDI3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJU
KG5vZGUtPm9wKCkgPT0gQXJpdGhUcnVuYyk7CiAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlv
bkFyaXRoVHJ1bmM7CiAgICAgfQotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzA1MSw3ICs3MDYwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydChOb2RlKiBub2RlKQogICAgIEpT
VmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhTcXJ0LCByZXN1bHQu
ZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUp
OwogfQpAQCAtNzE3OSw3ICs3MTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlUG93KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwpAQCAtNzE5OCw3ICs3MjA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblZhbHVlUG93LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZVBvdywg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdo
dFJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNzkzNSw3ICs3OTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAg
ICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCBsZWZ0VGVtcEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKSk7CisgICAgICAg
ICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCBsZWZ0VGVtcEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKSk7CiAg
ICAgCiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQobGVmdFRlbXBHUFIsIG5vZGUpOwogfQpAQCAt
ODA4NSw3ICs4MDk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvbXBh
cmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWwKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxs
T3BlcmF0aW9uKGNvbXBhcmVGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24oY29tcGFyZUZ1
bmN0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxlc3Nl
ZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTgxODYsNyArODE5NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTYW1lVmFsdWUoTm9kZSogbm9kZSkKIAogICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTgyNzIsNyArODI4MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVyKE5vZGUq
IG5vZGUpCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSUmVnIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihu
b2RlLT5zdG9yYWdlUG9pbnRlcigpKSwgc3RvcmFnZUdQUik7CisgICAgbV9qaXQubG9hZFVubGlu
a2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om5vbkNlbGxQdHIobV9n
cmFwaCwgbm9kZS0+c3RvcmFnZVBvaW50ZXIoKSksIHN0b3JhZ2VHUFIpOwogICAgIHN0b3JhZ2VS
ZXN1bHQoc3RvcmFnZUdQUiwgbm9kZSk7CiB9CiAKQEAgLTgzMjUsNyArODMzNCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElmUm9wZVN0cmluZ0ltcGwoc3RvcmFn
ZVJlZyksCi0gICAgICAgICAgICAgICAgdGhpcywgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHN0b3Jh
Z2VSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnKSk7CisgICAgICAgICAg
ICAgICAgdGhpcywgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHN0b3JhZ2VSZWcsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0
KCkpLCBzdG9yYWdlUmVnKTsKICAgICAgICAgYnJlYWs7CkBAIC04NDM2LDcgKzg0NDUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkRpcmVjdEFyZ3VtZW50cyhOb2Rl
KiBub2RlLCBjb25zdCBTY29wZWRMYQogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAg
ICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzLCB0
aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICBleHRyYWN0
UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywg
cHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3Mp
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsK
ICAgICB9CiAgICAgCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTg3
MDUsNyArODcxNCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNv
bW1vbihHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0CiAgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3RXaXRoS25vd25TaXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0
aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpKTsK
LSAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpKTsKKyAgICBtX2ppdC5sb2FkVW5s
aW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgp
LCBleGVjdXRhYmxlKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gx
R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9m
RXhlY3V0YWJsZU9yUmFyZURhdGEoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsK
IH0KIApAQCAtODgwMCw3ICs4ODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNl
dEZ1bmN0aW9uTmFtZShOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG5hbWVWYWx1ZVJlZ3Mg
PSBuYW1lVmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBmdW5jR1BSLCBuYW1lVmFsdWVSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblNldEZ1bmN0aW9uTmFtZSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1
bmNHUFIsIG5hbWVWYWx1ZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKQEAgLTg4MTcsNyArODgyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYXJhcmdzTGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICB1bmxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCi0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7Cisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRh
dGEtPm9mZnNldCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGxvY2soR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtODg1NCw3ICs4ODY0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5zdG9y
ZTMyKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihk
YXRhLT5tYWNoaW5lQ291bnQpKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZh
cmFyZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zm
c2V0KCksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTG9hZFZhcmFyZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNo
aW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTg5ODUsMTAgKzg5OTUs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKiBu
b2RlKQogICAgIC8vIERvbid0IG5lZWQgYSBtZW1vcnkgYmFycmllcnMgc2luY2Ugd2UganVzdCBm
YXN0LWNyZWF0ZWQgdGhlIGFjdGl2YXRpb24sIHNvIHRoZQogICAgIC8vIGFjdGl2YXRpb24gbXVz
dCBiZSB5b3VuZy4KICAgICBtX2ppdC5zdG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSkpOwotICAgIG1faml0LnN0
b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLAotICAg
ICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTTGV4aWNhbEVudmlyb25tZW50
OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpKTsKLSAgICAgICAgCisgICAgbV9qaXQuc3RvcmVVbmxp
bmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUt
PmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNMZXhpY2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mU3ltYm9sVGFibGUoKSkpOworCiAgICAgLy8g
TXVzdCBpbml0aWFsaXplIGFsbCBtZW1iZXJzIHRvIHVuZGVmaW5lZCBvciB0aGUgVERaIGVtcHR5
IHZhbHVlLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS0+c2NvcGVTaXplKCk7
ICsraSkgewogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZSgKQEAgLTkxMTUsMTIgKzkx
MjMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRz
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCiAg
ICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkudmlydHVh
bFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCksIGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAg
ICAgICAgICAgICAgc2NyYXRjaDFHUFIpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5j
b25zdGFudCgpLmFzQ2VsbCgpKSwgc2NyYXRjaDFHUFIpOwogICAgIH0gZWxzZQogICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSksIHNjcmF0Y2gxR1BSKTsKIApAQCAtOTM2MCw3ICs5MzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNyZWF0ZVJlc3QoTm9kZSogbm9kZSkKIAogICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlUmVzdCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRzU3RhcnRHUFIsIEltbTMyKG5vZGUtPm51
bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkpLCBhcnJheUxlbmd0aEdQUik7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25DcmVhdGVSZXN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmd1bWVudHNTdGFydEdQUiwgSW1tMzIobm9kZS0+bnVtYmVyT2ZBcmd1bWVu
dHNUb1NraXAoKSksIGFycmF5TGVuZ3RoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtOTQ1NCw3ICs5NDU4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25TcHJlYWRGYXN0QXJyYXksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50KSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCkpOwogCiAgICAgICAgIGRv
bmUubGluaygmbV9qaXQpOwogICAgICAgICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0oKSk7CkBAIC05
NDY0LDcgKzk0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJndW1lbnQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNw
cmVhZEZhc3RBcnJheSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJndW1lbnQpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKQEAgLTk0
NzMsNyArOTQ3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSog
bm9kZSkKIAogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU3ByZWFkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJndW1lbnQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVh
ZEdlbmVyaWMsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3Vt
ZW50KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH0KQEAgLTk2MTAsNyArOTYxNCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdBcnJheShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICBvcGVy
YXRpb25OZXdBcnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBnbG9iYWxPYmplY3QpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5v
ZGUtPmluZGV4aW5nVHlwZSgpKSksCisgICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkp
KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIHNpemVfdChub2RlLT5udW1D
aGlsZHJlbigpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtOTc2OSw3ICs5
NzczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZChO
b2RlKiBub2RlKQogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdBcnJheVdpdGhTcHJlYWRTbG93LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGJ1ZmZlciwgbm9kZS0+bnVtQ2hpbGRy
ZW4oKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTcHJlYWRTbG93
LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIGJ1ZmZlciwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTk5NDks
NyArOTk1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUq
IG5vZGUpCiAgICAgICAgIH0KIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5p
cXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNs
b3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
TmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBnbG9iYWxPYmplY3QpLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRH
UFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBn
bG9iYWxPYmplY3QpLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKICAg
ICB9CiAKICAgICBHUFJUZW1wb3JhcnkgdGVtcDQodGhpcyk7CkBAIC0xMDE2OCw3ICsxMDE3Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4T2YoTm9kZSogbm9kZSkK
IAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJyYXlJbmRleE9mU3RyaW5nLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVtZW50R1BSLCBpbmRleEdQUik7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mU3RyaW5nLCBsZW5ndGhHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVtZW50R1BS
LCBpbmRleEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
c3RyaWN0SW50MzJSZXN1bHQobGVuZ3RoR1BSLCBub2RlKTsKQEAgLTEwMTgzLDExICsxMDE4Nywx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlN
b2RlKCkudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVEb3VibGUsIGxlbmd0aEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRS
ZWdzLCBpbmRleEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5
SW5kZXhPZlZhbHVlRG91YmxlLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICBjYXNlIEFycmF5
OjpDb250aWd1b3VzOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUlu
ZGV4T2ZWYWx1ZUludDMyT3JDb250aWd1b3VzLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JD
b250aWd1b3VzLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9y
YWdlR1BSLCBzZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTAyNTYsNyArMTAyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihzdG9yYWdl
TGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZ3MsIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgs
IHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHZhbHVlUmVncywgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMDIs
NyArMTAzMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1Q
dHIoc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVy
KCkpKSk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0
Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0z
MihlbGVtZW50Q291bnQpKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BS
LCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAg
ICAgICAgIHN0b3JhZ2UudXNlKCk7CkBAIC0xMDMyNyw3ICsxMDMzMSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0
LmJveEludDMyKHN0b3JhZ2VMZW5ndGhHUFIsIHJlc3VsdFJlZ3MpOwogCiAgICAgICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZSwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHZhbHVlRlBSLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUsIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUZQUiwgYmFzZUdQ
UikpOwogCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTAzNzEsNyArMTAzNzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUq
PihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpKSk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQ
dXNoRG91YmxlTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CisgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMs
IG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZU11bHRpcGxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxl
bWVudENvdW50KSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHN0b3JhZ2UudXNl
KCk7CkBAIC0xMDQwNCw3ICsxMDQwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VM
ZW5ndGhHUFIsIHJlc3VsdFJlZ3MpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bkFycmF5UHVzaCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVl
UmVncywgYmFzZUdQUikpOworICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgdmFsdWVSZWdzLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQ0OCw3
ICsxMDQ1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSog
bm9kZSkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1QdHIo
c3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkp
KSk7CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICBzbG93UGF0
aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwg
VHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCht
X2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVz
dGVkSW1tMzIoZWxlbWVudENvdW50KSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAg
IHN0b3JhZ2UudXNlKCk7CkBAIC0xMDU4OSw3ICsxMDU5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJc0NvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklzQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Jc0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KIApAQCAtMTA2NjgsNyArMTA2NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2hlY2tJc0NvbnN0YW50KE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZENvbnN0YW50VmFsdWUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3By
KCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90
RXF1YWwsIGNlbGwuZ3ByKCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSkpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZENvbnN0YW50VmFsdWUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGNlbGwuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVCghbm9kZS0+Y29uc3RhbnQoKS0+dmFsdWUoKS5pc0NlbGwoKSB8fCAhbm9k
ZS0+Y29uc3RhbnQoKS0+dmFsdWUoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTA5MzksMTMgKzEwOTQzLDEzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiAgICAgdW5zaWduZWQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOwog
ICAgIHN3aXRjaCAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICBjYXNlIDE6Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUD4o
ZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgcmVnc1swXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnBy
ZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0
KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVy
cHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVz
dWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVn
c1sxXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJh
dGlvbl9HUFA+KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0pOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2Fz
dDxKX0pJVE9wZXJhdGlvbl9HUFBQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVz
dWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdLCByZWdzWzFdLCBy
ZWdzWzJdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3Bl
cmF0aW9uX0dQUFA+KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0p
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMTA5NjksOSArMTA5NzMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCi0gICAgICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSklQPihUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXJV
SUQobm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlciksIGdldHRlci5l
eGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpf
SklUT3BlcmF0aW9uX0dKSVA+KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0
dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyKSwgZ2V0dGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9w
ZXJhdGlvbl9HSkk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgp
LT5pZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxK
X0pJVE9wZXJhdGlvbl9HSkk+KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0
dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyKSk7CiAKICAgICAgICAgbV9qaXQuc3RvcmVQdHIo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bSgpLnRvcENhbGxGcmFtZSk7CiAgICAgICAg
IG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKQEAgLTExMTEyLDEwICsxMTExNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3Ry
aW5nKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlQobm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAgICB9CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKQEAgLTExMTQyLDEyICsxMTE0NiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAg
ICAgICAgICAgc2xvd1BhdGgyLmxpbmsoJm1faml0KTsKICAgICAgICAgfQogICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBUb1N0cmluZykKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVG9TdHJpbmcsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVs
c2UgaWYgKG5vZGUtPm9wKCkgPT0gU3RyaW5nVmFsdWVPZikKLSAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blN0cmluZ1ZhbHVlT2YsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMVJlZ3MpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgp
ID09IENhbGxTdHJpbmdDb25zdHJ1Y3Rvcik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAgLTExMjE4LDEwICsxMTIyMiwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1
Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9q
aXQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxR1BSKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wMUdQUik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFHUFIpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMUdQUik7CiAgICAgICAgIH0K
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQo
KSkKQEAgLTExMjc0LDcgKzExMjc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1
bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkKICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgcmVzdWx0LmdwcigpKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25GdW5jdGlvblRvU3RyaW5nLCByZXN1
bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jdGlvbi5ncHIoKSkpOwor
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkZ1bmN0aW9uVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGZ1bmN0aW9uLmdwcigpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiB9CkBAIC0xMTI4OCw3ICsxMTI5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSogbm9k
ZSwgaW50CiB7CiAgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICB9OwpAQCAtMTEzMzMsNyArMTEzMzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gY2Fs
bFRvU3RyaW5nID0gWyZdIChhdXRvIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgYXV0byB2
YWx1ZVJlZywgR1BSUmVnIHJhZGl4R1BSKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgcmFkaXhHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFs
dWVSZWcsIHJhZGl4R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH07CkBAIC0xMTQzMSw3ICsxMTQz
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2woTm9kZSogbm9kZSkK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhTdHJpbmdEZXNjcmlw
dGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdTeW1ib2xXaXRoU3RyaW5nRGVzY3Jp
cHRpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQ
Uik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE0NDIsNyArMTE0NDYsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3ltYm9sKE5vZGUqIG5vZGUpCiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTExNTY1LDcgKzExNTY5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIo
Tm9kZSogbm9kZSwgVHlwZWRBcnJheVQKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3VHlwZWRB
cnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksCi0gICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3RvcmFnZUdQ
UikpOworICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
dHJ1Y3R1cmUsIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KQEAgLTExNTkwLDEzICsxMTU5NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3UmVnZXhwKE5vZGUqIG5vZGUpCiAgICAgYXV0byBidXR0ZXJmbHkgPSBU
cnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PFJlZ0V4cE9i
amVjdD4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2ppdC5zdG9yZVB0cigK
LSAgICAgICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwKLSAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4
cEFuZEZsYWdzKCkpKTsKKyAgICBtX2ppdC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgp
KSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRP
ZlJlZ0V4cEFuZEZsYWdzKCkpKTsKICAgICBtX2ppdC5zdG9yZVZhbHVlKGxhc3RJbmRleFJlZ3Ms
IENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZM
YXN0SW5kZXgoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3
UmVnZXhwV2l0aExhc3RJbmRleCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgcmVnZXhwLCBsYXN0SW5kZXhSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4
LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdleHAsIGxhc3RJ
bmRleFJlZ3MpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTEy
NTIyLDcgKzEyNTI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJp
bmdKdW1wKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEsIEdQUlIKIHsKICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlLCBKU1N0cmluZzo6b2Zmc2V0T2ZW
YWx1ZSgpKSwgc2NyYXRjaCk7CiAgICAgYXV0byBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJvcGVT
dHJpbmdJbXBsKHNjcmF0Y2gpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChpc1JvcGUsIHRoaXMsIG9wZXJhdGlvblJlc29sdmVSb3BlLCBzY3JhdGNoLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgdmFsdWUpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc2NyYXRjaCwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlKSk7CiAgICAgCiAgICAgYWRkQnJhbmNo
KAogICAgICAgICBtX2ppdC5icmFuY2gzMigKQEAgLTEyNzY0LDcgKzEyNzY2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKE5vZGUqIG5vZGUsIFN3aXRj
aERhdGEqIGRhdGEsIEdQUlIKIAogICAgIGlmICghY2FuRG9CaW5hcnlTd2l0Y2ggfHwgdG90YWxM
ZW5ndGggPiBPcHRpb25zOjptYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoVG90YWxMZW5ndGgoKSkg
ewogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3Rh
dGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFibGUs
IHN0cmluZyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBz
dHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpLCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgbV9qaXQuZmFySnVtcChzdHJpbmcs
IEpTU3dpdGNoUHRyVGFnKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4MDEsNyArMTI4MDMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoTm9kZSogbm9k
ZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BSUgogICAgIAogICAgIHNsb3dDYXNlcy5saW5rKCZtX2pp
dCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlu
a2VkVGFibGUsIHN0cmluZyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJp
bmcsIHN0cmluZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0YXRpY19jYXN0PHNp
emVfdD4oZGF0YS0+c3dpdGNoVGFibGVJbmRleCksICZ1bmxpbmtlZFRhYmxlLCBzdHJpbmcpOwog
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgIG1faml0LmZhckp1bXAoc3RyaW5nLCBKU1N3aXRjaFB0clRhZyk7CkBAIC0xMjk0OCw3
ICsxMjk1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQo
Tm9kZSogbm9kZSkKICAgICBHUFJSZWcgYWNjZXNzb3JHUFIgPSBhY2Nlc3Nvci5ncHIoKTsKIAog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IFB1
dEdldHRlckJ5SWQgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkIDogb3BlcmF0aW9uUHV0U2V0dGVy
QnlJZCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGFj
Y2Vzc29yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJ
ZCA/IG9wZXJhdGlvblB1dEdldHRlckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JH
UFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
QEAgLTEyOTY2LDcgKzEyOTY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEdl
dHRlclNldHRlckJ5SWQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0dGVy
LmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblB1dEdldHRlclNldHRlciwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIs
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JB
dHRyaWJ1dGVzKCksIGdldHRlckdQUiwgc2V0dGVyR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblB1dEdldHRlclNldHRlciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNj
ZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRlckdQUiwgc2V0dGVyR1BSKTsKICNlbHNlCiAgICAgLy8g
VGhlc2UgSlNWYWx1ZXMgbWF5IGJlIEpTVW5kZWZpbmVkIE9SIEpTRnVuY3Rpb24qLgogICAgIC8v
IEF0IHRoYXQgdGltZSwKQEAgLTEyOTc4LDcgKzEyOTgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEdldHRlclNldHRlckJ5SWQoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVn
cyBzZXR0ZXJSZWdzID0gc2V0dGVyLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyUmVncy5wYXls
b2FkR1BSKCksIHNldHRlclJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblB1dEdldHRlclNldHRlciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNj
ZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRlclJlZ3MucGF5bG9hZEdQUigpLCBzZXR0ZXJSZWdzLnBh
eWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0x
Mjk5Miw3ICsxMjk5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2Nv
cGUoTm9kZSogbm9kZSkKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVT
Y29wZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIs
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CiAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0x
MzAwNCw3ICsxMzAwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2Nv
cGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC0xMzAzMiw3ICsxMzAzNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldER5bmFtaWNWYXIsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uR2V0RHluYW1pY1ZhciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtMTMwNDYsNyArMTMw
NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBu
b2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1
dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQ
UiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5v
ZGUtPmdldFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHlu
YW1pY1Zhck5vblN0cmljdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BS
LCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9k
ZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVz
dWx0KG5vZGUpOwogfQpAQCAtMTMxMTIsNyArMTMxMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUHV0QWNjZXNzb3JCeVZhbChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBhY2Nlc3Nv
ckdQUiA9IGFjY2Vzc29yLmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIs
IHN1YnNjcmlwdFJlZ3MsIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCBzdWJzY3JpcHRSZWdzLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwg
YWNjZXNzb3JHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3Vs
dChub2RlKTsKQEAgLTEzMjg5LDcgKzEzMjkxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0cmluZ1JlcGxhY2UoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9G
dW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIsIHJl
c3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgcmVn
RXhwR1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2FtcGxlKQpAQCAtMTMzMTAsNyArMTMzMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nUmVwbGFjZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3Ry
aW5nLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIs
IHJlZ0V4cEdQUiwgcmVwbGFjZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZywgcmVzdWx0LmdwcigpLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCByZWdFeHBHUFIsIHJlcGxhY2VHUFIp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGlmIChzYW1wbGUpCkBAIC0xMzMzMiw3ICsxMzMz
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUqIG5v
ZGUpCiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1Jl
cGxhY2VHZW5lcmljLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
dHJpbmdSZWdzLCBzZWFyY2hSZWdzLCByZXBsYWNlUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYywgcmVzdWx0LmdwcigpLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nUmVncywgc2VhcmNoUmVncywgcmVwbGFj
ZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUpOwogICAgIGlmIChzYW1wbGUpCkBAIC0xMzM1Myw3ICsxMzM1NSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3ko
Tm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
ICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjTm9uR2xvYmFs
T3JTdGlja3ksIHJlc3VsdFJlZ3MsCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgVHJ1c3RlZElt
bVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwgYXJndW1lbnRHUFIpOworICAgICAgICBnbG9iYWxP
YmplY3RHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNl
bGxPcGVyYW5kKCktPmNlbGwoKSksIGFyZ3VtZW50R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTEzMzcz
LDcgKzEzMzc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cE1hdGNoRmFz
dEdsb2JhbChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIG9wZXJhdGlvblJlZ0V4cE1hdGNo
RmFzdEdsb2JhbFN0cmluZywgcmVzdWx0UmVncywKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBU
cnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLCBhcmd1bWVudEdQUik7CisgICAgICAg
IGdsb2JhbE9iamVjdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgYXJndW1lbnRHUFIpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpA
QCAtMTM1NTcsNyArMTM1NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5l
RGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0
cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTEzNTc0LDcgKzEzNTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJl
bihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZ0lkZW50LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3Ry
aW5nSWRlbnQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudEdQ
UiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM1ODYsNyArMTM1ODgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAg
ICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVn
cywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5l
RGF0YVByb3BlcnR5U3ltYm9sLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNTk3LDcgKzEz
NTk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShO
b2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9w
ZXJ0eSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywg
dmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWZpbmVEYXRhUHJvcGVydHksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
R1BSLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNjM4LDcg
KzEzNjQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJv
cGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVB
Y2Nlc3NvclByb3BlcnR5U3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5n
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdl
dHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM2NTUsNyArMTM2NTcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2Rl
KiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJv
cGVydHlTdHJpbmdJZGVudCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlk
ZW50R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQ
Uiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM2NjcsNyArMTM2NjksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2Rl
KQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
eW1ib2wsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwg
Z2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJH
UFIsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
ICAgICBicmVhazsKICAgICB9CkBAIC0xMzY3OCw3ICsxMzY4MCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAg
IHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgZ2V0dGVyR1BSLCBzZXR0
ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
ZmluZUFjY2Vzc29yUHJvcGVydHksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
R1BSLCBwcm9wZXJ0eVJlZ3MsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMTM4MTAsNyArMTM4MTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0TWFw
QnVja2V0TmV4dChOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+YnVja2V0T3duZXJU
eXBlKCkgPT0gQnVja2V0T3duZXJUeXBlOjpTZXQpOwogICAgICAgICBzZW50aW5lbCA9IHZtKCku
c2VudGluZWxTZXRCdWNrZXQoKTsKICAgICB9Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBzZW50aW5lbCksIHJlc3VsdEdQUik7CisgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgc2VudGluZWwpLCByZXN1bHRHUFIpOwogICAgIGRvbmUubGluaygmbV9q
aXQpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTM4NzIsNyArMTM4
NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVGhyb3coTm9kZSogbm9kZSkKICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1
ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dERkcsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhy
b3dERkcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOwogICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgIG5vUmVz
dWx0KG5vZGUpOwpAQCAtMTM4ODQsNyArMTM4ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVGhyb3dTdGF0aWNFcnJvcihOb2RlKiBub2RlKQogICAgIEdQUlJlZyBtZXNzYWdlR1BS
ID0gbWVzc2FnZS5ncHIoKTsKICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG1l
c3NhZ2VHUFIpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25UaHJvd1N0YXRpY0Vycm9yLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWVzc2Fn
ZUdQUiwgbm9kZS0+ZXJyb3JUeXBlKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhy
b3dTdGF0aWNFcnJvciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1lc3NhZ2VHUFIs
IG5vZGUtPmVycm9yVHlwZSgpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1f
aml0LmJyZWFrcG9pbnQoKTsKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEzOTc0LDcgKzEzOTc2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlSW5k
ZXhBbmRNb2RlKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVl
UmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1l
cmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsK
KyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Ms
IGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC0xNDA0
NywxMiArMTQwNDksMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JO
ZXh0VXBkYXRlUHJvcGVydHlOYW1lKE5vZGUqIG5vZGUpCiAgICAgICAgIGRvbmVDYXNlcy5hcHBl
bmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7Ci0g
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0o
KS5zbWFsbFN0cmluZ3Muc2VudGluZWxTdHJpbmcoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIHZtKCkuc21hbGxTdHJpbmdzLnNlbnRpbmVsU3RyaW5nKCkpLCByZXN1bHRHUFIpOwog
ICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIG9wZXJhdGlv
bkNhbGwubGluaygmbV9qaXQpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGluZGV4LCBtb2RlLCBlbnVtZXJhdG9yKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbmRleCwgbW9kZSwgZW51bWVyYXRvcik7
CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKCZtX2pp
dCk7CkBAIC0xNDA5Niw5ICsxNDA5OCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVF
bnVtZXJhdG9ySGFzUHJvcGVydHkoTm9kZSogbm9kZSwgU2xvd1BhdGhGdW5jdGlvblR5CiAgICAg
ICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsoJm1faml0KTsKIAogICAgICAgICBpZiAoYmFzZVJlZ3Mu
dGFnR1BSKCkgPT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xv
d1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5TmFt
ZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xv
d1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5
TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2Rl
R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eU5h
bWVSZWdzLCBpbmRleEdQUiwgbW9kZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xNDIwMCw3ICsxNDIwMiw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSogbm9kZSkK
IAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXMsCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVncywgdGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LnJhd0JpdHMoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
UmVncywgdGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJh
d0JpdHMoKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5v
ZGUpOwpAQCAtMTQyODEsNyArMTQyODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
R2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiAKICAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsT3JPdGhlclVzZSkgewogICAgICAgICAgICAgYXV0byBu
b3RPdGhlciA9IG1faml0LmJyYW5jaElmTm90T3RoZXIoYmFzZVJlZ3MsIHNjcmF0Y2gxR1BSKTsK
LSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgdm0oKS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIHZtKCkuZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpLCBz
Y3JhdGNoMUdQUik7CiAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7
CiAgICAgICAgICAgICBub3RPdGhlci5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTE0MzM5
LDcgKzE0MzQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51
bWVyYXRvcihOb2RlKiBub2RlKQogCiAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAg
ICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwg
c2NyYXRjaDFHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncy5wYXls
b2FkR1BSKCkpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTE0MzU0LDcgKzE0MzU2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdl
dFByb3BlcnR5RW51bWVyYXRvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTQ0NDMsOSArMTQ0NDUsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyQ2F0KE5vZGUqIG5vZGUpCiAKICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOwogICAgIGVsc2UK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMTQ1MTUs
NyArMTQ1MTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6
ZShOb2RlKiBub2RlKQogICAgIGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxs
cHRyKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVyZUdQUiwgc2l6ZUdQ
UiwgbnVsbHB0cik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNDU0Myw3ICsxNDU0NSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAg
ICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlw
ZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSks
IGFyZ3VtZW50UmVncyk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgp
KSksIGFyZ3VtZW50UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ1NzgsNyArMTQ1ODAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgICAg
IGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgIGVsc2UKICAgICAgICAgZnVu
Y3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24sIHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIGZ1bmN0aW9uLCB0ZW1wUmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRoaXNWYWx1ZVJlZ3MpKTsKIAogICAgIGpzVmFsdWVS
ZXN1bHQodGVtcFJlZ3MsIG5vZGUpOwogfQpAQCAtMTQ2MjgsNyArMTQ2MzAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1l
cyhOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5QnVm
ZmVyLCByZXN1bHRHUFIsICZ2bSgpLCBhcnJheVN0cnVjdHVyZSwgc2NyYXRjaDNHUFIpKTsKIAot
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVj
dCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUikpOworICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3Ao
KSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9i
amVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIG9iamVjdEdQUikpOwogCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjQzLDcgKzE0NjQ1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blBy
b3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkg
PT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmpl
Y3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvYmplY3RHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkg
PT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmpl
Y3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTE0NjU4LDcgKzE0
NjYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdl
dE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUt
Pm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXMgOiBvcGVyYXRpb25PYmpl
Y3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvYmplY3RSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IE9i
amVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzIDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJv
cGVydHlOYW1lcywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2Jq
ZWN0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ2ODUsNyArMTQ2ODcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0QXNzaWduKE5vZGUqIG5vZGUpCiAgICAgICAgIHNw
ZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDIoKSwgc291cmNlR1BSKTsKIAogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEFzc2ln
bk9iamVjdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlR1BS
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25PYmplY3QsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0YXJnZXRHUFIsIHNvdXJjZUdQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBA
IC0xNDY5OCw3ICsxNDcwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RB
c3NpZ24oTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgc291cmNlUmVncyA9IHNvdXJj
ZS5qc1ZhbHVlUmVncygpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWduVW50eXBlZCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uT2JqZWN0QXNzaWduVW50eXBlZCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHRhcmdldEdQUiwgc291cmNlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDcyMyw3ICsxNDcyNSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlR1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZUdQUik7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpA
QCAtMTQ3MzgsNyArMTQ3NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
Q3JlYXRlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RD
cmVhdGUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZVJl
Z3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlUmVncyk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwpAQCAtMTQ3OTAsNyArMTQ3OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ3JlYXRlVGhpcyhOb2RlKiBub2RlKQogICAgIG1faml0LmVtaXRJbml0aWFsaXplSW5s
aW5lU3RvcmFnZShyZXN1bHRHUFIsIGlubGluZUNhcGFjaXR5R1BSKTsKICAgICBtX2ppdC5tdXRh
dG9yRmVuY2Uodm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGNhbGxlZUdQUiwgbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpOwor
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3Bl
cmF0aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgY2FsbGVlR1BSLCBub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSk7CiAKICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNDgyNyw3ICsxNDgyOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuZW1p
dE5vbk51bGxEZWNvZGVTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmVHUFIsIHN0cnVjdHVyZUdQUik7CiAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBK
U0ludGVybmFsUHJvbWlzZTo6aW5mbygpIDogSlNQcm9taXNlOjppbmZvKCkpLCBzY3JhdGNoMUdQ
Uik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIs
IFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNo
MUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAgICAgZmFzdFByb21pc2VQYXRoLmxp
bmsoJm1faml0KTsKQEAgLTE0ODQwLDcgKzE0ODQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVRydXN0ZWRW
YWx1ZShqc1VuZGVmaW5lZCgpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNQcm9taXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSkpOwogICAg
IG1faml0Lm11dGF0b3JGZW5jZShtX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNl
KCkgPyBvcGVyYXRpb25DcmVhdGVJbnRlcm5hbFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9t
aXNlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IGdsb2JhbE9iamVjdCksIGNhbGxlZUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBv
cGVyYXRpb25DcmVhdGVJbnRlcm5hbFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9taXNlLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGds
b2JhbE9iamVjdCksIGNhbGxlZUdQUikpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogfQpAQCAtMTQ4NzYsNyArMTQ4NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3Blcgog
ICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1
Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0NsYXNzOjppbmZvKCkp
LCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmpl
Y3QpLCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2Ny
YXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVs
cGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0
dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAgICAgYXV0byBi
dXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwpAQCAtMTQ4ODcsNyArMTQ4ODksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChO
b2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcgogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1
ZShpbml0aWFsVmFsdWVzW2luZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgp
KSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9i
amVjdCksIGNhbGxlZUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVHUFIpKTsK
IAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1MDExLDcgKzE1MDEz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUp
CiAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVl
UmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKG5vdFByaW1pdGl2ZSwgdGhpcywgb3BlcmF0aW9uVG9QcmltaXRpdmUs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsK
KyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlz
LCBvcGVyYXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CkBA
IC0xNTAzNSw3ICsxNTAzNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Byb3Bl
cnR5S2V5KE5vZGUqIG5vZGUpCiAgICAgYWxyZWFkeVByb3BlcnR5S2V5LmxpbmsoJm1faml0KTsK
ICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25Ub1Byb3BlcnR5S2V5LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJndW1lbnRSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9Qcm9wZXJ0eUtleSwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlNDZWxsLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwogfQpAQCAtMTUwNjUsNyArMTUwNjcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVG9OdW1lcmljKE5vZGUqIG5vZGUpCiAgICAgaXNIZWFwQmlnSW50Lmxp
bmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0
UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKIAogICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKIH0KQEAgLTE1MTAw
LDcgKzE1MTAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxOdW1iZXJDb25z
dHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRS
ZWdzLCB0ZW1wR1BSKSk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJl
c3VsdFJlZ3MpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1i
ZXJDb25zdHJ1Y3RvciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
IH0KQEAgLTE1MTQ3LDcgKzE1MTQ5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxv
Z1NoYWRvd0NoaWNrZW5UYWlsKE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
c2NvcGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBzY29wZVJlZyA9IHNjb3Bl
LmdwcigpOwogCi0gICAgbV9qaXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQoc2hhZG93UGFj
a2V0UmVnLCB0aGlzUmVncywgc2NvcGVSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciht
X2ppdC5jb2RlQmxvY2soKSksIGNhbGxTaXRlSW5kZXgpOworICAgIG1faml0LmVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgc2NyYXRjaDFSZWcp
OworICAgIG1faml0LmxvZ1NoYWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tldFJlZywg
dGhpc1JlZ3MsIHNjb3BlUmVnLCBzY3JhdGNoMVJlZywgY2FsbFNpdGVJbmRleCk7CiAgICAgbm9S
ZXN1bHQobm9kZSk7CiB9CiAKQEAgLTE1MTY2LDcgKzE1MTY5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNldEFkZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFz
aEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFzaEdQUik7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiB9CkBAIC0xNTE4OCw3ICsxNTE5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYXBTZXQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwU2V0LCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIHZhbHVlUmVncywgaGFz
aEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBTZXQsIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVncywgdmFsdWVSZWdzLCBo
YXNoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1NDA3LDcgKzE1NDEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90eXBl
KHZtKCksIG9iamVjdEdQUiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0
UHJvdG90eXBlT2ZPYmplY3QsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU0MjQsNyAr
MTU0MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9k
ZSogbm9kZSkKIAogICAgICAgICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCB2YWx1ZUdQ
UiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsCi0g
ICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVS
ZWdzKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgdmFsdWVSZWdzKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU1NTEsNyArMTU1NTQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplYwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxs
QXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwK
LSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0
KSwKKyAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFs
T2JqZWN0KSwKICAgICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VT
aXplVG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLAogICAgICAgICBzaXplR1BSLCBzdG9y
YWdlR1BSKSk7CkBAIC0xNTY4NCw3ICsxNTY4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVIYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25fR0NaIHNs
CiAgICAgfQogICAgIH0KIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChz
bG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQUikpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQ
UikpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdENhdGNoTG9jYWwo
Tm9kZSogbm9kZSkKQEAgLTE1ODA0LDExICsxNTgwNywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpT
VmFsdQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xv
d1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
dmFsdWVSZWdzLAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24o
KSwgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywK
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVy
LnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCks
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCisg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVz
dWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOwogICAgIH0KIApAQCAtMTU4MzcsNyArMTU4NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fz
c2VtYmxlcgogICAgICAgICBhcmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxP
cGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUs
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0xNTg1OCw3ICsxNTg2MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5vZGUq
IG5vZGUsIE1hY3JvQXNzZW1ibGVyCiAgICAgbV9qaXQuY29tcGFyZTMyKGNvbmQsIGFyZzFSZWdz
LnBheWxvYWRHUFIoKSwgYXJnMlJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRHUFIpOwogCiAgICAg
aWYgKCFpc0tub3duSW50ZWdlcihub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8ICFpc0tub3duSW50
ZWdlcihub2RlLT5jaGlsZDIoKS5ub2RlKCkpKQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKKyAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBoZWxw
ZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
MVJlZ3MsIGFyZzJSZWdzKSk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KQEAgLTE1ODk4LDcgKzE1
OTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVQZWVwaG9sZUJyYW5j
aChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLAogICAgICAgICBhcmcyLnVzZSgpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVu
Y3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBh
cmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgYnJhbmNoVGVzdDMyKGNh
bGxSZXN1bHRDb25kaXRpb24sIHJlc3VsdEdQUiwgdGFrZW4pOwpAQCAtMTU5MjIsNyArMTU5MjUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZVBlZXBob2xlQnJhbmNoKE5v
ZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZt
X2ppdCk7CiAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7
Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKQEAgLTE1OTYyLDcgKzE1OTY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhl
YXBCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZtX2pp
dCk7CiAKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTYxMTUsNyArMTYxMTgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKIAog
ICAgIGF1dG8gaXNOb25FbXB0eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBl
cnM6Ok5vblplcm8sIGFsbG9jYXRvckdQUik7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcobV9qaXQuZ3JhcGgo
KS5tX3ZtKSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyht
X2ppdC5ncmFwaCgpLm1fdm0pKSwgcmVzdWx0R1BSKTsKIAogICAgIGlzTm9uRW1wdHlTdHJpbmcu
bGluaygmbV9qaXQpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKQEAgLTE2MTIzLDEx
ICsxNjEyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSog
bm9kZSkKICAgICBzd2l0Y2ggKG51bU9wR1BScykgewogICAgIGNhc2UgMjoKICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRo
aXMsIG9wZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0pKTsKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlz
LCBvcGVyYXRpb25NYWtlUm9wZTIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
MzoKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAg
ICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSkpOwor
ICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9w
R1BSc1syXSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTYxNDEsMTEgKzE2MTQ0LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgc3dpdGNoIChudW1PcEdQUnMpIHsKICAgICBjYXNl
IDI6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTMsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdLCBvcEdQUnNbMl0pOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CkBAIC0xNjI0OCw5ICsxNjI1MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICBpZiAoIXJlY292ZXJH
ZW5lcmljQ2FzZS5lbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkg
PT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9y
UmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIGlu
ZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51
bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2Fk
R1BSKCkpLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2Vu
ZXJpY0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFs
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4
R1BSLCBlbnVtZXJhdG9yR1BSKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVy
YXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNjk1MzQ1NTc5OWU1OGQ2MmU5
YzlmZTNlNDY2NjNhOWVkYmRiMmE0NC4uNmYzYmQ5MzFmOTMyYmI0MWY5OWViOWYxZGU0ZmEwMmE3
YzI0ZTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtOTc0LDE2ICs5NzQsMTUgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAg
ICBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBh
ZGRyZXNzLm9mZnNldCkpOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9DYiBv
cGVyYXRpb24sIENvZGVCbG9jayogY29kZUJsb2NrKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlv
bl9DYiBvcGVyYXRpb24sIEdQUlJlZyBjb2RlQmxvY2tHUFIpCiAgICAgewotICAgICAgICAvLyBE
byBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4KLSAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHM8Vl9KSVRPcGVyYXRpb25fQ2I+KFRydXN0ZWRJbW1QdHIoc3RhdGlj
X2Nhc3Q8dm9pZCo+KGNvZGVCbG9jaykpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8
Vl9KSVRPcGVyYXRpb25fQ2I+KGNvZGVCbG9ja0dQUik7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uKTsKICAgICB9CiAK
LSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNr
T25FeGNlcHRpb24oWl9KSVRPcGVyYXRpb25fRyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFpfSklUT3BlcmF0aW9uX0cg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSKQogICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Wl9KSVRPcGVyYXRpb25fRz4oVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzPFpfSklUT3BlcmF0aW9uX0c+KGdsb2JhbE9iamVjdEdQUik7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGE5MTJlYjU5OGI5
ODIyYTM1OTZhMWMxOGNlMWU2MjNlOGFhYTY4MTEuLjc4NDdjMTg0YWFlZjRhY2IyYmE5ZTE2ZTZj
OGY3OTM4ZmZlNzU4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTc4LDEyICsxNzgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BS
LCBHUFJSZWcKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dP
cGVyYXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwK
ICAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5y
YXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRC
eUlkRnVuY3Rpb24odHlwZSksCiAgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7
CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9CiAgICAgCiAgICAgbV9q
aXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTIxNSwxMiArMjE1LDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0Nh
bGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRp
bWl6ZSwKICAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6
Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1
YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAg
ICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQ
UiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKICAgICAgICAgICAgIERvbnRTcGlsbCwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIs
IGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5y
YXdCaXRzKCkpOwogICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkV2l0aFRoaXMoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQoRWRnZSBv
cGVyYW4KIAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2Jh
bE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJl
bW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIp
OworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvciht
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwog
ICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBhcmdHUFIsIHJlc3VsdEdQUik7
CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsK
ICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFs
T2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CkBAIC0zMDksNyAr
MzA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5j
aE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE4KIAogICAgICAgICBHUFJSZWcgbG9jYWxH
bG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRD
b25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVy
ZSh2bSgpLCBhcmdHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgp
KSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVy
OjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgdGFr
ZW4pOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAg
IGJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8g
bm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcUNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFH
UFIsIGFyZzJHUFIpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBu
b2RlLCBOb2RlKiBicmFuY2hOb2RlCiAKICAgICAgICAganVtcChpbnZlcnQgPyB0YWtlbiA6IG5v
dFRha2VuLCBGb3JjZUp1bXApOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpKTsK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFuY2hUZXN0
MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVz
dWx0R1BSLCB0YWtlbik7CiAgICAgfQogCkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJv
b2wgaW52ZXJ0KQogICAgICAgICBub3RFcXVhbENhc2UubGluaygmbV9qaXQpOwogICAgICAgICAK
ICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJp
Y0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogCiAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQoMCksIHJlc3VsdEdQUik7CiAKLSAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9u
Q29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBh
cmcxUmVncywgYXJnMlJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsK
IAogICAgIGRvbmUubGluaygmbV9qaXQpOwogCkBAIC03MzQsNyArNzM0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTZXR1cFZh
cmFyZ3NGcmFtZUZhc3RDYXNlKHZtKCksIG1faml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEs
IHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZh
ckFyZ09mZnNldCwgc2xvd0Nhc2UpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9u
ZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFy
YXJncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Zv
clZhcmFyZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9i
amVjdCkpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAg
IG1faml0LmFib3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cp
OwogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19B
U1NFUlQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgaXNGbHVzaGVkKCkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNHUFIgYW5k
IHRoZSByZWdpc3RlciBmaWxlIGlzIGZsdXNoZWQuCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRzR1BSLCBudW1Vc2VkU3RhY2tTbG90
cywgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c0dQUiwgbnVtVXNlZFN0YWNrU2xv
dHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBh
cmd1bWVudCBjb3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJn
dW1lbnRzIG9wZXJhbmQuCkBAIC03NzMsNyArNzczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUobV9q
aXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBmYWxzZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hH
UFIxKTsKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2Fs
bGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRC
eXRlcygpLCA1ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwg
ZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86
OnJldHVyblZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRjaEdQ
UjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
ICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSks
IEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogICAgICAgICB9CkBAIC05MTAsNyArOTEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAg
ICAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBKSVRDb21waWxl
cjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAs
IEdQUkluZm86OnJlZ1QxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUo
b3BlcmF0aW9uQ2FsbEV2YWwpPihKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAg
ICBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCk7CiAgICAgICAgIG1faml0LmFwcGVuZENhbGwob3Bl
cmF0aW9uQ2FsbEV2YWwpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMTAw
NSw3ICsxMDA1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsgLy8gVGhpcyBuZWVk
cyB0byBoYXBwZW4gYWZ0ZXIgd2UgbW92ZWQgY2FsbGVlR1BSIHRvIHJlZ1QwCiAgICAgfQogCisg
ICAgLy8gRklYTUUKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxPYmplY3Qg
bmVlZHMgdG8gYmUgaW4gcmVnVDMKKyAgICAvLyBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZv
OjpyZWdUMyk7IC8vIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIGJlIGluIHJlZ1QzCiAgICAgY2Fs
bExpbmtJbmZvLT5lbWl0U2xvd1BhdGgodm0oKSwgbV9qaXQpOwogCiAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CkBAIC0xODkwLDcgKzE4OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q29tcGFyZUVxUHRyKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3By
KCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+Y2VsbCgpKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25z
dGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBub2RlLT5j
ZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwogICAgIG1faml0LmNvbXBhcmU2NChN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlR1BSLCByZXN1bHRHUFIsIHJlc3VsdEdQUik7CiAg
ICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMjE4MCw3
ICsyMTgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2goRWRnZSBu
b2RlVXNlLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG8KICAgICAgICAgICAgIGJyYW5jaFRl
c3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQ
UiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCksIHRha2VuKTsKICAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0
dXJlKHZtKCksIHZhbHVlR1BSLCB0ZW1wMUdQUik7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgdGVtcDJHUFIp
OworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgdGVtcDJHUFIpOwog
ICAgICAgICAgICAgYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModGVtcDFHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
LCB0ZW1wMkdQUiwgdGFrZW4pOwogICAgICAgICAgICAganVtcChub3RUYWtlbiwgRm9yY2VKdW1w
KTsKICAgICAgICAgfSBlbHNlCkBAIC0yMzc4LDcgKzIzODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6
dHVwbGU8SgogICAgICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJl
Z3MpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICAg
ICAgICAgIGlmIChjYW5Vc2VGbHVzaCA9PSBDYW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKQEAgLTI0MzQsMTEgKzI0MzYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAg
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0gICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxs
cHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CiAgICAgICAgIH0KIAogICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTI1MTMsNyArMjUxNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBs
ZTxKCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0KIAogCkBAIC0yNjA1LDcgKzI2MDcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAg
ICAgICAgICByZXN1bHRSZWdzLmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncy5ncHIo
KSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7
CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MuZ3ByKCksIG5vZGUpOwogICAg
ICAgICB9CiAKQEAgLTI2NjMsNyArMjY2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJ
bnQsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRSZWcsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBA
IC0yNzkzLDcgKzI3OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVz
dElubGluZShOb2RlKiBub2RlKQogICAgICAgICBpZiAoaW5saW5lQ29kZVN0YXRzOEJpdC5uZWVk
c1RlbXAyKCkpIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHdlIHJldXNlZCBnbG9iYWxPYmplY3RH
UFIgZm9yIHRlbXAyLCBsZXQncyByZXN0b3JlIHRoZSBnbG9iYWwgb2JqZWN0LgogICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdENvbnN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4obm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3RDb25zdCksIGdsb2Jh
bE9iamVjdEdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0Q29uc3QpLCBnbG9iYWxPYmplY3RH
UFIpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMzU0OCw3ICszNTUwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGlmICghc3RvcmFnZUVk
Z2UpIHsKICAgICAgICAgICAgIGF1dG8gY2FsbFNsb3dQYXRoID0gWyZdICgpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGdsb2JhbE9iamVjdEltbVB0ciA9IFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpOworICAgICAgICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRyID0gSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CiAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBZGQsIHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CkBAIC0zNzU3LDcgKzM3
NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0lzTG9ja0ZyZWUs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOworICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZSwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CiAgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODk5LDcgKzM5MDEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpKSwgdmFsdWVHUFIpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCwgdmFsdWVHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgsIHZh
bHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICAvLyBXZSBjYW4ndCBrbm93IGZvciBzdXJlIHRoYXQgdGhlIHJl
c3VsdCBpcyBhbiBpbnQgYmVjYXVzZSBvZiB0aGUgc2xvdyBwYXRocy4gOi0vCiAgICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHZhbHVlR1BSLCBub2RlKTsKQEAgLTM5MzIsNyArMzkzNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwo
Ci0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3As
IHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOworICAgICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wLCB2YWx1ZUdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTQwNTgsNyArNDA2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgLy8gSW5zdGVhZCBvZiB0aGUgc2xvdyBwYXRoIGdlbmVyYXRvciwgd2UgZW1p
dCBjYWxsT3BlcmF0aW9uIGhlcmUuCiAgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAgICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9O
dW1iZXIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BS
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsKICAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2hJZk5vdE51bWJl
cihhcmd1bWVudEdQUik7CkBAIC00MDY3LDcgKzQwNjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIG5vdE51bWJlci5saW5rKCZtX2pp
dCk7CiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtNDU0Myw3
ICs0NTQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3Qo
KSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVj
bWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDY4
MSw3ICs0NjgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAg
ICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdw
cigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUds
b2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAgICBtX2pp
dC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2pp
dC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0
dXJlKHZtKCksIHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Z2xv
YmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAgICAgICAg
IG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQ
UiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHQuZ3ByKCkpOwpAQCAtNDg4Niw3ICs0ODg4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAg
ICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJl
Z2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25N
YXBIYXNoLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVlUmVn
cyhpbnB1dEdQUikpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBIYXNo
LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVlUmVncyhp
bnB1dEdQUikpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtNDkzMSw3ICs0OTMzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIHNsb3dQYXRo
LmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BS
KTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBIYXNoLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVlUmVncyhpbnB1dEdQUikpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7CiAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApA
QCAtNTA3OSw5ICs1MDgxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgc2xvd1BhdGhDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhpbmRleEdQUik7CiAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOworICAgICAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25KU1NldEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwogICAgICAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CkBAIC01Mzk0LDcgKzUzOTYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
c2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc093blByb3BlcnR5
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIsIGtleUdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJvcGVydHksIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUiwga2V5R1BSKTsK
ICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXgg
MGM0ZDE5NWQ5MTQ4NTcyMjkzODRlOTg0OGQxNzk5NGRhMzk0MTI2ZC4uYjAxOTk5YTVlYWVhOTky
MTYwOTIxMjU3NTU1NTI2OGE3N2E4MWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRl
ICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBA
IC0xNDEsNiArMTQyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZGcmFt
ZVNpemUgPSAwOyAvLyBUaGlzIGlzIHRoZSBERkcgZnJhbWUgY291bnQuCiAgICAgcHRyZGlmZl90
IG9mZnNldE9mVGFyZ2V0UEMgPSBvZmZzZXRPZkZyYW1lU2l6ZSArIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7CiAgICAgcHRyZGlmZl90IG9mZnNldE9mUGF5bG9hZCA9IG9mZnNldE9mVGFyZ2V0UEMg
KyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworICAgIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9j
ayA9IG9mZnNldE9mUGF5bG9hZCArIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2s7CiAgICAgcHRyZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2Fk
ICsgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwog
ICAgIAogICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgR1BSSW5mbzo6cmVn
VDApOwpAQCAtMTYyLDggKzE2NCwyMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5hYm9ydFdpdGhS
ZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24pOwogCiAgICAgb2su
bGluaygmaml0KTsKKworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1QwLCBvZmZzZXRPZkNvZGVCbG9jayksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBq
aXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUkluZm86OnJlZ1QyLCBDYWxsRnJhbWVTbG90
Ojpjb2RlQmxvY2spOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgaml0LnByb2JlRGVidWcoWz1d
KFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBj
dHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIH0p
OworI2VuZGlmCisKICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxs
ZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQuZW1pdE1hdGVyaWFsaXpl
VGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkpJVERhdGEoKSksIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyNlbmRpZgogCiAgICAg
aml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0lu
amVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggOGZkMDJmM2JkMzk0MTllODMzZTI3YWE5YTE5NzY1
Nzg0NDllN2E3NS4uMzE1OWNkYTVjNDI2MzVjZjM2YmVlNzUzMWIwYTJkYmIyNTM3MWUzMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVja0luamVjdGlv
blBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFRpZXJVcENoZWNrSW5q
ZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgIAogICAgIGJvb2wgcnVuKCkKICAgICB7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9wbGFuLm1vZGUoKSA9PSBKSVRDb21w
aWxhdGlvbk1vZGU6OkRGRyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzREZHKG1fZ3JhcGgu
bV9wbGFuLm1vZGUoKSkpOwogCiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlRlRMSklUKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5jcHAKaW5kZXggMDI0ZGRmMGFmNjc3MmI4NWNmNDY0OWU5YmFiMjRmYzQ4
NjQwZTU5Ni4uMWI2NDMzNGExN2VkZTIyMDZlMTFhNWRmMTJjNTM2OTI0NmFmMzI0YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApAQCAtMTM3NCw2
ICsxMzc0LDIyIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUxMSW50QmFz
ZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCCiAgICAgc3Bvb2xlci5maW5hbGl6
ZUdQUigpOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFB1dENvZGVCbG9ja1RvRnJh
bWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQsIGJvb2wgaXNDb25zdHJ1Y3RvcikKK3sKKyAgICBl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJlc3Vs
dCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVj
dXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKKyAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBi
cmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgVHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJhcmVE
YXRhVGFnKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3VsdCk7
CisgICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOworICAgIGlmIChpc0NvbnN0cnVjdG9yKQor
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNl
dE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCByZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVC
bG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7CisKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZzZXRPZkNvZGVCbG9jaygpKSwgcmVzdWx0KTsK
KyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCBjMTE3
ZTBiNWNmOWNlMmFjNzU5OGU1MmRhZDMzOWNlYTZiMGFmZWQ2Li5lYzNlNWQ0OTAyOTA3ZGQxM2Vl
ZGIwMjdkNjZhNjFhZTYwMWMxNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKQEAgLTQwNiw2ICs0MDYsOCBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMg
OiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAgdm9pZCBlbWl0
UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCwgYm9vbCBpc0NvbnN0
cnVjdG9yKTsKKwogI2lmIENQVShYODZfNjQpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjg3ZWZkYjAwZWFjN2QxODU5ZTY5NzE1MzlkZjBhYTVl
ZDM5OGE3NS4uYTY1MjVmNjBiMzA4NWMyNjc0NWZiMmNlNzUxMzc0ZmUyNTdiOTJkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC02OSw2ICs2OSwxMCBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgR1BS
UmVnIG1fZ3ByOwogICAgIH07CiAKKyAgICAvLyBCYXNlIGNsYXNzIGZvciBjb25zdGFudCBtYXRl
cmlhbGl6ZXJzLgorICAgIC8vIEl0IG9mZmVycyBEZXJpdmVkQ2xhc3M6Om1hdGVyaWFsaXplIGFu
ZCBwb2tlIGZ1bmN0aW9ucy4KKyAgICBjbGFzcyBDb25zdGFudE1hdGVyaWFsaXplciB7IH07CisK
ICAgICAvLyBUaGUgbW9zdCBnZW5lcmFsIGhlbHBlciBmb3Igc2V0dGluZyBhcmd1bWVudHMgdGhh
dCBmaXQgaW4gYSBHUFIsIGlmIHlvdSBjYW4gY29tcHV0ZSBlYWNoCiAgICAgLy8gYXJndW1lbnQg
d2l0aG91dCB1c2luZyBhbnkgYXJndW1lbnQgcmVnaXN0ZXJzLiBZb3UgdXN1YWxseSB3YW50IG9u
ZSBvZiB0aGUgc2V0dXBBcmd1bWVudHMqKCkKICAgICAvLyBtZXRob2RzIGJlbG93IGluc3RlYWQg
b2YgdGhpcy4gVGhpcyB0aGluZyBpcyBtb3N0IHVzZWZ1bCBpZiB5b3UgaGF2ZSAqYSBsb3QqIG9m
IGFyZ3VtZW50cy4KQEAgLTM2NSw3ICszNjksMTAgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVi
bGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VGb3JBcmd1
bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25lZCBj
dXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0
cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCiAgICAg
ewogICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9mZnNldChjdXJy
ZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3VyY2VzLCBleHRy
YUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHBva2UoYXJnLCBwb2tl
T2Zmc2V0KTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2ZfdjxDb25zdGFu
dE1hdGVyaWFsaXplciwgQXJnVHlwZT4pCisgICAgICAgICAgICBhcmcucG9rZSgqdGhpcywgYWRk
cmVzc0ZvclBva2UocG9rZU9mZnNldCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb2tl
KGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIHN0YWNr
QWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJB
cmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3Ms
IHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKQEAgLTY0Nyw2ICs2NTQs
MjcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAg
ICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLCBUcnVz
dGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwogICAgIH0KIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2lnbmVkIG51bUdQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNvdXJjZXMsIHVu
c2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBu
b25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4g
QXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29m
X3Y8Q29uc3RhbnRNYXRlcmlhbGl6ZXIsIEFyZz4+CisgICAgc2V0dXBBcmd1bWVudHNJbXBsKEFy
Z0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJncywgbnVtRlBS
U291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19mbG9hdGluZ19wb2ludDxDVVJSRU5UX0FSR1VNRU5U
X1RZUEU+Ojp2YWx1ZSwgIldlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0cy9kb3VibGVz
IGluIHNldHVwQXJndW1lbnRzIik7CisgICAgICAgIGF1dG8gbnVtQXJnUmVnaXN0ZXJzID0gR1BS
SW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyNpZiBPUyhXSU5ET1dTKSAmJiBDUFUo
WDg2XzY0KQorICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQUkFyZ3MgKyBudW1G
UFJBcmdzICsgKHN0ZDo6aXNfc2FtZTxSRVNVTFRfVFlQRSwgU2xvd1BhdGhSZXR1cm5UeXBlPjo6
dmFsdWUgPyAxIDogMCk7CisjZWxzZQorICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51
bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYgKGN1cnJlbnRBcmdD
b3VudCA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBs
PE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOworICAg
ICAgICAgICAgYXJnLm1hdGVyaWFsaXplKCp0aGlzLCBHUFJJbmZvOjp0b0FyZ3VtZW50UmVnaXN0
ZXIoY3VycmVudEFyZ0NvdW50KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJBcmdzLCBudW1D
cm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BS
QXJnKCksIGFyZ3MuLi4pOworICAgIH0KKwogI3VuZGVmIENVUlJFTlRfQVJHVU1FTlRfVFlQRQog
I3VuZGVmIFJFU1VMVF9UWVBFCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5kZXgg
MDAyMmJkOWI5ODU5NWE4MzBjMWVlMDk1NmY4MTA4M2VkNDc4MWU4Ni4uNjdlNDdiM2M2YzZmNjBm
YjAxNThmYWM4ZjE5ZTcwMmVkYTdlMTUzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKQEAgLTQyMCwxMyArNDIwLDE0IEBAIGNsYXNzIEdQUkluZm8gewogY2xhc3MgR1BSSW5mbyB7
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAxMTsKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTA7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUzsKIAogICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxp
bmUgSklULgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0g
WDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFn
UmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyBub3RDZWxsTWFza1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTU7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxMzsKIAog
ICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKQEAgLTQ1MCwxNiArNDUxLDE2IEBAIGNsYXNzIEdQ
UkluZm8gewogCiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1MxID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjpyMTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjpyMTM7IC8vIGNvbnN0YW50c1JlZ2lzdGVyCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTQ7IC8vIG51bWJl
clRhZ1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVn
aXN0ZXJzOjpyMTU7IC8vIG5vdENlbGxNYXNrUmVnaXN0ZXIKICNlbHNlCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1MxID0gWDg2UmVnaXN0ZXJzOjplc2k7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjplZGk7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTM7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gWDg2UmVnaXN0ZXJzOjpyMTU7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTM7IC8vIGNvbnN0YW50c1Jl
Z2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gWDg2UmVnaXN0ZXJz
OjpyMTQ7IC8vIG51bWJlclRhZ1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1M2ID0gWDg2UmVnaXN0ZXJzOjpyMTU7IC8vIG5vdENlbGxNYXNrUmVnaXN0ZXIKICNlbmRp
ZgogCiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2Vu
ZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KQEAgLTQ5Nyw5
ICs0OTgsOSBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChpbmRleCA8
IG51bWJlck9mUmVnaXN0ZXJzKTsKICNpZiAhT1MoV0lORE9XUykKLSAgICAgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAs
IHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdDUzAs
IHJlZ0NTMSwgcmVnQ1MyIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJG
b3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1Qz
LCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCByZWdUNywgcmVnQ1MwLCByZWdDUzEgfTsKICNlbHNlCi0g
ICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lz
dGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ0NT
MCwgcmVnQ1MxLCByZWdDUzIsIHJlZ0NTMywgcmVnQ1M0IH07CisgICAgICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCBy
ZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ0NTMCwgcmVnQ1MxLCByZWdDUzIs
IHJlZ0NTMyB9OwogI2VuZGlmCiAgICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4
XTsKICAgICB9CkBAIC02MzQsNiArNjM1LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6ZnA7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0ZXIgPSBBUk02NFJl
Z2lzdGVyczo6eDI3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENlbGxNYXNrUmVn
aXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI4OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IGNvbnN0YW50c1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBkYXRhVGVtcFJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6OmRhdGFUZW1w
UmVnaXN0ZXI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWVtb3J5VGVtcFJlZ2lzdGVy
ID0gTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3RlcjsKICAgICAvLyBUZW1wb3Jhcnkg
cmVnaXN0ZXJzLgpAQCAtNjYwLDcgKzY2Miw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7IC8vIFVzZWQg
YnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBBUk02NFJl
Z2lzdGVyczo6eDI0OyAvLyBVc2VkIGJ5IEZUTCBvbmx5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgcmVnQ1M2ID0gQVJNNjRSZWdpc3RlcnM6OngyNTsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzcgPSBBUk02NFJlZ2lzdGVyczo6eDI2OworICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7IC8vIGNvbnN0YW50cwogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7IC8v
IG51bWJlclRhZwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOSA9IEFSTTY0UmVn
aXN0ZXJzOjp4Mjg7IC8vIG5vdENlbGxNYXNrCiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3Zp
ZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZh
bHVlIHJlZ2lzdGVycy4KQEAgLTc3Nyw3ICs3NzksNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUMjsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzAgPSBNSVBTUmVnaXN0ZXJzOjpzMDsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBNSVBTUmVnaXN0ZXJzOjpzMTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBNSVBTUmVnaXN0ZXJzOjpzMTsgLy8g
Y29uc3RhbnRzCiAKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgp
CiAgICAgewpAQCAtODMyLDYgKzgzNCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6ZnA7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0ZXIgPSBSSVNDVjY0
UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tS
ZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBjb25zdGFudHNSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNDsKIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ1QwID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDEwOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ1QxID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDExOwpA
QCAtODU0LDcgKzg1Nyw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIHJlZ0NTNCA9IFJJU0NWNjRSZWdpc3RlcnM6OngyMTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyByZWdDUzUgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjI7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDIzOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNDsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjQ7IC8v
IGNvbnN0YW50cwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9IFJJU0NWNjRS
ZWdpc3RlcnM6OngyNTsgLy8gbnVtYmVyVGFnCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1M5ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2OyAvLyBub3RDZWxsTWFzawogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMTAgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4Mjc7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZTljMGVjYzMwZWFjYzY4YzU1OWY4YWM0NjNlMTA2
MjIzMWRkZWI2YS4uZmU2ZTI2NzkwY2Q3NTk0OWRkNDdmNDM1YjRiMzg5NWFmMzk0NzU1MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjA1LDE5ICsyMDUsNyBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBT
bG93UGF0aEZ1bmN0aQogdm9pZCBKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1
ZShHUFJSZWcgcmVzdWx0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fdW5saW5rZWRDb2RlQmxv
Y2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsKLSAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJlc3VsdCk7Ci0gICAgbG9hZFB0cihB
ZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgp
KSwgcmVzdWx0KTsKLSAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8s
IHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFyZURhdGFU
YWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZz
ZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgcmVzdWx0KTsKLSAg
ICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7Ci0gICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rp
b25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwgcmVzdWx0KTsK
LSAgICBlbHNlCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLCByZXN1bHQpOwotCi0gICAgbG9hZFB0
cihBZGRyZXNzKHJlc3VsdCwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6b2Zmc2V0T2ZDb2Rl
QmxvY2soKSksIHJlc3VsdCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJlc3VsdCwg
Q2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKLQorICAgIEFzc2VtYmx5SGVscGVyczo6ZW1pdFB1
dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKHJlc3VsdCwgbV91bmxpbmtlZENvZGVCbG9jay0+
aXNDb25zdHJ1Y3RvcigpKTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHByb2JlRGVidWcoWz1d
IChQcm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
Y3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwpAQCAtMjc0LDcgKzI2Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgaWYgKG9wY29kZUlEICE9
IG9wX2NhdGNoKSB7CiAgICAgICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qw
LCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRhdGFUYWJsZSgpKSwgcmVnVDEpOwotICAgICAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVRE
YXRhKCkpLCByZWdUMik7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVC
bG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCByZWdUMik7CiAKICAgICAgICAgICAgIGF1dG8gbWV0
YWRhdGFPSyA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDEsIHNfbWV0YWRhdGFHUFIpOwogICAgICAg
ICAgICAgYnJlYWtwb2ludCgpOwpAQCAtNjk4LDcgKzY4Niw3IEBAIHZvaWQgSklUOjplbWl0TWF0
ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpCiB7CiAgICAgbG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCBz
X21ldGFkYXRhR1BSKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQ
Uik7CiB9CiAKIHZvaWQgSklUOjplbWl0U2F2ZUNhbGxlZVNhdmVzKCkKQEAgLTc2Nyw3ICs3NTUs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxh
dGlvbkVmZm9ydCBlZmZvcnQpCiAKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgIGlm
IChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKLSAgICAg
ICAgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKCk7CisgICAgICAgIGVtaXRQdXRD
b2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShyZWdUMCk7CiAKICAgICBMYWJlbCBiZWdpbkxhYmVs
KHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiOGZkYTVkMWI0MzE1ZTlmN2Q3
MDRjNDZhYWE1YTViMWJiMDM0NGZiLi5iMTMwZTNlYzk2ZmY4YmVlMzEzMTRhMWIwZGM4OTQxZTAx
MzEwNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI2Miw3ICsyNjIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRUYWcoVmlydHVh
bFJlZ2lzdGVyLCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQgZW1pdFB1dENv
ZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7CisgICAgICAg
IHZvaWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQpOwog
CiAgICAgICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1wVG9IYW5kbGVyKQogICAgICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvbXBpbGF0aW9u
TW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvbXBpbGF0aW9uTW9kZS5j
cHAKaW5kZXggYzU5ZDM5NGE0NjdjNWZkZDY4ZmZlMmY5YzJmYjUyNTZhNzQyMjA2Yy4uY2RmNmMx
MDI0ZjgxZTNlZjk0YjFlODM2Mjc2NzJmYmE1NDMxYzgyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb21waWxhdGlvbk1vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25Nb2RlLmNwcApAQCAtNDQsNiArNDQsOSBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSklUQ29tcGlsYXRpb25Nb2RlIG1v
ZGUpCiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzoKICAgICAgICAgb3V0LnByaW50
KCJERkdNb2RlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9k
ZTo6VW5saW5rZWRERkc6CisgICAgICAgIG91dC5wcmludCgiVW5saW5rZWRERkciKTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2RlOjpGVEw6CiAgICAgICAgIG91
dC5wcmludCgiRlRMTW9kZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvbXBpbGF0aW9uTW9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb21waWxhdGlvbk1vZGUuaAppbmRleCA3YmMwZTA3ZmY1M2NhMzE1OTli
NTY4ZWZhMjE1OTFhNjMyY2I5NTRmLi4wNjhhNTcyYmYyNmY2ZGVlMTg3NDg5ODZkZjE5Yzg1MWNk
NjNlMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvbXBpbGF0
aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25N
b2RlLmgKQEAgLTMzLDEwICszMywyMiBAQCBlbnVtIGNsYXNzIEpJVENvbXBpbGF0aW9uTW9kZSB7
CiAgICAgSW52YWxpZENvbXBpbGF0aW9uLAogICAgIEJhc2VsaW5lLAogICAgIERGRywKKyAgICBV
bmxpbmtlZERGRywKICAgICBGVEwsCi0gICAgRlRMRm9yT1NSRW50cnkKKyAgICBGVExGb3JPU1JF
bnRyeSwKIH07CiAKK2lubGluZSBib29sIGlzREZHKEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlKQor
eworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2RlOjpERkc6
CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OlVubGlua2VkREZHOgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CiBpbmxpbmUgYm9vbCBpc0ZUTChKSVRDb21waWxhdGlvbk1vZGUgbW9kZSkKIHsKICAgICBzd2l0
Y2ggKG1vZGUpIHsKQEAgLTQ4LDYgKzYwLDE3IEBAIGlubGluZSBib29sIGlzRlRMKEpJVENvbXBp
bGF0aW9uTW9kZSBtb2RlKQogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNVbmxpbmtlZChKSVRD
b21waWxhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIEpJ
VENvbXBpbGF0aW9uTW9kZTo6QmFzZWxpbmU6CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6
OlVubGlua2VkREZHOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNw
YWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA1
Yjg1YzdhYzUxN2E3MDJkY2ZkN2E2MmVkZjA5MjExYTNkNWQzMzNlLi40NGMxMmQ4ZDY5MjQyOTRh
MDU4OGZjNDYyZWY1ODI5MjUyYjgxZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKQEAgLTEwMjUsNyArMTAyNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNo
KGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAvLyBTbyB3ZSBy
ZXBsZW5pc2ggaXQgaGVyZS4KICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpKSwgc19jb25zdGFudHNH
UFIpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZK
SVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7CiAgICAgfQogCiAgICAgY2FsbE9wZXJhdGlvbk5v
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uUmV0cmlldmVBbmRDbGVhckV4Y2VwdGlvbklmQ2F0Y2hh
YmxlLCAmdm0oKSk7CkBAIC0xMDQ2LDYgKzEwNDYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRj
aChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAgICBjYWxsT3Bl
cmF0aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1
ZVByb2ZpbGUsICZ2bSgpLCBtX2J5dGVjb2RlSW5kZXguYXNCaXRzKCkpOwogICAgIGF1dG8gc2tp
cE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7CisgICAgZW1p
dFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJldHVyblZhbHVlR1BSMiwgQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKTsKICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgZmFySnVtcChyZXR1
cm5WYWx1ZUdQUiwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7CiAgICAgc2tpcE9TUkVudHJ5Lmxp
bmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApp
bmRleCBlZmM5YTBlOGJiMDJlMjI1ODExODQ2MjNkMTA2MGE4OTM1Y2RmMmExLi41YjVkYTc4ZGJh
NzE1NjIzMTJlOTcwNjdmNDY3YjQ1NzM5MDg0YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIwNTYsNyArMjA1Niw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25PcHRpbWl6ZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoVk0q
IHZtUG9pbnRlciwKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwog
fQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNo
LCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXhCaXRzKSkKK0pT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1
ZVByb2ZpbGUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5
dGVjb2RlSW5kZXhCaXRzKSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIwNjYsMzcgKzIw
NjYsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRD
YXRjaCwgY2hhciosIChWTSogdm1Qb2ludGVyLCB1aW4KICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRSZXBs
YWNlbWVudCA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKICAgICBpZiAoVU5MSUtFTFkoIW9w
dGltaXplZFJlcGxhY2VtZW50KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBzd2l0
Y2ggKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkpIHsKLSAgICBjYXNlIEpJVFR5cGU6
OkRGR0pJVDoKLSAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDogewotICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZW50cnkgPSBERkc6OnByZXBhcmVD
YXRjaE9TUkVudHJ5KHZtLCBjYWxsRnJhbWUsIGNvZGVCbG9jaywgb3B0aW1pemVkUmVwbGFjZW1l
bnQsIGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICByZXR1cm4gZW50cnkuZXhlY3V0YWJsZUFkZHJl
c3M8Y2hhcio+KCk7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChWTSogdm1Qb2lu
dGVyLCB1aW50MzJfdCBieXRlY29kZUluZGV4Qml0cykpCi17Ci0gICAgVk0mIHZtID0gKnZtUG9p
bnRlcjsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7
Ci0gICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxs
RnJhbWUpOwotICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVjb2RlSW5kZXg6
OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKLQotICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxh
Y2VtZW50ID0gY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpOwotICAgIGlmIChVTkxJS0VMWSghb3B0
aW1pemVkUmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKIAogICAgIHN3aXRjaCAob3B0aW1p
emVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSkgewogICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgog
ICAgIGNhc2UgSklUVHlwZTo6RlRMSklUOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBlbnRyeSA9IERGRzo6cHJlcGFyZUNhdGNoT1NSRW50
cnkodm0sIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNv
ZGVJbmRleCk7Ci0gICAgICAgIHJldHVybiBlbnRyeS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4o
KTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChlbnRyeS5leGVjdXRhYmxlQWRkcmVzczxj
aGFyKj4oKSwgb3B0aW1pemVkUmVwbGFjZW1lbnQpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKQEAgLTIxMDksNyArMjA4NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUsIGNoYXIqLCAoVk0q
CiAgICAgICAgIHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFt
ZS0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKICAgICB9KTsKIAot
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVs
bHB0cik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAppbmRleCAyYTU5ZjY0ZTg4NWFkNWEyNWUxODY3MmY5NmMzZGQ1YmI4NjViZDBmLi5jNWNl
NThkZWZmOThlZWI2YWZhY2M0NmNkYjFlODM2ODE3NjRlZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjU5LDggKzI1OSw3IEBAIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3csIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVu
Y29kZWRKU1ZhbHVlCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlYnVnLCB2
b2lkLCAoVk0qLCBpbnQzMl90KSk7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBKU0NfREVDTEFSRV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5cGUsIChWTSos
IHVpbnQzMl90KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVu
dGVyQXRDYXRjaCwgY2hhciosIChWTSosIHVpbnQzMl90KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhcios
IChWTSosIHVpbnQzMl90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRy
eU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoVk0q
LCB1aW50MzJfdCkpOwogI2VuZGlmCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dEdldHRlckJ5SWQsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIFVuaXF1ZWRT
dHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSk7CiBKU0NfREVDTEFSRV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblB1dFNldHRlckJ5SWQsIHZvaWQsIChKU0dsb2JhbE9iamVjdCos
IEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBsYW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQbGFuLmNwcAppbmRleCA5NmZjYjIzMTBiYmQ5ZmRk
ZmE4ODE0MmRjNDQ0OTk4OTlkMWNmYWU0Li5mMDQ4ODMzOTc4N2E0NzBmOTg3OGQyZTRhMDViNzJk
MjA1N2Y2MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBsYW4u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUGxhbi5jcHAKQEAgLTc3LDYg
Kzc3LDcgQEAgYXV0byBKSVRQbGFuOjp0aWVyKCkgY29uc3QgLT4gVGllcgogICAgIGNhc2UgSklU
Q29tcGlsYXRpb25Nb2RlOjpCYXNlbGluZToKICAgICAgICAgcmV0dXJuIFRpZXI6OkJhc2VsaW5l
OwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2RlOjpERkc6CisgICAgY2FzZSBKSVRDb21waWxh
dGlvbk1vZGU6OlVubGlua2VkREZHOgogICAgICAgICByZXR1cm4gVGllcjo6REZHOwogICAgIGNh
c2UgSklUQ29tcGlsYXRpb25Nb2RlOjpGVEw6CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6
OkZUTEZvck9TUkVudHJ5OgpAQCAtMTQ1LDcgKzE0Niw3IEBAIGJvb2wgSklUUGxhbjo6cmVwb3J0
Q29tcGlsZVRpbWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gT3B0aW9uczo6cmVwb3J0Q29tcGls
ZVRpbWVzKCkKICAgICAgICAgfHwgKE9wdGlvbnM6OnJlcG9ydEJhc2VsaW5lQ29tcGlsZVRpbWVz
KCkgJiYgbV9tb2RlID09IEpJVENvbXBpbGF0aW9uTW9kZTo6QmFzZWxpbmUpCi0gICAgICAgIHx8
IChPcHRpb25zOjpyZXBvcnRERkdDb21waWxlVGltZXMoKSAmJiBtX21vZGUgPT0gSklUQ29tcGls
YXRpb25Nb2RlOjpERkcpCisgICAgICAgIHx8IChPcHRpb25zOjpyZXBvcnRERkdDb21waWxlVGlt
ZXMoKSAmJiBpc0RGRygpKQogICAgICAgICB8fCAoT3B0aW9uczo6cmVwb3J0RlRMQ29tcGlsZVRp
bWVzKCkgJiYgaXNGVEwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQbGFuLmgKaW5k
ZXggOWE4ZGY0YTc0OTYwYjlkZDA4N2JmMzdiNTMxYjAyNGZhMWExM2I0NS4uZTJiMDRmN2EyZWY5
ZTc2ZWY1OTNlOGJkMTk0Y2ZjYjcwNDFjNjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
bGFuLmgKQEAgLTU2LDcgKzU2LDkgQEAgY2xhc3MgSklUUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxKSVRQbGFuPiB7CiAgICAgSklUQ29tcGlsYXRpb25Nb2RlIG1vZGUoKSBjb25z
dCB7IHJldHVybiBtX21vZGU7IH0KIAogICAgIEpJVFBsYW5TdGFnZSBzdGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhZ2U7IH0KKyAgICBib29sIGlzREZHKCkgY29uc3QgeyByZXR1cm4gOjpKU0M6
OmlzREZHKG1fbW9kZSk7IH0KICAgICBib29sIGlzRlRMKCkgY29uc3QgeyByZXR1cm4gOjpKU0M6
OmlzRlRMKG1fbW9kZSk7IH0KKyAgICBib29sIGlzVW5saW5rZWQoKSBjb25zdCB7IHJldHVybiA6
OkpTQzo6aXNVbmxpbmtlZChtX21vZGUpOyB9CiAKICAgICBlbnVtIGNsYXNzIFRpZXIgeyBCYXNl
bGluZSA9IDAsIERGRyA9IDEsIEZUTCA9IDIsIENvdW50ID0gMyB9OwogICAgIFRpZXIgdGllcigp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAz
OGM2Nzk0OWZkZGYwNzNhODhmYTU1ODI5NzJjOTI1YzE2MWNkZWQ0Li4xYzMxMjc1NGQwYzM5YTIx
YWI2MDBkNzZlYTVjOTVkNTllY2RjNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyU2V0LmNwcApAQCAtMjAwLDE2ICsyMDAsMTggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJT
ZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICNlbGlmIENQVShYODZfNjQp
CiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MyID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lz
dGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BS
SW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxzZQogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86
OnJlZ0NTNCA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAgICBzdGF0aWNfYXNzZXJ0
KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIsICIiKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzYpOwogI2VuZGlmCkBAIC0yMTgsOSArMjIwLDEwIEBAIFJlZ2lz
dGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwogI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUo
UklTQ1Y2NCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdDUzcgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7Ci0gICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbHNlCkBAIC0yMzYsMTcgKzIz
OSwyMCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
CiAjZWxpZiBDUFUoWDg2XzY0KQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzIpOwogI2lmICFPUyhXSU5ET1dTKQotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVn
Q1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MyID09IEdQUkluZm86OmNvbnN0YW50c1Jl
Z2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1My
KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CisgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0gICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRpZgpAQCAtMjU0LDggKzI2MCwxMCBA
QCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MxKTsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzcgPT0gR1BSSW5m
bzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4
ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbHNlCkBAIC0yNzIsOCArMjgwLDgg
QEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMSk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0g
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NT
NCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwogI2VsaWYgQ1BV
KEFSTTY0KQpAQCAtMjg2LDggKzI5NCw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxD
YWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M3KTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5
ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
cik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1M5KTsKICAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MwKTsKQEAgLTMw
Nyw4ICszMTUsOCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lz
dGVycygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7Ci0gICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdD
UzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuaAppbmRleCBjMDMzM2QzNDJiMDliMDMwNDAxMGY0NDYyODQzZmMwODk0
ODI5ZWU0Li4xMDhhY2FkMzI1MzUwNTcwYTJlMDdlMTFiOWMxODIxOTM0Yzg2M2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0zOTUsMTMgKzM5NSwxMyBAQCBz
dHJ1Y3QgUmVnaXN0ZXJzIHsKIAogI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdD
UzE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzI7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpjb250YW50c1Jl
Z2lzdGVyOwogI2VsaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1MzOwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1M0OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXI7CiAj
ZWxpZiBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzY7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzc7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlcjsKICNlbGlmIENQVShN
SVBTKSB8fCBDUFUoQVJNX1RIVU1CMikKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZXRh
ZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1MwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1MxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGE4ZTdjNzM5OWQ1ODFhNTk2
MGQwYWE3YWE3MjQzMzVkYjAzNTRjNzUuLjEzYjE3OGNmY2Q3MzZiMDhmNjRjOTE4MjRkMDJhMDI3
YTAzOTBjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTI2MjUsNyArMjYyNSw3IEBAIGlmIEpJVAogICAgIG1hY3Jv
IGxvYWRCYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCiAgICAgICAgICMgQmFzZWxpbmUgdXNlcyBM
TEludCdzIFBCIHJlZ2lzdGVyIGZvciBpdHMgSklUIGNvbnN0YW50IHBvb2wuCiAgICAgICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCBQQgotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYmFzZWxp
bmVKSVREYXRhW1BCXSwgUEIKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ppdERhdGFbUEJd
LCBQQgogICAgIGVuZAogCiAgICAgbWFjcm8gc2V0dXBSZXR1cm5Ub0Jhc2VsaW5lQWZ0ZXJDaGVj
a3BvaW50RXhpdElmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwCmluZGV4IDNmYmUyNTE5MjVh
ZGIzODNiNzhiZTVhMWVkMWUyY2U0NWJiODgzMzkuLjFmMjY3YzkyNjNjYzY4YmI0ZDIzYTAyYTdm
YmI3MTFmYzFlNGFiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNwcApAQCAtNDIsNiArNDIsOSBAQCB2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQcm9maWxlcjo6Q29tcGls
YXRpb25LaW5kIGtpbmQpCiAgICAgY2FzZSBKU0M6OlByb2ZpbGVyOjpERkc6CiAgICAgICAgIG91
dC5wcmludCgiREZHIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UHJvZmlsZXI6
OlVubGlua2VkREZHOgorICAgICAgICBvdXQucHJpbnQoIlVubGlua2VkREZHIik7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIEpTQzo6UHJvZmlsZXI6OkZUTDoKICAgICAgICAgb3V0LnByaW50
KCJGVEwiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaAppbmRleCBhYWVmZDRiNDZm
YTgzNjg0Njc3NmE3NmYyY2IyYzIzNGQ3OGM0M2RmLi4yMTA0YWIwNWNmMjYzZjEyZWQ5YzdjZjll
MTI2OWJjZGQ5ODY5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaApAQCAtMzEsOCArMzEsOSBAQCBlbnVt
IENvbXBpbGF0aW9uS2luZCB7CiAgICAgTExJbnQsCiAgICAgQmFzZWxpbmUsCiAgICAgREZHLAor
ICAgIFVubGlua2VkREZHLAogICAgIEZUTCwKLSAgICBGVExGb3JPU1JFbnRyeQorICAgIEZUTEZv
ck9TUkVudHJ5LAogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBiNDY5M2Y5MWM2MDdk
OGQwNzQ1OTQ2NDZlOGRjNDM3MmU5YmM5OWU2Li43YjljYTI4MTIxMDhiMTBjYzc4NTYzYTU1Yjgx
N2EwYTI5NGVmODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyLmgKQEAgLTg4LDYgKzg4LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAgICAg
dm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUluQnl0
ZXMoKSk7IH0KKyAgICB2b2lkKiBkYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEuZ2V0VW5zYWZlKCk7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBjb25z
dCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CkBAIC0xMzYsNiArMTM3LDkgQEAgY2xhc3MgQXJyYXlC
dWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAgICBp
bmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29uc3Q7
CiAgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CisKKyAgICBpbmxpbmUgdm9p
ZCogZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCk7CisgICAgaW5saW5lIGNvbnN0IHZvaWQqIGRh
dGFXaXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNoYXJl
ZCgpOwogICAgIHZvaWQgc2V0U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CkBA
IC0yMDEsNiArMjA1LDE2IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29uc3QK
ICAgICByZXR1cm4gbV9jb250ZW50cy5kYXRhKCk7CiB9CiAKK3ZvaWQqIEFycmF5QnVmZmVyOjpk
YXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKQoreworICAgIHJldHVybiBtX2NvbnRlbnRzLmRhdGFX
aXRob3V0UEFDVmFsaWRhdGlvbigpOworfQorCitjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0
YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50cy5k
YXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKTsKK30KKwogc2l6ZV90IEFycmF5QnVmZmVyOjpieXRl
TGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZW50cy5zaXplSW5CeXRlcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlld0lubGluZXMuaAppbmRleCBkODViMzI4MzA3NjJhOTA4MjAxY2I5YzQ1YzkyOTE2OWExYzE1
NTY1Li5mZTNmNWNjM2E1Y2QxM2UxNTg5N2M3YTliMmVmNTFiNmEyMzg3ODdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lu
bGluZXMuaApAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVmZmVy
Vmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIH0KIAogICAgIHB0cmRpZmZfdCBkZWx0YSA9Ci0g
ICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRpb24o
KSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpOworICAgICAgICBiaXR3
aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCkpOwogCiAg
ICAgc2l6ZV90IHJlc3VsdCA9IHN0YXRpY19jYXN0PHNpemVfdD4oZGVsdGEpOwogICAgIGlmIChy
ZXF1ZXN0ZXIgPT0gTXV0YXRvcikK
</data>
<flag name="commit-queue"
          id="482366"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454648</attachid>
            <date>2022-03-14 19:15:37 -0700</date>
            <delta_ts>2022-03-14 19:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220314191536.patch</filename>
            <type>text/plain</type>
            <size>252187</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
N2M5YjFjZGFkNTg1YmUxYjU4Y2IwOWI4ZWUyMTllMDI4MzhhNWQ1Li44Y2U0ODQ4ZGRkNDZhMTMx
MjA3NGM3MDdjNDk5YjJhODNhMTM1NGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTYgQEAKKzIwMjItMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXJQdHIpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0
cmFuc2ZlclB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
SklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01h
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldERGR0pJ
VERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxv
Y2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OndhdGNoQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6d2F0Y2hDb25kaXRpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
d2F0Y2hHbG9iYWxQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnRyeUdldENv
bnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRDb25zdGFu
dENsb3N1cmVWYXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZp
ZXcpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpnZXRSZWdFeHBQcm90b3R5cGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNj
ZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2FuRG9GYXN0U3ByZWFkKToKKyAgICAg
ICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAg
ICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBp
bGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6
VW5saW5rZWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQ6Om1hdGVyaWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudDo6cG9rZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtQdHIpOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAg
KEpTQzo6REZHOjpQbGFuOjphZGRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZH
OjpQbGFuOjpmaW5hbGl6ZUpJVERhdGEpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAg
ICAgICogZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEdldENhbGxlZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQ
cml2YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hX
aXRoU2NvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
aW5nU2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Vy
cmVudEJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrVHJhcHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbik6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJh
bmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAq
IGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRDb2Rl
QmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxw
ZXJzOjpwb2tlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6
R1BSSW5mbzo6dG9SZWdpc3Rlcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TWF0ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDb21waWxhdGlvbk1vZGUuY3BwOgorICAgICAgICAo
V1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBqaXQvSklUQ29tcGlsYXRpb25Nb2RlLmg6
CisgICAgICAgIChKU0M6OmlzREZHKToKKyAgICAgICAgKEpTQzo6aXNVbmxpbmtlZCk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGppdC9KSVRQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUGxhbjo6dGllciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpJVFBsYW46OnJlcG9ydENvbXBpbGVUaW1lcyBjb25zdCk6
CisgICAgICAgICogaml0L0pJVFBsYW4uaDoKKyAgICAgICAgKEpTQzo6SklUUGxhbjo6aXNERkcg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKSVRQbGFuOjppc1VubGlua2VkIGNvbnN0KToKKyAgICAg
ICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpm
dGxDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmg6CisgICAg
ICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNv
bnRlbnRzOjpkYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6ZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGFXaXRob3V0UEFDVmFsaWRhdGlvbiBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvZmZzZXRPZkdsb2JhbFRoaXMp
OgorCiAyMDIyLTAzLTExICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dMaWJdIEV4cG9zZSBBcnJheUJ1ZmZlciBpbiB0aGUgcHVibGljIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAppbmRleCA2MzM3NzNhZWVjOWQxYzk2N2ZhOThhNWFjYjJhMTI0NTJlYjI1MDdj
Li5jOGQ3ZTdkZGRhMzY0MmM0MGVlNGY1NDU4Yjk4ZmJlZDkwNzlkMjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApA
QCAtMTk2MCw2ICsxOTYwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgc3RvcmU2NChkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHRyYW5zZmVyNjQoQWRk
cmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHN0b3JlNjQo
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpLCBkZXN0KTsKKyAgICB9
CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgRGF0YUxhYmVs
MzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3Mg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGxhYmVsKHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NW
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVND
VjY0LmgKaW5kZXggMzY0Njg2ZGZmNjg5OTRkZWFhMDRlOTU2NjM2YWQ2MmYwMmVjMTE1NS4uYjNi
ZjZlYmY5NzAyMTUzNjgyOGQyOGQwMWFkNDgwYzM1OGNiOWYyMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCkBA
IC0xMTcxLDYgKzExNzEsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJSSVNDVjY0IDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNkSW5zbih0ZW1wLm1lbW9yeSgpLCBpbW1SZWdpc3RlciwgSW1tOjpTPDA+KCkpOwogICAgIH0K
IAorICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsK
KyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YT4oKTsKKyAgICAgICAgbG9hZDY0KHNyYywg
dGVtcC5kYXRhKCkpOworICAgICAgICBzdG9yZTY0KHRlbXAuZGF0YSgpLCBkZXN0KTsKKyAgICB9
CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdG9y
ZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZElt
bTMyKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJm
MjkyOGVmNDYzLi4xYmVjOWU4NTViZmNhODFiMDkxNDQ4YWRhY2Q1MmY4ZmYxZTU3NjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCkBAIC0xMDI2LDYgKzEwMjYsMTcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZf
NjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAgICBtb3ZlKGltbSwg
c2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNjcmF0Y2hS
ZWdpc3RlcigpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKICAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVyNjQoQWRkcmVzcyBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKKyAgICAgICAgc3RvcmU2NChzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7CisgICAgfQor
CisgICAgdm9pZCB0cmFuc2ZlclB0cihBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsK
KyAgICAgICAgdHJhbnNmZXI2NChzcmMsIGRlc3QpOworICAgIH0KICAgICAKICAgICBEYXRhTGFi
ZWwzMiBzdG9yZTY0V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggMDk4YWVkOTM1YTY4ZjdkNjY4N2JkMzUyMzI1MzA3N2YzMWVkMTlmMi4u
MjU5NmY4MzQ5MDZiM2Q4MWRjM2M3MzQzN2ViMTIxMzZkMDJlZDFhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTc4Nyw5ICs3ODcsOSBAQCB2
b2lkIENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5l
SklUQ29kZT4gaml0Q29kZSkKIAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgICAgICBBU1NFUlQoIW1fYmFzZWxpbmVKSVREYXRhKTsKLSAgICAg
ICAgbV9iYXNlbGluZUpJVERhdGEgPSBCYXNlbGluZUpJVERhdGE6OmNyZWF0ZShqaXRDb2RlLT5t
X2NvbnN0YW50UG9vbC5zaXplKCkpOwotICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+bV9zdHVi
SW5mb3MgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0Q29kZS0+bV91bmxpbmtl
ZFN0dWJJbmZvcy5zaXplKCkpOworICAgICAgICBBU1NFUlQoIW1faml0RGF0YSk7CisgICAgICAg
IGF1dG8gYmFzZWxpbmVKSVREYXRhID0gQmFzZWxpbmVKSVREYXRhOjpjcmVhdGUoaml0Q29kZS0+
bV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJ
bmZvcyA9IEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPihqaXRDb2RlLT5tX3VubGlua2Vk
U3R1YkluZm9zLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgdW5saW5rZWRDYWxsTGlua0lu
Zm8gOiBqaXRDb2RlLT5tX3VubGlua2VkQ2FsbHMpIHsKICAgICAgICAgICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gZ2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChsb2NrZXIs
IHVubGlua2VkQ2FsbExpbmtJbmZvLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgQVNTRVJU
KGNhbGxMaW5rSW5mbyk7CkBAIC04MDAsMjggKzgwMCwyOSBAQCB2b2lkIENvZGVCbG9jazo6c2V0
dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkK
ICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBqaXRDb2RlLT5tX2NvbnN0YW50UG9vbC5hdChpKTsK
ICAgICAgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEpJ
VENvbnN0YW50UG9vbDo6VHlwZTo6R2xvYmFsT2JqZWN0OgotICAgICAgICAgICAgICAgIG1fYmFz
ZWxpbmVKSVREYXRhLT5hdChpKSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpOworICAgICAgICAgICAg
ICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBl
OjpTdHJ1Y3R1cmVTdHViSW5mbzogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKICAgICAgICAgICAgICAg
ICBVbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvJiB1bmxpbmtlZFN0dWJJbmZvID0gaml0Q29kZS0+
bV91bmxpbmtlZFN0dWJJbmZvc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gbV9iYXNlbGluZUpJVERhdGEtPm1fc3R1YkluZm9zW2luZGV4XTsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBiYXNlbGluZUpJ
VERhdGEtPm1fc3R1YkluZm9zW2luZGV4XTsKICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0
aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8odGhpcywgdW5saW5rZWRTdHViSW5m
byk7Ci0gICAgICAgICAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPmF0KGkpID0gJnN0dWJJbmZv
OworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSAmc3R1YkluZm87CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEpJ
VENvbnN0YW50UG9vbDo6VHlwZTo6RnVuY3Rpb25EZWNsOiB7CiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRyeS5wb2ludGVyKCkpOwot
ICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IGZ1bmN0aW9uRGVjbChp
bmRleCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IGZ1bmN0aW9u
RGVjbChpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6RnVuY3Rpb25FeHByOiB7CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRy
eS5wb2ludGVyKCkpOwotICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9
IGZ1bmN0aW9uRXhwcihpbmRleCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5h
dChpKSA9IGZ1bmN0aW9uRXhwcihpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9qaXREYXRhID0g
YmFzZWxpbmVKSVREYXRhLnJlbGVhc2UoKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGNvZGVUeXBl
KCkpIHsKQEAgLTkwNiwyMCArOTA3LDI0IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAgICAg
Ly8gZGVzdHJ1Y3RvcnMuCiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRvKiBqaXREYXRh
ID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHViSW5m
byA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBzdHViSW5mby5hYm91dFRv
RGllKCk7Ci0gICAgICAgICAgICBzdHViSW5mby5kZXJlZigpOwotICAgICAgICB9Ci0gICAgfQot
I2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBmb3IgKGF1dG8qIHN0dWJJ
bmZvIDogaml0Q29kZSgpLT5kZmdDb21tb24oKS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAgICAg
IHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CiAgICAgICAgICAgICBzdHViSW5mby0+ZGVyZWYoKTsK
ICAgICAgICAgfQotICAgIH0KKyAgICAgICAgaWYgKG1faml0RGF0YSkKKyAgICAgICAgICAgIGRl
bGV0ZSBiaXR3aXNlX2Nhc3Q8REZHOjpERkdKSVREYXRhKj4obV9qaXREYXRhKTsKICNlbmRpZgor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRh
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJ
bmZvcykgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmFib3V0VG9EaWUoKTsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby5kZXJlZigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVs
ZXRlIGppdERhdGE7CisgICAgICAgIH0KKyAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0K
IApAQCAtMTI0OCwxOCArMTI1MywxNyBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNp
dGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVmlzaXRvciYgdmlzaXRvcgogICAgIH0K
IAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewot
ICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQot
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwot
ICAgICAgICB9Ci0gICAgfQotI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAg
ICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogaml0Q29kZSgpLT5kZmdDb21tb24oKS0+bV9zdHViSW5m
b3MpCiAgICAgICAgICAgICBzdHViSW5mby0+cHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7
Ci0gICAgfQogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEg
PSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6
IGppdERhdGEtPm1fc3R1YkluZm9zKQorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnByb3BhZ2F0
ZVRyYW5zaXRpb25zKHZpc2l0b3IpOworICAgICAgICB9CisgICAgfQogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xNTg1LDE1ICsxNTg5LDggQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogI2lmIEVOQUJMRShK
SVQpCiB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVKSVRJbmxpbmVDYWNoZXMoKQogewotICAgIGlm
IChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNlc3NhcnkpOwotICAgICAg
ICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcyhsb2NrZXIsIHRoaXMpOwotICAgICAg
ICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIERG
Rzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKICAgICAg
ICAgZm9yIChhdXRvKiBjYWxsTGlua0luZm8gOiBkZmdDb21tb24tPm1fY2FsbExpbmtJbmZvcykK
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dmlzaXRXZWFrKHZtKCkpOwpAQCAtMTYwMSw4ICsx
NTk4LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUpJVElubGluZUNhY2hlcygpCiAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNlc3Nhcnkp
OwogICAgICAgICAgICAgc3R1YkluZm8tPnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlz
KTsKICAgICAgICAgfQotICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChh
dXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlckJhc2UgbG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAg
ICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcyhsb2NrZXIsIHRoaXMpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogfQogI2VuZGlmCiAKQEAgLTE2ODksMTIgKzE2
OTMsOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICB9CiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBpZiAoYXV0byogaml0
RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCi0gICAgICAgICAgICAgICAgcmVzdWx0
LmFkZChzdHViSW5mby5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1
YkluZm8gPSAmc3R1YkluZm87Ci0gICAgICAgIH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAg
ICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0
Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogZGZn
Q29tbW9uLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN0dWJJbmZv
LT5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1YkluZm8gPSBzdHVi
SW5mbzsKQEAgLTE3MTAsOCArMTcxMCwxMyBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNN
YXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5pblN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmRlbGV0ZXMpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
ZGVsZXRlU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIH0KICNlbmRpZgorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJ
VERhdGEoKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRh
LT5tX3N0dWJJbmZvcykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby5j
b2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1YkluZm8gPSAmc3R1Yklu
Zm87CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShyZXN1bHQpOwpAQCAtMTcyOCwyMSArMTczMywyMSBAQCB2b2lkIENvZGVCbG9jazo6Z2V0
SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2Rl
QmxvY2s6OmZpbmRTdHViSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9i
YXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGpp
dERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBpZiAoc3R1YkluZm8uY29kZU9yaWdp
biA9PSBjb2RlT3JpZ2luKQotICAgICAgICAgICAgICAgIHJldHVybiAmc3R1YkluZm87Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
Zm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9z
KSB7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvZGVPcmlnaW4gPT0gY29kZU9yaWdpbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3R1YkluZm87CiAgICAgICAgIH0KLSAgICB9CiAjZW5k
aWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklU
RGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9z
dHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY29kZU9yaWdpbiA9PSBj
b2RlT3JpZ2luKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJnN0dWJJbmZvOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0x
NzgxLDcgKzE3ODYsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRCYXNlbGluZUpJVERhdGEoKQog
ICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKTsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCi0gICAgaWYgKGF1dG8qIGppdERh
dGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgeworICAgIGlmIChhdXRvKiBqaXREYXRhID0g
YmFzZWxpbmVKSVREYXRhKCkpIHsKICAgICAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1
c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9z
LCBjYWxsCiAgICAgICAgIC8vIGxpbmsgaW5mb3MsIG9yIGJ5IHZhbCBpbmZvcyBpZiB3ZSBkb24n
dCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVyeSB0aGVzZSBkYXRhCiAgICAgICAgIC8v
IHN0cnVjdHVyZXMgdXNpbmcgdGhlIGNvbmN1cnJlbnQgQVBJIChnZXRJQ1N0YXR1c01hcCBhbmQg
ZnJpZW5kcykgd2lsbCByZXR1cm4gbm90aGluZyBpZiB3ZQpAQCAtMTgwMiw3ICsxODA3LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKICAgICAgICAgLy8gV2UgY2Fu
IGNsZWFyIHRoaXMgYmVjYXVzZSB0aGUgREZHJ3MgcXVlcmllcyB0byB0aGVzZSBkYXRhIHN0cnVj
dHVyZXMgYXJlIGd1YXJkZWQgYnkgd2hldGhlcgogICAgICAgICAvLyB0aGVyZSBpcyBKSVQgY29k
ZS4KIAotICAgICAgICBtX2Jhc2VsaW5lSklURGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1faml0
RGF0YSA9IG51bGxwdHI7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xODQ4LDE5ICsxODUzLDE5IEBA
IHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyhjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwKICAgICB9KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
aWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICBm
b3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCi0gICAgICAgICAgICBz
dHViSW5mby52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgp
KSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0Nv
bW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgIGZvciAoYXV0byogc3R1Yklu
Zm8gOiBkZmdDb21tb24tPm1fc3R1YkluZm9zKQogICAgICAgICAgICAgc3R1YkluZm8tPnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMu
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgICAgIHZpc2l0T1NSRXhpdFRhcmdldHMobG9j
a2VyLCB2aXNpdG9yKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBq
aXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKKyAgICAgICAgICAgICAgICBzdHViSW5mby52
aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogfQpAQCAt
MzQ3NywyMSArMzQ4MiwyMiBAQCBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6
ZmluZFBDKHZvaWQqIHBjKQogCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKG1fbG9jayk7Ci0gICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERh
dGEuZ2V0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5t
X3N0dWJJbmZvcykgewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBj
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJbmZvLmNvZGVPcmlnaW47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgaWYgKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZn
Q29tbW9uKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogZGZnQ29tbW9uLT5t
X3N0dWJJbmZvcykgewogICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29udGFpbnNQQyhw
YykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHViSW5mby0+Y29kZU9yaWdpbjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQogI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBjKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdHViSW5mby5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBtX2ppdENv
ZGUtPmZpbmRQQyh0aGlzLCBwYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgzNDdiNmM3NzVjMTgyNi4u
NDU3OWFlZDc0MDA4ODhlOTBhYjgxMjYzYWZkZmE1YzA1MGM0MGEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNzksNiArNzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogI2lmIEVOQUJMRShERkdfSklUKQogbmFtZXNwYWNlIERGRyB7CitjbGFzcyBE
RkdKSVREYXRhOwogc3RydWN0IE9TUkV4aXRTdGF0ZTsKIH0gLy8gbmFtZXNwYWNlIERGRwogI2Vu
ZGlmCkBAIC0yNDcsNyArMjQ4LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5kZXhGcm9tQ2Fs
bFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKIAotICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhy
b3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhICht
X2Jhc2VsaW5lSklURGF0YSksCisgICAgLy8gQmVjYXVzZSB3ZSBtaWdodCB0aHJvdyBvdXQgYmFz
ZWxpbmUgSklUIGNvZGUgYW5kIGFsbCBpdHMgYmFzZWxpbmUgSklUIGRhdGEgKG1faml0RGF0YSks
CiAgICAgLy8geW91IG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUgbGlmZXRpbWUgb2Ygd2hl
biB5b3UgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4KICAgICAvLyBUaGUg
cmV0dXJuIHZhbHVlIG1heSBoYXZlIHJhdyBwb2ludGVycyBpbnRvIHRoaXMgZGF0YSBzdHJ1Y3R1
cmUgdGhhdCBnZXRzIHRocm93biBhd2F5LgogICAgIC8vIFNwZWNpZmljYWxseSwgeW91IG5lZWQg
dG8gZW5zdXJlIHRoYXQgbm8gR0MgY2FuIGJlIGZpbmFsaXplZCAodHlwaWNhbGx5IHRoYXQgbWVh
bnMgbm8KQEAgLTI1OCw3ICsyNTksNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgc2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNv
ZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4pOwogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkJhc2VsaW5lSklURGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1f
YmFzZWxpbmVKSVREYXRhKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZKSVREYXRh
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9qaXREYXRhKTsgfQogCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZE9wdGltaXppbmdTdHViSW5mbyhBY2Nlc3NUeXBlLCBD
b2RlT3JpZ2luKTsKIApAQCAtNTM0LDkgKzUzNSwyNSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGJhc2VsaW5lU3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGludCB0YWJsZUluZGV4KTsKICAgICBCYXNlbGluZUpJVERhdGEqIGJhc2VsaW5lSklU
RGF0YSgpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChqaXRUeXBlKCkgPT0gSklUVHlw
ZTo6QmFzZWxpbmVKSVQpOwotICAgICAgICByZXR1cm4gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCk7
CisgICAgICAgIGlmICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpCisgICAg
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEJhc2VsaW5lSklURGF0YSo+KG1faml0RGF0YSk7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKworI2lmIEVOQUJMRShERkdfSklUKQor
ICAgIHZvaWQgc2V0REZHSklURGF0YShzdGQ6OnVuaXF1ZV9wdHI8REZHOjpERkdKSVREYXRhPiYm
IGppdERhdGEpCisgICAgeworICAgICAgICBBU1NFUlQoIW1faml0RGF0YSk7CisgICAgICAgIG1f
aml0RGF0YSA9IGppdERhdGEucmVsZWFzZSgpOworICAgIH0KKworICAgIERGRzo6REZHSklURGF0
YSogZGZnSklURGF0YSgpCisgICAgeworICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGppdFR5cGUoKSkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PERGRzo6REZH
SklURGF0YSo+KG1faml0RGF0YSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNl
bmRpZgogI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mVW5saW5rZWRTd2l0Y2hK
dW1wVGFibGVzKCk7IH0KICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgcmV0dXJuIG1fdW5saW5rZWRDb2Rl
LT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsgfQpAQCAtOTM3LDcgKzk1NCw3
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFJlZlB0cjxKSVRDb2Rl
PiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKIHB1YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmFzZWxpbmVKSVREYXRhPiBtX2Jhc2VsaW5lSklURGF0YTsKKyAgICB2b2lkKiBtX2ppdERh
dGEgeyBudWxscHRyIH07CiBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKERGR19KSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IGQ5OGZiNzZlY2I2MTNkMjZmYjZmMjZkNWJhMTViM2UzZGI3ODZiMDEuLjI4ZjEyMTViMzY4ZTNl
OGEwMWYwZTE2ZDUyMTY4NjJlMGYxOGNiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNTY2LDYgKzE1NjYsMTEgQEAgdW5zaWdu
ZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBh
cmd1bWVudENvdW50SW5jbHUKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KIAorICAg
IGlmIChtX2dyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAgICAgICAgVkVSQk9TRV9MT0co
IiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNvbXBpbGF0aW9uIG1vZGUgaXMgdW5saW5rZWQgREZH
LlxuIik7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICB9CisKICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCk7CiAgICAg
aWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIFZFUkJPU0VfTE9HKCIgICAgRmFpbGluZyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCAyM2ZkNDU0N2M1OWI5MmE5MzQzNzQyYTU4NGY3ZGRj
ZGYyOTFmOWViLi40ZTAzYWEzZWRlNDI4OWUwOGMyNTg4ODI5MDhiNTRiNjNmMzlhZGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNz
IENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBKdW1waW5nCiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fR1N0WkIgZnVu
Y3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0ciBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgY29udGlndW91c1N0cnVjdHVy
ZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0b3JhZ2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQgZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJl
IGNvbnRpZ3VvdXNTdHJ1Y3R1cmUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdG9yYWdlU3Ry
dWN0dXJlLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCiAgICAgICAgIDogSnVt
cGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0
KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9jb250aWd1b3Vz
U3RydWN0dXJlKGNvbnRpZ3VvdXNTdHJ1Y3R1cmUpCkBAIC0xMTUsNyArMTE1LDcgQEAgY2xhc3Mg
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIEp1bXBpbmcKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fY29udGlndW91c1N0
cnVjdHVyZTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fYXJyYXlTdG9yYWdlT3JDb250aWd1
b3VzU3RydWN0dXJlOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIgbV9nbG9iYWxPYmplY3Q7CisgICAgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQgbV9nbG9iYWxPYmplY3Q7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJS
ZWcgbV9zdG9yYWdlR1BSOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBt
X3BsYW5zOwpAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhW
YXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsCiBwdWJs
aWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVT
aXplU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlvbl9HU3RaQiBmdW5jdGlvbiwK
LSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIGds
b2JhbE9iamVjdCwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBz
dG9yYWdlR1BSKQorICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudCBnbG9iYWxPYmplY3QsIEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBzaXpl
R1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKICAgICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0
b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9mdW5j
dGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX3Jlc3VsdEdQUihyZXN1bHRHUFIpCkBAIC0xNTIs
NyArMTUyLDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJl
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwKIAogICAgIFBfSklUT3BlcmF0aW9u
X0dTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9iamVjdDsKKyAgICBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudCBtX2dsb2JhbE9iamVjdDsKICAgICBHUFJSZWcgbV9zdHJ1Y3R1cmVHUFI7
CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAxNDRjYzE5Mjg3M2QwNzZlMWVmZmJm
ODRkZGU2ZTE2MWE4NWMxNzc4Li42M2JmNGJjZWRlMTRkNDA4NDE1MWViYmEwYWNlMzNlNDE2ZjYw
ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTA2MSw2ICsx
MDYxLDkgQEAgdm9pZCBHcmFwaDo6Y2xlYXJGbGFnc09uQWxsTm9kZXMoTm9kZUZsYWdzIGZsYWdz
KQogCiBib29sIEdyYXBoOjp3YXRjaENvbmRpdGlvbihjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYga2V5KQogeworICAgIGlmIChtX3BsYW4uaXNVbmxpbmtlZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICBpZiAoIWtleS5pc1dhdGNoYWJsZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTEwODEsNiArMTA4NCw5IEBAIGJvb2wgR3JhcGg6OndhdGNoQ29uZGl0aW9u
KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkpCiAKIGJvb2wgR3JhcGg6OndhdGNo
Q29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYga2V5cykKIHsKKyAg
ICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
aWYgKCFrZXlzLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDk4LDYg
KzExMDQsOSBAQCBib29sIEdyYXBoOjppc1NhZmVUb0xvYWQoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKIAogYm9vbCBHcmFwaDo6d2F0Y2hHbG9iYWxQcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQogewor
ICAgIGlmIChtX3BsYW4uaXNVbmxpbmtlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVy
XTsKICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBXYXRjaHBvaW50U2V0LCBhbmQgaXQgaXMg
YWxyZWFkeSBpbnZhbGlkYXRlZCwgaXQgbWVhbnMgdGhhdCB0aGlzIHNjb3BlIG9wZXJhdGlvbiBt
dXN0IGJlIGNoYW5nZWQgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLAog
ICAgIC8vIGJ1dCB3ZSBzdGlsbCBoYXZlIHN0YWxlIG1ldGFkYXRhIGhlcmUgc2luY2Ugd2UgaGF2
ZSBub3QgeWV0IGV4ZWN1dGVkIHRoaXMgYnl0ZWNvZGUgb3BlcmF0aW9uIHNpbmNlIHRoZSBpbnZh
bGlkYXRpb24uIEp1c3QgZW1pdHRpbmcgRm9yY2VPU1JFeGl0IHRvIHVwZGF0ZSB0aGUKQEAgLTEy
NjcsNiArMTI3Niw5IEBAIHVuc2lnbmVkIEdyYXBoOjpyZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JF
eGVjdXRpb25BbmRFeGl0KCkKIEpTVmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50UHJvcGVydHko
CiAgICAgSlNWYWx1ZSBiYXNlLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKKyAgICBpZiAobV9wbGFuLmlzVW5saW5r
ZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKwogICAgIGlmICghYmFzZSB8fCAhYmFz
ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIApAQCAtMTM1Miw2
ICsxMzY0LDkgQEAgQWJzdHJhY3RWYWx1ZSBHcmFwaDo6aW5mZXJyZWRWYWx1ZUZvclByb3BlcnR5
KAogSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRDbG9zdXJlVmFyKEpTVmFsdWUgYmFzZSwg
U2NvcGVPZmZzZXQgb2Zmc2V0KQogewogICAgIC8vIFRoaXMgaGFzIGFuIGF3ZXNvbWUgY29uY3Vy
cmVuY3kgc3RvcnkuIFNlZSBjb21tZW50IGZvciBHZXRHbG9iYWxWYXIgaW4gQnl0ZUNvZGVQYXJz
ZXIuCisKKyAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBA
IC0xNDAyLDYgKzE0MTcsOCBAQCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudENsb3N1cmVW
YXIoTm9kZSogbm9kZSwgU2NvcGVPZmZzZXQgb2Zmc2V0KQogCiBKU0FycmF5QnVmZmVyVmlldyog
R3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyhKU1ZhbHVlIHZhbHVlKQogeworICAgIGlmIChtX3Bs
YW4uaXNVbmxpbmtlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihtX3ZtLCB2YWx1ZSk7CkBAIC0xNzMw
LDYgKzE3NDcsOSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgogCiBib29sIEdyYXBoOjpnZXRS
ZWdFeHBQcm90b3R5cGVQcm9wZXJ0eShKU09iamVjdCogcmVnRXhwUHJvdG90eXBlLCBTdHJ1Y3R1
cmUqIHJlZ0V4cFByb3RvdHlwZVN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNW
YWx1ZSYgcmV0dXJuSlNWYWx1ZSkKIHsKKyAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcmVnRXhw
UHJvdG90eXBlU3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKTsKICAgICBpZiAoIWlzVmFs
aWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc3Nyw2ICsxNzk3
LDkgQEAgYm9vbCBHcmFwaDo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFVuaXF1ZWRTdHIKIAogYm9vbCBHcmFwaDo6Y2FuT3B0aW1pemVT
dHJpbmdPYmplY3RBY2Nlc3MoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKIHsKKyAgICBp
ZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYg
KGhhc0V4aXRTaXRlKGNvZGVPcmlnaW4sIEJhZENhY2hlKSB8fCBoYXNFeGl0U2l0ZShjb2RlT3Jp
Z2luLCBCYWRDb25zdGFudENhY2hlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODI5
LDYgKzE4NTIsOSBAQCBib29sIEdyYXBoOjpjYW5Eb0Zhc3RTcHJlYWQoTm9kZSogbm9kZSwgY29u
c3QgQWJzdHJhY3RWYWx1ZSYgdmFsdWUpCiAgICAgLy8gVGhlIHBhcmFtZXRlciAndmFsdWUnIGlz
IHRoZSBBYnN0cmFjdFZhbHVlIGZvciBjaGlsZDEgKHRoZSB0aGluZyBiZWluZyBzcHJlYWQpLgog
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNwcmVhZCk7CiAKKyAgICBpZiAobV9wbGFuLmlzVW5s
aW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSAhPSBBcnJheVVzZSkgewogICAgICAgICAvLyBOb3RlOiB3ZSBvbmx5IHNwZWN1
bGF0ZSBvbiBBcnJheVVzZSB3aGVuIHdlJ3ZlIHNldCB1cCB0aGUgbmVjZXNzYXJ5IHdhdGNocG9p
bnRzCiAgICAgICAgIC8vIHRvIHByb3ZlIHRoYXQgdGhlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyBu
b24tb2JzZXJ2YWJsZSBzdGFydGluZyBmcm9tIEFycmF5UHJvdG90eXBlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGZiOTAwNDFjNWFjMGY4NTBkODE1MDk5ODUyYWIyMjA5
MjY4MDQ4YjUuLmQwZmE3NmJmMGMwN2UxYWFjNTg4YmIwNTgyYmRjOWUyZmQzNTM3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTQ3NiwxOSArNDc2LDYgQEAgY2xhc3Mg
R3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICByZXR1cm4g
anNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9iamVj
dCwgb2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICB9CiAgICAgCi0gICAgU2NyaXB0
RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0
dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKLSAgICAgICAgCi0gICAgICAgIHJl
dHVybiBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KTsKLSAgICB9Ci0gICAgCi0gICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihjb25z
dCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGV4ZWN1dGFi
bGVGb3IoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKSk7Ci0gICAgfQotICAgIAogICAgIENv
ZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUpCiAgICAgewogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKQEAgLTUwMyw2ICs0
OTAsOCBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAg
ICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxp
ZChjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKKyAgICAgICAgaWYgKG1fcGxh
bi5pc1VubGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmlzU3RpbGxWYWxpZCgpOwogICAgIH0KICAgICAKQEAgLTc5NSwxMiArNzg0LDE3
IEBAIGNsYXNzIEdyYXBoIGZpbmFsIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAg
IGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChOb2RlKiBub2RlKQogICAg
IHsKKyAgICAgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgcmV0dXJuIHdhdGNocG9pbnRz
KCkuaXNXYXRjaGVkKGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOwog
ICAgIH0KIAogICAgIGJvb2wgaXNXYXRjaGluZ0dsb2JhbE9iamVjdFdhdGNocG9pbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0KQogICAgIHsK
KyAgICAgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICAgICAgaWYgKHdhdGNocG9pbnRzKCkuaXNXYXRjaGVkKHNldCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtODE5LDYgKzgxMyw5IEBAIGNsYXNzIEdyYXBoIGZpbmFs
IDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAgIGJvb2wgaXNXYXRjaGluZ0FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQoTm9kZSogbm9kZSkKICAgICB7CisgICAgICAgIGlm
IChtX3BsYW4uaXNVbmxpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0ID0gZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CiAgICAgICAg
IHJldHVybiBpc1dhdGNoaW5nR2xvYmFsT2JqZWN0V2F0Y2hwb2ludChnbG9iYWxPYmplY3QsIHNl
dCk7CkBAIC04MjYsNiArODIzLDkgQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVh
bCBTY2FubmFibGUgewogCiAgICAgYm9vbCBpc1dhdGNoaW5nTnVtYmVyVG9TdHJpbmdXYXRjaHBv
aW50KE5vZGUqIG5vZGUpCiAgICAgeworICAgICAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldCA9IGdsb2JhbE9iamVjdC0+bnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50U2V0KCk7CiAgICAgICAgIHJldHVybiBpc1dhdGNoaW5nR2xvYmFsT2JqZWN0
V2F0Y2hwb2ludChnbG9iYWxPYmplY3QsIHNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5oCmluZGV4IDQ1M2MzZGNkYWVkMWYzYzNjMmFmMTRiODEyYjhhMjNhNTZkMTFjYTIu
LjQwNTg3ZTlhZDVlZDkwNTFkMWMyMTBiY2ExZGZlYjhiYjVlZDEyNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC00OSw2ICs0OSwyMyBAQCBuYW1lc3BhY2UgREZH
IHsKIAogY2xhc3MgSklUQ29tcGlsZXI7CiAKK2NsYXNzIERGR0pJVERhdGEgZmluYWwgOiBwdWJs
aWMgVHJhaWxpbmdBcnJheTxERkdKSVREYXRhLCB2b2lkKj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJs
aWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJyYXk8REZHSklURGF0YSwgdm9pZCo+Owor
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBjcmVhdGUodW5zaWduZWQg
cG9vbFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERGR0pJVERh
dGE+IHsgbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHBvb2xT
aXplKSkpIERGR0pJVERhdGEocG9vbFNpemUpIH07CisgICAgfQorCisgICAgZXhwbGljaXQgREZH
SklURGF0YSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uoc2l6ZSkKKyAgICB7CisgICAg
fQorfTsKKwogY2xhc3MgSklUQ29kZSBmaW5hbCA6IHB1YmxpYyBEaXJlY3RKSVRDb2RlIHsKIHB1
YmxpYzoKICAgICBKSVRDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCmluZGV4IDQ1ZjM0M2YwZGQwNTkwN2YwOTkxN2RiMDNhMWY0MTRkZDY4MDE0
Y2IuLmZkYjRlZjgzOTlhODZhYjQ4YWUyMmFjZDVlYTBlZTAzODZlNDQ5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKKyNpbmNsdWRlICJQ
cm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJW
TS5oIgogCkBAIC0xMTAsMTMgKzExMSwyNCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50
cnkoKQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlv
dXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFs
IHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgog
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgIGlmIChtX2NvZGVC
bG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCisgICAgICAgIGVtaXRQdXRDb2RlQmxv
Y2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJJbmZvOjpyZWdUMCwgbV9jb2RlQmxvY2stPmlzQ29uc3Ry
dWN0b3IoKSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENh
bGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRp
ZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgp
CiB7CiAgICAgZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjpjb25z
dGFudHNSZWdpc3Rlcik7CisgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNvbnN0YW50c1Jl
Z2lzdGVyLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURGF0YSgpKSwgR1BSSW5mbzo6Y29uc3RhbnRz
UmVnaXN0ZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeUV4
ZWN1dGlvbkZsYWcoKQpAQCAtMzQwLDcgKzM1Miw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGUoKQogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgbV9zcGVjdWxhdGl2
ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlv
blRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CisgICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1l
Um9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKIAogICAgIC8vIEdlbmVyYXRlIHNsb3cgcGF0aCBjb2RlLgog
ICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlcik7CkBAIC00MTMsNyArNDI2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUZ1bmN0aW9uKCkKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAg
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIG1fc3Bl
Y3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihv
cGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOworICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJy
b3IsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgCiAgICAgLy8gVGhlIGZhc3QgZW50cnkg
cG9pbnQgaW50byBhIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBjb3JyZWN0IG51bWJlciBv
ZiBhcmd1bWVudHMKICAgICAvLyBoYXZlIGJlZW4gcGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5
IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2ludCB3aGVyZSB3ZSBjYW4gc3RhdGljYWxseQpAQCAtNDMy
LDcgKzQ0Niw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgICAg
IGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAgICAg
ICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9zcGVjdWxhdGl2
ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29kZUJs
b2NrLT5pc0NvbnN0cnVjdG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3Bl
cmF0aW9uQ2FsbEFyaXR5Q2hlY2ssIEdQUkluZm86OnJlZ1QwLCBtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpOworICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIG1fc3BlY3VsYXRp
dmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVC
bG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9w
ZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgYnJhbmNoVGVzdDMyKFpl
cm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMp
OwpAQCAtNjQzLDYgKzY1OSwzNiBAQCB2b2lkIEpJVENvbXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRy
eUJ1ZmZlcigpCiAgICAgfQogfQogCit2b2lkIEpJVENvbXBpbGVyOjpsb2FkVW5saW5rZWRDb25z
dGFudChVbmxpbmtlZENvbnN0YW50IGNvbnN0YW50LCBHUFJSZWcgZGVzdCkKK3sKKyAgICBjb25z
dGFudC5tYXRlcmlhbGl6ZSgqdGhpcywgZGVzdCk7Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6OnN0
b3JlVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0YW50IGNvbnN0YW50LCBBZGRyZXNzIGRl
c3QpCit7CisgICAgY29uc3RhbnQucG9rZSgqdGhpcywgZGVzdCk7Cit9CisKK0pJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50OjpVbmxpbmtlZENvbnN0YW50KEdyYXBoJiBncmFwaCwgSlNDZWxs
KiBjZWxsKQorICAgIDogbV9pbmRleChncmFwaC5tX3BsYW4uYWRkVW5saW5rZWRDb25zdGFudChT
cGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIoZ3JhcGgsIGNlbGwpKSkK
K3sKK30KKworSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6OlVubGlua2VkQ29uc3RhbnQo
R3JhcGgmIGdyYXBoLCB2b2lkKiBwb2ludGVyLCBOb25DZWxsVGFnKQorICAgIDogbV9pbmRleChn
cmFwaC5tX3BsYW4uYWRkVW5saW5rZWRDb25zdGFudChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIocG9pbnRlcikpKQoreworfQorCit2b2lkIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
OjptYXRlcmlhbGl6ZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHJlc3VsdEdQUikKK3sKKyAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVn
aXN0ZXIsIERGR0pJVERhdGE6Om9mZnNldE9mRGF0YSgpICsgc2l6ZW9mKHZvaWQqKSAqIG1faW5k
ZXgpLCByZXN1bHRHUFIpOworfQorCit2b2lkIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
Ojpwb2tlKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykK
K3sKKyAgICBqaXQudHJhbnNmZXJQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNv
bnN0YW50c1JlZ2lzdGVyLCBERkdKSVREYXRhOjpvZmZzZXRPZkRhdGEoKSArIHNpemVvZih2b2lk
KikgKiBtX2luZGV4KSwgYWRkcmVzcyk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCmluZGV4IDk4NDI3NjgzOGQzZTg5MGM1MTEzNmUwYTNkMThlZTBiOTcy
NDZjMTcuLjYzZjI4NjQwYjE5NmZmMGE1ZTExMDFhZmRmNDcyNzI3ZTA0ZTQ0YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTI1NSwxNCArMjU1LDYg
QEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgICAg
IGFkZFdlYWtSZWZlcmVuY2Uoc3RydWN0dXJlU2V0W2ldKTsKICAgICB9CiAgICAgCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtQdHIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBUIGxlZnQsIEpTQ2VsbCogd2Vha1B0cikKLSAgICB7Ci0gICAgICAgIEp1bXAg
cmVzdWx0ID0gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW1QdHIod2Vha1B0cikpOwot
ICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHdlYWtQdHIpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgSnVtcCBicmFuY2hXZWFr
U3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHdlYWtTdHJ1Y3R1cmUpCiAgICAgewpAQCAtMzEyLDYgKzMwNCwzNSBAQCBjbGFzcyBK
SVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBlbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKICAgICB9CiAKKyAgICBjbGFzcyBVbmxpbmtlZENvbnN0YW50IGZpbmFsIDogcHVibGljIEND
YWxsSGVscGVyczo6Q29uc3RhbnRNYXRlcmlhbGl6ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
ZW51bSBOb25DZWxsVGFnIHsgTm9uQ2VsbCB9OworICAgICAgICBVbmxpbmtlZENvbnN0YW50KEdy
YXBoJiwgSlNDZWxsKik7CisKKyAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZShDQ2FsbEhlbHBlcnMm
LCBHUFJSZWcpOworICAgICAgICB2b2lkIHBva2UoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0
aWMgVW5saW5rZWRDb25zdGFudCBub25DZWxsUHRyKEdyYXBoJiBncmFwaCwgVCogcG9pbnRlcikK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mX3Y8
SlNDZWxsLCBUPik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRDb25zdGFudChncmFwaCwg
cG9pbnRlciwgTm9uQ2VsbCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgVW5saW5rZWRD
b25zdGFudCBzdHJ1Y3R1cmUoR3JhcGgmIGdyYXBoLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkQ29uc3RhbnQoZ3Jh
cGgsIHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IFVubGlua2VkQ29uc3RhbnQoR3JhcGgmLCB2b2lkKiwgTm9uQ2VsbFRhZyk7CisKKyAgICAgICAg
dW5zaWduZWQgbV9pbmRleCB7IDAgfTsKKyAgICB9OworCisgICAgdm9pZCBsb2FkVW5saW5rZWRD
b25zdGFudChVbmxpbmtlZENvbnN0YW50LCBHUFJSZWcpOworICAgIHZvaWQgc3RvcmVVbmxpbmtl
ZENvbnN0YW50KFVubGlua2VkQ29uc3RhbnQsIEFkZHJlc3MpOworCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCmluZGV4IGQ2MzYxMzI5N2MyN2YzODgx
NTg2YmNhYTc3ZTNhY2NmZjRlMjY0YzcuLjVlY2U0NTY3NTUwZGEzMTZiNDI2OTNhYTU1YmY2NmVh
ZTc3MmU1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmlu
YWxpemVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fcGxhbi5jb2RlQmxvY2soKTsKIAogICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUuY29weVJlZigpKTsKKyAgICBjb2RlQmxvY2stPnNl
dERGR0pJVERhdGEobV9wbGFuLmZpbmFsaXplSklURGF0YSgpKTsKIAogI2lmIEVOQUJMRShGVExf
SklUKQogICAgIG1faml0Q29kZS0+b3B0aW1pemVBZnRlcldhcm1VcChjb2RlQmxvY2spOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggZjBlZjlhODk3MTI3NDQ4NWY0NDNj
NTQ2YTc0NjllYjc4YjIxOGQ2ZC4uYWQxYzY4Mjc5MGI2YjlmNTQ2OWY1M2I5M2MyMTg2NzdlZDRh
ZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0xMTIsNiArMTEy
LDggQEAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uS2luZCBwcm9maWxlckNvbXBpbGF0aW9uS2luZEZv
ck1vZGUoSklUQ29tcGlsYXRpb25Nb2RlIG1vZGUKICAgICAgICAgcmV0dXJuIFByb2ZpbGVyOjpE
Rkc7CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzoKICAgICAgICAgcmV0dXJuIFBy
b2ZpbGVyOjpERkc7CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OlVubGlua2VkREZHOgor
ICAgICAgICByZXR1cm4gUHJvZmlsZXI6OlVubGlua2VkREZHOwogICAgIGNhc2UgSklUQ29tcGls
YXRpb25Nb2RlOjpGVEw6CiAgICAgICAgIHJldHVybiBQcm9maWxlcjo6RlRMOwogICAgIGNhc2Ug
SklUQ29tcGlsYXRpb25Nb2RlOjpGVExGb3JPU1JFbnRyeToKQEAgLTMxNSw3ICszMTcsOCBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgfQog
CiAgICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6REZH
OiB7CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzoKKyAgICBjYXNlIEpJVENvbXBp
bGF0aW9uTW9kZTo6VW5saW5rZWRERkc6IHsKICAgICAgICAgZGZnLm1fZml4cG9pbnRTdGF0ZSA9
IEZpeHBvaW50Q29udmVyZ2VkOwogCiAgICAgICAgIFJVTl9QSEFTRShwZXJmb3JtVGllclVwQ2hl
Y2tJbmplY3Rpb24pOwpAQCAtNjc4LDYgKzY4MSwyMSBAQCB2b2lkIFBsYW46OmNsZWFuTXVzdEhh
bmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCkKICAgICB9CiB9CiAKK3Vuc2lnbmVkIFBsYW46OmFkZFVu
bGlua2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIHB0cikKK3sKKyAgICBy
ZXR1cm4gbV9jb25zdGFudFBvb2wuYWRkKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyLmFzSW50cHRy
KCkpLCBtX2NvbnN0YW50UG9vbC5zaXplKCkpLml0ZXJhdG9yLT52YWx1ZTsKK30KKworc3RkOjp1
bmlxdWVfcHRyPERGR0pJVERhdGE+IFBsYW46OmZpbmFsaXplSklURGF0YSgpCit7CisgICAgaWYg
KG1fY29uc3RhbnRQb29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byBqaXREYXRhID0gREZHSklURGF0YTo6Y3JlYXRlKG1fY29uc3RhbnRQb29sLnNpemUoKSk7
CisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jb25zdGFudFBvb2wpCisgICAgICAgIGppdERhdGEt
PmF0KHBhaXIudmFsdWUpID0gcGFpci5rZXk7CisgICAgcmV0dXJuIGppdERhdGE7Cit9CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAppbmRleCA0MDgwMzI5NmE2ZGJlMGU0N2VhMzgzM2Ri
YmYyNGE2YzI5MDNiNmUyLi5kYWVlMWUwNzE4NzQ2MmRlZDM0YmE0ZjgwZjcwZDA0YzdmYzExMjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBDb2RlQmxvY2s7CiBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgVGhyZWFkRGF0YTsKK2NsYXNz
IERGR0pJVERhdGE7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtMTAxLDYgKzEwMiw5IEBA
IGNsYXNzIFBsYW4gZmluYWwgOiBwdWJsaWMgSklUUGxhbiB7CiAgICAgRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrKiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7
IH0KICAgICB2b2lkIHNldENhbGxiYWNrKFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+
JiYgY2FsbGJhY2spIHsgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAKKyAgICB1
bnNpZ25lZCBhZGRVbmxpbmtlZENvbnN0YW50KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERGR0pJVERhdGE+IGZpbmFsaXplSklURGF0YSgpOworCiBw
cml2YXRlOgogICAgIENvbXBpbGF0aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKCkgb3ZlcnJp
ZGU7CiAgICAgCkBAIC0xMzQsNiArMTM4LDcgQEAgY2xhc3MgUGxhbiBmaW5hbCA6IHB1YmxpYyBK
SVRQbGFuIHsKICAgICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5
dGVjb2RlczsKIAogICAgIFJlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IG1fY2Fs
bGJhY2s7CisgICAgSGFzaE1hcDx2b2lkKiwgdW5zaWduZWQ+IG1fY29uc3RhbnRQb29sOwogfTsK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oCmluZGV4IGZhYmNlMDE4MmRlOTAwMjUzZjBkZjNmMGJmMmU5MzAxODdjMGZmMTQuLjY0
M2JkMjVjMDljMmEzMjAyMjQ1N2ExNWQ2MTY5NDYxOTExMjNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogY2xhc3MgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpK
dW1wPiB7CiBwdWJsaWM6CiAgICAgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Io
Ci0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBmcm9tLCBTcGVjdWxhdGl2ZUpJ
VCogaml0LCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIgZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQorICAg
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQg
Z2xvYmFsT2JqZWN0LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAg
ICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4oZnJvbSwg
aml0KQogICAgICAgICAsIG1fcmVzdWx0UmVncyhyZXN1bHRSZWdzKQogICAgICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRo
R2VuZXJhdG8KICAgICB9CiAKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdFJlZ3M7Ci0gICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX2Jhc2VSZWc7
CiAgICAgR1BSUmVnIG1fcHJvcGVydHlSZWc7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4sIDI+IG1fcGxhbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDM2MGUxODE4M2VjYmExZTBjYzA1ZDc2YzcyY2RmMTIxOWVj
Y2IxNmQuLjdmNzJjNWM3Nzc2ZWZhNzM5ZTEyMDUyMjdlZmFiYzM3ZGE1YzExZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC02MSw2
ICs2MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAi
UHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCkBAIC0yMDUsMTEg
KzIwNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUoQ29kZU9yaWdpbiBv
cmlnaW4sIEdQUlJlZyBjYWxsZWVHUFIpCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAogICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlUmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIGNhbGxlZUdQ
Uik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGlubGluZUNh
bGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAg
ICAgICAgY2FsbGVlR1BSKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQo
KS5hc0NlbGwoKSksIGNhbGxlZUdQUik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbGVl
R1BSKTsKIH0KQEAgLTY4Niw3ICs2ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRG
aWxsKGNvbnN0IFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4mIHBsYW4pCiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU2V0Q2VsbENvbnN0YW50OgogICAgICAgICBBU1NFUlQocGxhbi5ub2RlKCktPmNv
bnN0YW50KCktPnZhbHVlKCkuaXNDZWxsKCkpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIocGxhbi5ub2RlKCktPmNvbnN0YW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9q
aXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgcGxhbi5ub2RlKCktPmNvbnN0YW50KCktPnZhbHVlKCkuYXNDZWxsKCkpLCBwbGFuLmdw
cigpKTsKICAgICAgICAgYnJlYWs7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldFRy
dXN0ZWRKU0NvbnN0YW50OgpAQCAtMTE5MSwyMiArMTE4OSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBpZiAoSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1Yklu
Zm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1Yklu
Zm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwK
LSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMo
KSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAj
ZWxzZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTIyNyw3ICsxMjI1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51
bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTI3NywyMiArMTI3NSwyMiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAj
ZWxzZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52
YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywg
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAg
ICAgICAgIH0KICNlbmRpZgogCkBAIC0xMzE0LDcgKzEzMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxs
cHRyLCBiYXNlUmVncywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVn
cywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CkBAIC0xMzUyLDEyICsxMzUwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXpl
LAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQ
UiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxs
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
KTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xNDAyLDEyICsxNDAwLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5VmFsT3B0
aW1pemUsCiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
a2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5
UmVncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwKICAg
ICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
KTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
KTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtMTQ1NiwxMiArMTQ1NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJp
dmF0ZShOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCB0eXBlID09IEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJh
dGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikp
OworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6
ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRv
U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAg
ICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5
T3JCcmFuZEdQUikpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOwogICAgIH0KIAogICAgIG1f
aml0LmFkZEluQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xNDk1LDcgKzE0OTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQog
ICAgICAgICBzcGVjdWxhdGVPYmplY3Qob2JqZWN0RWRnZSwgb2JqZWN0R1BSKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hX
aXRoU2NvcGVPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1
cnJlbnRTY29wZUdQUiwgb2JqZWN0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXNoV2l0aFNjb3BlT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdEdQUik7CiAgICAgICAgIC8vIE5vIGV4Y2Vw
dGlvbiBjaGVjayBoZXJlIGFzIHdlIGRpZCBub3QgaGF2ZSB0byBjYWxsIHRvT2JqZWN0KCkuCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG9iamVjdEVkZ2UudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpOwpAQCAtMTUwMyw3ICsxNTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb2JqZWN0UmVn
cyA9IG9iamVjdC5qc1ZhbHVlUmVncygpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RSZWdzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdFJl
Z3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KICAgICAKQEAgLTE5
MjIsMTIgKzE5MjAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNl
KE5vZGUqIG5vZGUpCiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoYmln
Q2hhcmFjdGVyLCB0aGlzLCBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcsIHRlbXBHUFIs
ICZ2bSwgdGVtcEdQUikpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU3RyaW5nU3Vic3RyLCB0ZW1wR1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uU3RyaW5nU3Vic3RyLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RyaW5nR1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7CiAKICAgICBpZiAoZW5k
R1BSKQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0
aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsICplbmRHUFIpKTsKKyAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xp
Y2UsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0
YXJ0R1BSLCAqZW5kR1BSKSk7CiAgICAgZWxzZQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsIFRydXN0
ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9u
U3RyaW5nU2xpY2UsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJp
bmdHUFIsIHN0YXJ0R1BSLCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpKSk7CiAKICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwogICAgIGNlbGxSZXN1
bHQodGVtcEdQUiwgbm9kZSk7CkBAIC0xOTc0LDcgKzE5NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9Mb3dlckNhc2UoTm9kZSogbm9kZSkKICAgICAKICAgICBzbG93UGF0aC5s
aW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMobGVuZ3RoR1BSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTG93ZXJDYXNlLCBsZW5ndGhHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIGluZGV4R1BSKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRvTG93ZXJDYXNlLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdHJpbmdHUFIsIGluZGV4R1BSKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBhdXRvIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CkBAIC0yMTkzLDEwICsyMTkxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2soKQogICAgIH0KIAogICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50
cnlwb2ludCkgeworICAgICAgICAvLyBGb3IgY2F0Y2ggZW50cnkgcG9pbnQsIE9TUiBlbnRyeSBz
ZXRzIGEgbmV3IENvZGVCbG9jayBwb2ludGVyLgogICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5lbWl0U2F2ZUNh
bGxlZVNhdmVzKCk7CiAgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0
ZXJzKCk7Ci0gICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2ppdC5jb2Rl
QmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgICAgICBtX2ppdC5wcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgICAgICB9KTsKKyNlbmRpZgorI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwor
ICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjb25z
dGFudHNSZWdpc3RlciwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIEdQUkluZm86OmNv
bnN0YW50c1JlZ2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fc3RyZWFtLT5hcHBlbmRB
bmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CkBAIC0yNDc3LDcgKzI0ODUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUcmFwcyhOb2RlKiBub2RlKQogICAgICAgICBK
SVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKG1faml0LnZtKCkudHJhcHMoKS50cmFwQml0c0Fk
ZHJlc3MoKSksCiAgICAgICAgIFRydXN0ZWRJbW0zMihWTVRyYXBzOjpBc3luY0V2ZW50cykpOwog
Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxpbmcs
IHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRU
cmFwSGFuZGxpbmcsIHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKQEAg
LTI1NDIsNyArMjU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3Vz
UHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSA/CiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgIChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QpLAotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7CisgICAgICAgICAgICBOb1Jl
c3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVn
LCB2YWx1ZVJlZ3MpKTsKICAgICB9CiAKICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwpAQCAtMjYxNyw3ICsyNjI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9w
KCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJv
dW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZh
bERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3Ry
aWN0KSwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOworICAgICAgICAgICAgICAgIE5v
UmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHZhbHVlUmVnKSk7CiAgICAgfQogCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTI2NzUsOSArMjY4Myw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbChOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Ms
IHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0
eVJlZ3MsIHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsTm9uU3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
Z3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMjczMCwxMSArMjcz
OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkK
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAg
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxs
cHRyKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNl
UmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLAotICAgICAgICAgICAgICAg
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVl
UmVncywgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywg
Z2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgbV9qaXQuYWRk
UHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yODI1LDcgKzI4MzMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgICAgICAgICAo
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0KSA6CiAgICAgICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAotICAgICAgICAg
ICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJv
cGVydHlSZWcsIHZhbHVlUmVncykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykp
OwogICAgICAgICB9CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKQEAgLTI5NTIsMTIgKzI5NjAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0
ZDoKICAgICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRy
YW5zaXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0dXJlKTsKIAogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvcj4oCi0gICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGJhc2VSZWcs
IHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVj
dCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbFN0
cmluZ0ludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJvcGVydHlSZWcp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBt
X2N1cnJlbnROb2RlKTsKQEAgLTI5ODEsNyArMjk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcHJSZWdzKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3ByUmVncyk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUpOwpAQCAtMzAwMSw3ICszMDA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUZyb21DaGFyQ29kZShOb2RlKiBub2RlKQogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7Ci0g
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgcHJvcGVydHlSZWcpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGUsIHNjcmF0
Y2hSZWcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm9wZXJ0eVJlZykpOwogICAg
IGNlbGxSZXN1bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CiB9CiAKQEAgLTM5MjUsOSAr
MzkzMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICAgICAgICAgICAgICAobm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxOb25TdHJpY3QpLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5
UmVnLCB2YWx1ZUdQUikpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsKICNlbHNlIC8v
IG5vdCBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwgSlNWYWx1ZVJl
Z3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIs
IHZhbHVlR1BSKSkpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZh
bHVlR1BSKSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC00MDM1LDcgKzQwNDMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3RyaW5nKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRS
ZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICBpZiAoY2FuVXNlRmx1c2gg
PT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQwNjIsNyArNDA3MCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbEZvck9iamVjdFdpdGhTeW1ib2woTm9kZSogbm9k
ZSwgY29uc3QgU2NvcGVkCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJl
Z3MpOwogICAgIGVsc2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAgIGlmIChjYW5Vc2VGbHVzaCA9
PSBDYW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtNDEzMCwxMiArNDEzOCwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1Zh
bHVlUmVncyBiYXNlLCBKUwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAotICAg
ICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
CisgICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwKICAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShw
cm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1Bh
dGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICB9OwogCkBAIC00MjE1LDcg
KzQyMjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0
aFN0cmluZyhOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkg
PwogICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJp
bmdTdHJpY3QpIDoKICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0
QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00MjM4LDcgKzQy
NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5
bWJvbChOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAg
ICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xT
dHJpY3QpCiAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3ltYm9sTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00MjU2LDcgKzQyNjQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKiBu
b2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRoaXNWYWx1ZVJl
Z3MsIHN1YnNjcmlwdFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxX
aXRoVGhpcywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTQyODIs
NyArNDI5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShO
b2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGF1dG8gb3Bl
cmF0aW9uID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbFNl
dFByaXZhdGVGaWVsZEdlbmVyaWM7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRy
dXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDMyNiwxMSArNDMzNCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKICAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbiwKLSAg
ICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgbnVs
bHB0cik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKLSAgICAgICAgICAgIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgZ2VuLnN0dWJJ
bmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0cik7CiAg
ICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00
NDAwLDExICs0NDA4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZh
dGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1
bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShicmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJl
Z3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CiAgICAgfQogCiAgICAgbV9q
aXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtNDQ0OCwx
MSArNDQ1NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5k
KE5vZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1
bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRH
UFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4s
IHNsb3dQYXRoLmdldCgpKTsKQEAgLTQ0ODgsNyArNDQ5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50R2VuZXJpYywgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgcmFkaXhHUFIp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludEdlbmVyaWMsIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIHJhZGl4
R1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDUwMSw3ICs0NTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5v
ZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
YXJzZUludFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlR1BSLCByYWRpeEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJ
bnRTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZUdQUiwgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC00
NTE0LDcgKzQ1MjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9k
ZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBh
cnNlSW50Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCB2YWx1ZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50
Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC00NTI3
LDcgKzQ1MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSog
bm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4LCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0K
QEAgLTQ1NTAsMTEgKzQ1NTgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJy
aWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgLy8gc2luY2UgaXQgcmVsaWVzIG9uIE9T
UiBpbmZvcm1hdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDgzMgogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmlzQ2VsbENvbnN0YW50KCkgfHwg
ZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmFzQ2Vs
bCgpKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5z
dGFuY2VWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25z
dGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3Bl
cmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxP
cGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCByZXN1
bHRHUFIpKTsKICNlbHNlCiAgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBub3REZWZhdWx0LmFwcGVu
ZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZh
bHVlUmVncy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkp
KTsKKyAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRH
UFIpKTsKICNlbmRpZgogICAgIH0KIApAQCAtNDU4OCwxMCArNDU5NywxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1
YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5
cGVSZWdzKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKQEAgLTQ3MDEsNyArNDcxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUJpdE5vdChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RI
ZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFu
ZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwogCkBAIC00NzE2LDcgKzQ3MjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcGVyYW5kUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUJpdE5v
dCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRSZWdz
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKQEAgLTQ3NTYsNyArNDc2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CkBAIC00ODIxLDcgKzQ4MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92
ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAg
IGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQ4ODQsMTMg
KzQ4OTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0
QW5kOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0g
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQ5NzQsNyArNDk4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTA0MCw3ICs1MDQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAg
ICAgICBtX2ppdC5tb3ZlVmFsdWUocmlnaHRDaGlsZC0+YXNKU1ZhbHVlKCksIHJpZ2h0UmVncyk7
CiAgICAgfQogCi0gICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3Mp
OworICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKIAog
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwpAQCAtNTA2OSw3ICs1MDc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TFNoaWZ0T3AoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJp
Z0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJp
Z2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmln
SW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01MDk2LDcg
KzUxMDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9k
ZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJp
dFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTE4NCw3ICs1
MTkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUp
CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICAgICAgLy8g
RklYTUU6IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CkBAIC01MjA1LDcgKzUyMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVBZGQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
QWRkSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTIyMSw3ICs1MjMw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51
bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCBy
aWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVt
YmVyLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC01Mjg0LDcgKzUyOTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3ViLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUpOwpAQCAtNTMwNSw3ICs1MzE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJ
bnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTQxMiw5ICs1NDIxLDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJh
dG9yPiogbWF0aEkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFkZElDR2VuZXJh
dGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICAgICAgYWRkSUNH
ZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1
bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0
UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgICAg
ICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
cmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElD
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3Rh
dGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5u
ZXJSaWdodFJlZ3MpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmln
aHRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTU0NDMsNyArNTQ1Miw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJCiAgICAgICAgIH0KIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNTQ3Niw3ICs1NDg1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSogbm9kZSkKIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuanVtcCgpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRp
b25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJlZ3MpKTsKKyAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbklu
c3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHZhbHVlUmVncywgY29uc3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVncykpOwogCiAgICAgdW5i
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtNTU3NSw5ICs1NTg0
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29u
c3RydWN0b3IoTm9kZSogbm9kZSkKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGVycm9yTWVz
c2FnZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkgIT0g
VUlOVDMyX01BWCkKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgZXJyb3JNZXNzYWdlKSk7Cisg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCB2YWx1ZVJlZ3MsIGVycm9yTWVzc2FnZSkpOwogICAgIH0gZWxzZQotICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25D
YWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxs
T3BlcmFuZCgpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxPYmplY3RDb25zdHJ1Y3Rv
ciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2Rl
LT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCB2YWx1ZVJlZ3MpKTsKIAogICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTU3MjEsNyArNTczMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aEFicyhOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVncyBv
cDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJpdGhBYnMsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQWJzLCByZXN1
bHQuZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5m
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTc0NSw3ICs1NzU0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQ2x6MzIoTm9kZSogbm9kZSkKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZ3ByKCk7
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRo
Q2x6MzIsIHJlc3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhDbHozMiwgcmVzdWx0UmVnLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogfQpAQCAtNTc2
OSw3ICs1Nzc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRG91YmxlVW5h
cnlPcChOb2RlKiBub2RlLCBkb3VibGUgKCpkb3VibGVGdW5jdGkKICAgICBKU1ZhbHVlUmVncyBv
cDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBG
UFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1
bHQuZnByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTU4ODYsNyArNTg5NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGF1dG8gb3BlcmF0aW9uID0gbm9kZS0+b3Ao
KSA9PSBJbmMgPyBvcGVyYXRpb25JbmMgOiBvcGVyYXRpb25EZWM7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFS
ZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTYwMjUsOSAr
NjAzNCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwg
SklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgICAgICBzaWxlbnRTcGls
bChzYXZlUGxhbnMpOwogCiAgICAgICAgICAgICBpZiAoaWNHZW5lcmF0aW9uU3RhdGUtPnNob3Vs
ZFNsb3dQYXRoUmVwYXRjaCkKLSAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0
aElDKSk7CisgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAgICAgICAgICAg
ICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVw
YXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgY2hpbGRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTYwNDgsNyArNjA1Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUVW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1
bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdz
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNjExMyw3ICs2MTIyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTXVsSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNjEzMSw3ICs2
MTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU11bCwg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJl
Z3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlTXVsLCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMTMsNyArNjMyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZI
ZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQ
UiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkhlYXBCaWdJ
bnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCBy
aWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMzEsNyArNjM0MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CkBAIC02NDE1LDcgKzY0MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFz
SlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKQEAgLTY1NzksNyArNjU4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcml0aEZSb3VuZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBv
cDEuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEZQUlJlc3VsdCBy
ZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVz
dWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0LmZwcigpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTY2MDQsNyAr
NjYxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChOb2RlKiBub2Rl
KQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
QEAgLTY2MjEsNyArNjYzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1v
ZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU1vZCwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBA
IC03MDE4LDcgKzcwMjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3Vu
ZGluZyhOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBBcml0aFRydW5j
KTsKICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uQXJpdGhUcnVuYzsKICAgICB9Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmd1bWVudFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiB9CkBAIC03MDUxLDcgKzcwNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhTcXJ0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5q
c1ZhbHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoU3FydCwgcmVzdWx0LmZw
cigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CkBAIC03MTc5LDcgKzcxODgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9kZSkKICAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Qb3dIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC03MTk4
LDcgKzcyMDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSog
bm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVQb3csIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlUG93LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC03
OTM1LDcgKzc5NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nRXF1YWxp
dHkoCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAg
ICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRp
b25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVy
YXRpb25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKICAgICAKICAgICBibGVzc2VkQm9vbGVhblJl
c3VsdChsZWZ0VGVtcEdQUiwgbm9kZSk7CiB9CkBAIC04MDg1LDcgKzgwOTQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbAogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24oY29tcGFyZUZ1bmN0aW9u
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7CisgICAgY2FsbE9wZXJhdGlvbihjb21wYXJlRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwpAQCAtODE4Niw3ICs4MTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNhbWVWYWx1ZShOb2RlKiBub2RlKQogCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
ZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwpAQCAtODI3Miw3ICs4MjgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSogbm9kZSkKIHsKICAgICBHUFJUZW1wb3Jh
cnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7
Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG5vZGUtPnN0b3JhZ2VQb2ludGVyKCkpLCBz
dG9yYWdlR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudDo6bm9uQ2VsbFB0cihtX2dyYXBoLCBub2RlLT5zdG9yYWdlUG9pbnRl
cigpKSwgc3RvcmFnZUdQUik7CiAgICAgc3RvcmFnZVJlc3VsdChzdG9yYWdlR1BSLCBub2RlKTsK
IH0KIApAQCAtODMyNSw3ICs4MzM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzdG9yYWdlUmVnKSwKLSAgICAgICAgICAgICAgICB0
aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc3RvcmFnZVJlZywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VSZWcpKTsKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25SZXNv
bHZlUm9wZSwgc3RvcmFnZVJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWcpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgICAg
ICBicmVhazsKQEAgLTg0MzYsNyArODQ0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhCiAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2Jq
ZWN0SW50LAotICAgICAgICAgICAgICAgIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAg
ICAgICAgIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAgIH0KICAgICAKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtODU0Miw4ICs4NTUxLDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSogbm9kZSkKIHsKICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICBtX2ppdC5sb2FkUHRyKGdsb2JhbE9iamVj
dC0+YWRkcmVzc09mR2xvYmFsVGhpcygpLCByZXN1bHRHUFIpOworICAgIG1faml0LmxvYWRVbmxp
bmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZXN1bHRH
UFIpOworICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNHbG9iYWxPYmplY3Q6Om9mZnNldE9mR2xvYmFsVGhpcygpKSwgcmVzdWx0R1BSKTsKICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKQEAgLTg3MDUsNyArODcxNCw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0
R1BSLCBSZWdpc3RlcmVkU3RydWN0CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRl
cmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAg
ICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpKTsKLSAgICBtX2ppdC5zdG9yZVB0
cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGVPclJhcmVEYXRhKCkpKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgc2Ny
YXRjaDFHUFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxR1BSLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURh
dGEoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIH0KIApAQCAtODgwMCw3ICs4
ODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEZ1bmN0aW9uTmFtZShOb2Rl
KiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG5hbWVWYWx1ZVJlZ3MgPSBuYW1lVmFsdWUuanNWYWx1
ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25TZXRGdW5jdGlvbk5hbWUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jR1BS
LCBuYW1lVmFsdWVSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEZ1bmN0aW9u
TmFtZSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmNHUFIsIG5hbWVWYWx1ZVJl
Z3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
QEAgLTg4MTcsNyArODgyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYXJhcmdz
TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB1bmxvY2soR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXpl
T2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOwpAQCAtODg1NCw3ICs4ODY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxv
YWRWYXJhcmdzKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5zdG9yZTMyKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQp
KTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1Jl
Z3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRh
dG9yeU1pbmltdW0pOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCks
IGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTg5ODUsMTAgKzg5OTUsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKiBub2RlKQogICAgIC8vIERvbid0
IG5lZWQgYSBtZW1vcnkgYmFycmllcnMgc2luY2Ugd2UganVzdCBmYXN0LWNyZWF0ZWQgdGhlIGFj
dGl2YXRpb24sIHNvIHRoZQogICAgIC8vIGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBt
X2ppdC5zdG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U1Njb3BlOjpvZmZzZXRPZk5leHQoKSkpOwotICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBU
cnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLAotICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlN5bWJvbFRh
YmxlKCkpKTsKLSAgICAgICAgCisgICAgbV9qaXQuc3RvcmVVbmxpbmtlZENvbnN0YW50KEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNl
bGwoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNMZXhpY2FsRW52aXJvbm1l
bnQ6Om9mZnNldE9mU3ltYm9sVGFibGUoKSkpOworCiAgICAgLy8gTXVzdCBpbml0aWFsaXplIGFs
bCBtZW1iZXJzIHRvIHVuZGVmaW5lZCBvciB0aGUgVERaIGVtcHR5IHZhbHVlLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS0+c2NvcGVTaXplKCk7ICsraSkgewogICAgICAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZSgKQEAgLTkxMTUsMTIgKzkxMjMsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCiAgICAgICAgICAgICAgICAgICAg
IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAg
ICAgICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAgICAgICAgc2NyYXRj
aDFHUFIpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubG9h
ZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgp
KSwgc2NyYXRjaDFHUFIpOwogICAgIH0gZWxzZQogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIHNjcmF0Y2gxR1BSKTsK
IApAQCAtOTM2MCw3ICs5MzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZVJlc3QoTm9kZSogbm9kZSkKIAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQ3JlYXRlUmVzdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJndW1lbnRzU3RhcnRHUFIsIEltbTMyKG5vZGUtPm51bWJlck9mQXJndW1lbnRzVG9T
a2lwKCkpLCBhcnJheUxlbmd0aEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVh
dGVSZXN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVu
dHNTdGFydEdQUiwgSW1tMzIobm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKSksIGFycmF5
TGVuZ3RoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtOTQ1NCw3ICs5NDU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBub2RlKQogICAgICAgICAgICAgZG9uZS5hcHBlbmQo
bV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25TcHJlYWRGYXN0
QXJyYXksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50KSk7
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmd1bWVudCkpOwogCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
ICAgICAgICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0oKSk7CkBAIC05NDY0LDcgKzk0NjgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVh
ZEZhc3RBcnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1l
bnQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKQEAgLTk0NzMsNyArOTQ3Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSogbm9kZSkKIAogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFk
R2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVhZEdlbmVyaWMsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50KTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgIH0KQEAgLTk2MTAsNyArOTYxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdBcnJheShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAKICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgp
KSksCisgICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIHNpemVfdChub2RlLT5udW1DaGlsZHJlbigpKSk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtOTc2OSw3ICs5NzczLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZChOb2RlKiBub2RlKQogICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhT
cHJlYWRTbG93LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IGdsb2JhbE9iamVjdCksIGJ1ZmZlciwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTcHJlYWRTbG93LCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGJ1ZmZlciwg
bm9kZS0+bnVtQ2hpbGRyZW4oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTk5NDksNyArOTk1Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0K
IAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigK
LSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmpl
Y3QpLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCB0ZW1w
VmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKICAgICB9CiAKICAgICBHUFJUZW1w
b3JhcnkgdGVtcDQodGhpcyk7CkBAIC0xMDE2OCw3ICsxMDE3Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4T2YoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9m
U3RyaW5nLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BS
LCBzZWFyY2hFbGVtZW50R1BSLCBpbmRleEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJyYXlJbmRleE9mU3RyaW5nLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVtZW50R1BSLCBpbmRleEdQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQo
bGVuZ3RoR1BSLCBub2RlKTsKQEAgLTEwMTgzLDExICsxMDE4NywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJyYXlJbmRleE9mVmFsdWVEb3VibGUsIGxlbmd0aEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRSZWdzLCBpbmRleEdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlRG91Ymxl
LCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBz
ZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JD
b250aWd1b3VzLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdl
R1BSLCBzZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JDb250aWd1b3VzLCBsZW5ndGhH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVt
ZW50UmVncywgaW5kZXhHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAyNTYsNyAr
MTAyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihzdG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRS
ZWdzKTsKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGJhc2VHUFIpKTsK
KyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFy
cmF5UHVzaCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVl
UmVncywgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMDIsNyArMTAzMDYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpKSk7CiAKLSAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3Bl
cmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCks
IHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxl
bWVudENvdW50KSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHN0b3JhZ2UudXNl
KCk7CkBAIC0xMDMyNyw3ICsxMDMzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VM
ZW5ndGhHUFIsIHJlc3VsdFJlZ3MpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bkFycmF5UHVzaERvdWJsZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHZhbHVlRlBSLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUZQUiwgYmFzZUdQUikpOwogCiAgICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTAzNzEsNyArMTAzNzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQ
dXNoKE5vZGUqIG5vZGUpCiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGgg
PSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRy
dXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5k
YXRhQnVmZmVyKCkpKSk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlTXVsdGlwbGUs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJH
UFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVz
aERvdWJsZU11bHRpcGxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOwogCiAg
ICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHN0b3JhZ2UudXNlKCk7CkBAIC0xMDQwNCw3ICsx
MDQwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VMZW5ndGhHUFIsIHJlc3VsdFJl
Z3MpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgYmFzZUdQUikpOwor
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJy
YXlQdXNoLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVS
ZWdzLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQ0OCw3ICsxMDQ1Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8RW5jb2Rl
ZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpKSk7CiAKICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICBzbG93UGF0aENhbGwobV9qaXQuanVtcCgp
LCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1l
bnRDb3VudCkpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMs
IG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENv
dW50KSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHN0b3JhZ2UudXNlKCk7CkBA
IC0xMDUwMyw4ICsxMDUwNyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc09iamVj
dChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mSXNPYmpl
Y3QoTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTEwNTM2
LDcgKzEwNTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZklzT2JqZWN0
KE5vZGUqIG5vZGUpCiAgICAgCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZJ
c09iamVjdCwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICBzbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uVHlwZU9mSXNPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5bG9h
ZEdQUigpKSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xMDU0Niw4ICsxMDU0
OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2ZJc09iamVjdChOb2RlKiBu
b2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDYWxsYWJsZShOb2RlKiBub2Rl
LCBTX0pJVE9wZXJhdGlvbl9HQyBzbG93UGF0aE9wZXJhdGlvbikKIHsKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKICAgICAKQEAgLTEwNTczLDcgKzEwNTczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUlzQ2FsbGFibGUoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25fR0Mgc2xvd1Bh
dGhPcGUKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgc2xvd1BhdGhD
YWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1
bHRHUFIsIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBzbG93UGF0
aE9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2pp
dC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEwNTg5LDE0ICsxMDU4OSwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSXNDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Jc0NvbnN0cnVjdG9yLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSXNDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBl
T2YoTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTEwNjE5
LDcgKzEwNjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKiBu
b2RlKQogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZPYmplY3QsIHJlc3Vs
dEdQUiwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
blR5cGVPZk9iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAK
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMDY2OCw3ICsxMDY2Niw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lzQ29uc3RhbnQoTm9kZSogbm9kZSkK
IHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRy
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+
Y2VsbCgpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFub2RlLT5jb25zdGFudCgpLT52YWx1ZSgp
LmlzQ2VsbCgpIHx8ICFub2RlLT5jb25zdGFudCgpLT52YWx1ZSgpKTsKICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDkzOSwxMyArMTA5
MzcsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkK
ICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJn
dW1lbnRDb3VudCArIDE7CiAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykg
ewogICAgIGNhc2UgMToKLSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpf
SklUT3BlcmF0aW9uX0dQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVn
cyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQPihmdW5jdGlvbi5nZXQo
KSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCByZWdzWzBdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBjYWxs
T3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fR1BQPihmdW5jdGlvbi5n
ZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCByZWdzWzBdLCByZWdzWzFdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJl
dF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0
KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVn
c1sxXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUFA+KGZ1bmN0aW9uLmdldCgpKSwg
ZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJl
Z3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOworICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fR1BQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVz
dWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwg
cmVnc1sxXSwgcmVnc1syXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDk2OSw5ICsxMDk2Nyw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkKLSAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKSVA+
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVy
TnVtYmVyKSwgZ2V0dGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHM8Sl9KSVRPcGVyYXRpb25fR0pJUD4oSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlE
KG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpLCBnZXR0ZXIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKST4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlEKG5vZGUtPmNh
bGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKST4oSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlE
KG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpKTsKIAogICAgICAg
ICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtKCkudG9wQ2Fs
bEZyYW1lKTsKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtMTExMTIsMTAgKzExMTEwLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdW
YWx1ZU9mKE5vZGUqCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvU3RyaW5nLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdz
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENhbGxTdHJpbmdDb25zdHJ1Y3Rv
cik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3Rvciwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAg
ICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTExNDIsMTIgKzExMTQwLDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdW
YWx1ZU9mKE5vZGUqCiAgICAgICAgICAgICBzbG93UGF0aDIubGluaygmbV9qaXQpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvU3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFS
ZWdzKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBTdHJpbmdWYWx1ZU9mKQotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdWYWx1ZU9mLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAgfQogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQpAQCAtMTEy
MTgsMTAgKzExMjE2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09y
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5vZGUqCiAgICAgICAgICAgICBu
ZWVkQ2FsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvU3RyaW5n
T25DZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFHUFIpOwor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxR1BSKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3RydWN0
b3IpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3Ry
dWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMUdQ
Uik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3Rvck9uQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
R1BSKTsKICAgICAgICAgfQogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBpZiAoZG9uZS5pc1NldCgpKQpAQCAtMTEyNzQsNyArMTEyNzIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBub2RlKQogICAgIGNvbnRpbnVh
dGlvbi5saW5rKCZtX2ppdCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKIAotICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkZ1bmN0
aW9uVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1
bmN0aW9uLmdwcigpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRnVuY3Rpb25Ub1N0cmluZywgcmVzdWx0LmdwcigpLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZnVuY3Rpb24uZ3ByKCkpKTsKIAogICAgIGNl
bGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KQEAgLTExMjg4LDcgKzExMjg2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudChOb2RlKiBub2RlLCBpbnQKIHsKICAgICBhdXRvIGNhbGxUb1N0cmluZyA9IFsmXSAo
YXV0byBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRHUFIsIGF1dG8gdmFsdWVSZWcpIHsKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCBUcnVzdGVkSW1t
MzIocmFkaXgpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCBUcnVzdGVkSW1tMzIocmFk
aXgpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH07CkBAIC0xMTMzMyw3ICsxMTMzMSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeChOb2RlKiBub2Rl
KQogCiAgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnLCBHUFJSZWcgcmFkaXhHUFIpIHsKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCByYWRpeEdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgfTsK
QEAgLTExNDMxLDcgKzExNDI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N5
bWJvbChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9s
V2l0aFN0cmluZ0Rlc2NyaXB0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzdHJpbmdHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJv
bFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3RyaW5nR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0x
MTQ0Miw3ICsxMTQ0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2wo
Tm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTE1
NjUsNyArMTE1NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdp
dGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VAogICAgIAogICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwKLSAg
ICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RydWN0dXJlLCBz
aXplR1BSLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOwogCiAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTE1OTAsMTMgKzExNTg4LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdSZWdleHAoTm9kZSogbm9kZSkKICAgICBh
dXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3Q8UmVnRXhwT2JqZWN0PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsKIAotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5k
KCkpLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBSZWdFeHBPYmpl
Y3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOworICAgIG1faml0LnN0b3JlVW5saW5rZWRD
b25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxs
T3BlcmFuZCgpLT5jZWxsKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBSZWdF
eHBPYmplY3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOwogICAgIG1faml0LnN0b3JlVmFs
dWUobGFzdEluZGV4UmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhw
T2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZt
KCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCByZWdleHAsIGxhc3RJbmRleFJlZ3MpKTsKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld1Jl
Z2V4cFdpdGhMYXN0SW5kZXgsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHJlZ2V4cCwgbGFzdEluZGV4UmVncykpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQpAQCAtMTI1MjIsNyArMTI1MTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BS
UgogewogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWUsIEpT
U3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoKTsKICAgICBhdXRvIGlzUm9wZSA9IG1f
aml0LmJyYW5jaElmUm9wZVN0cmluZ0ltcGwoc2NyYXRjaCk7Ci0gICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHNj
cmF0Y2gsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZSkpOworICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMsIG9wZXJhdGlvblJlc29sdmVS
b3BlLCBzY3JhdGNoLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWUpKTsKICAg
ICAKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKApAQCAtMTI3NjQsNyAr
MTI3NjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmco
Tm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BSUgogCiAgICAgaWYgKCFjYW5Eb0JpbmFy
eVN3aXRjaCB8fCB0b3RhbExlbmd0aCA+IE9wdGlvbnM6Om1heGltdW1CaW5hcnlTdHJpbmdTd2l0
Y2hUb3RhbExlbmd0aCgpKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgp
LCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Td2l0Y2hTdHJpbmcsIHN0cmluZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0
YXRpY19jYXN0PHNpemVfdD4oZGF0YS0+c3dpdGNoVGFibGVJbmRleCksICZ1bmxpbmtlZFRhYmxl
LCBzdHJpbmcpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBtX2pp
dC5mYXJKdW1wKHN0cmluZywgSlNTd2l0Y2hQdHJUYWcpOwogICAgICAgICByZXR1cm47CkBAIC0x
MjgwMSw3ICsxMjc5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdP
blN0cmluZyhOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSCiAgICAgCiAgICAgc2xv
d0Nhc2VzLmxpbmsoJm1faml0KTsKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzdHJpbmcp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRh
YmxlSW5kZXgpLCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2Vk
VGFibGUsIHN0cmluZyk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbV9qaXQuZmFySnVtcChzdHJpbmcsIEpTU3dpdGNoUHRy
VGFnKTsKQEAgLTEyOTQ4LDcgKzEyOTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEFjY2Vzc29yQnlJZChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBhY2Nlc3NvckdQUiA9IGFj
Y2Vzc29yLmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1dEdldHRlckJ5SWQgOiBv
cGVyYXRpb25QdXRTZXR0ZXJCeUlkLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3Nv
ckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3Ao
KSA9PSBQdXRHZXR0ZXJCeUlkID8gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZCA6IG9wZXJhdGlvblB1
dFNldHRlckJ5SWQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmFjY2Vzc29yQXR0cmli
dXRlcygpLCBhY2Nlc3NvckdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwpAQCAtMTI5NjYsNyArMTI5NjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0R2V0dGVyU2V0dGVyQnlJZChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBz
ZXR0ZXJHUFIgPSBzZXR0ZXIuZ3ByKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
LCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIp
OwogI2Vsc2UKICAgICAvLyBUaGVzZSBKU1ZhbHVlcyBtYXkgYmUgSlNVbmRlZmluZWQgT1IgSlNG
dW5jdGlvbiouCiAgICAgLy8gQXQgdGhhdCB0aW1lLApAQCAtMTI5NzgsNyArMTI5NzQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0R2V0dGVyU2V0dGVyQnlJZChOb2RlKiBub2Rl
KQogICAgIEpTVmFsdWVSZWdzIHNldHRlclJlZ3MgPSBzZXR0ZXIuanNWYWx1ZVJlZ3MoKTsKIAog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0
ZXJTZXR0ZXIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudGlmaWVy
VUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygp
LCBnZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSwgc2V0dGVyUmVncy5wYXlsb2FkR1BSKCkpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyUmVncy5wYXlsb2FkR1BS
KCksIHNldHRlclJlZ3MucGF5bG9hZEdQUigpKTsKICNlbmRpZgogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKQEAgLTEyOTkyLDcgKzEyOTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlc29sdmVTY29wZShOb2RlKiBub2RlKQogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlU2Nv
cGUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KQEAgLTEzMDA0LDcgKzEzMDAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoTm9kZSogbm9kZSkK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5j
RGVjbEluRXZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3Bl
R1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTEz
MDMyLDcgKzEzMDI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldER5bmFtaWNW
YXIoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0RHluYW1pY1Zh
ciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWljVmFyLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9
CkBAIC0xMzA0Niw3ICsxMzA0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRE
eW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRp
Zmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3Qg
OiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMzExMiw3ICsxMzEwOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5VmFsKE5vZGUqIG5vZGUpCiAg
ICAgR1BSUmVnIGFjY2Vzc29yR1BSID0gYWNjZXNzb3IuZ3ByKCk7CiAKICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgc3Vic2NyaXB0UmVncywgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVz
KCksIGFjY2Vzc29yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHN1YnNjcmlwdFJlZ3MsIG5vZGUtPmFjY2Vz
c29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTMyODksNyArMTMyODUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nUmVwbGFjZShOb2RlKiBub2RlKQogCiAgICAgICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIsIHJlc3VsdC5ncHIoKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSKTsKKyAgICAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VS
ZWdFeHBFbXB0eVN0ciwgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3RyaW5nR1BSLCByZWdFeHBHUFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUp
OwogICAgICAgICAgICAgICAgIGlmIChzYW1wbGUpCkBAIC0xMzMxMCw3ICsxMzMwNiw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVu
Y1JlcGxhY2VSZWdFeHBTdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSLCByZXBsYWNlR1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLCByZXN1
bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4
cEdQUiwgcmVwbGFjZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgaWYgKHNhbXBsZSkK
QEAgLTEzMzMyLDcgKzEzMzI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z1JlcGxhY2UoTm9kZSogbm9kZSkKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0cmluZ1JlZ3MsIHNlYXJjaFJlZ3MsIHJlcGxhY2VSZWdzKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljLCBy
ZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdSZWdzLCBz
ZWFyY2hSZWdzLCByZXBsYWNlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgaWYgKHNhbXBsZSkKQEAgLTEz
MzUzLDcgKzEzMzQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cEV4ZWNO
b25HbG9iYWxPclN0aWNreShOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIG9wZXJhdGlvblJl
Z0V4cEV4ZWNOb25HbG9iYWxPclN0aWNreSwgcmVzdWx0UmVncywKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLCBhcmd1bWVudEdQUik7
CisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgYXJndW1lbnRHUFIpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwpAQCAtMTMzNzMsNyArMTMzNjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUmVnRXhwTWF0Y2hGYXN0R2xvYmFsKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgb3Bl
cmF0aW9uUmVnRXhwTWF0Y2hGYXN0R2xvYmFsU3RyaW5nLCByZXN1bHRSZWdzLAotICAgICAgICBn
bG9iYWxPYmplY3RHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIGFyZ3Vt
ZW50R1BSKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCBhcmd1bWVudEdQ
Uik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CkBAIC0xMzU1Nyw3ICsxMzU1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hp
bGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVz
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlT
dHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM1NzQsNyArMTM1NzAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAg
ICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRl
bnQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudEdQUiwgdmFsdWVS
ZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIGlkZW50R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzU4Niw3
ICsxMzU4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVy
dHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRh
UHJvcGVydHlTeW1ib2wsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BS
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTM1OTcsNyArMTM1OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVm
aW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lRGF0YVByb3BlcnR5LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UiwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBhdHRyaWJ1dGVz
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTM2MzgsNyArMTM2MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihu
b2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0
dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTdHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0x
MzY1NSw3ICsxMzY1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVBY2Nl
c3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVz
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3Bl
cnR5U3RyaW5nSWRlbnQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBp
ZGVudEdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzY2Nyw3
ICsxMzY2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eVN5bWJvbCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJv
bCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBn
ZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNjc4LDcgKzEzNjc0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkoTm9k
ZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclBy
b3BlcnR5LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdz
LCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIs
IGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0xMzgxMCw3ICsxMzgwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRNYXBCdWNrZXROZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgIEFTU0VSVChu
b2RlLT5idWNrZXRPd25lclR5cGUoKSA9PSBCdWNrZXRPd25lclR5cGU6OlNldCk7CiAgICAgICAg
IHNlbnRpbmVsID0gdm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpOwogICAgIH0KLSAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIHNlbnRpbmVsKSwg
cmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBzZW50aW5lbCksIHJlc3VsdEdQUik7CiAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CkBAIC0xMzg3Miw3ICsxMzg2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUaHJv
dyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd0RG
RywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncyk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UaHJvd0RGRywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBtX2ppdC5icmVha3Bv
aW50KCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMzg4NCw3ICsxMzg4MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUaHJvd1N0YXRpY0Vycm9yKE5vZGUqIG5vZGUpCiAgICAg
R1BSUmVnIG1lc3NhZ2VHUFIgPSBtZXNzYWdlLmdwcigpOwogICAgIHNwZWN1bGF0ZVN0cmluZyhu
b2RlLT5jaGlsZDEoKSwgbWVzc2FnZUdQUik7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhdGljRXJyb3IsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBtZXNzYWdlR1BSLCBub2RlLT5lcnJvclR5cGUoKSk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbWVzc2FnZUdQUiwgbm9kZS0+ZXJyb3JUeXBlKCkpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgIG5vUmVzdWx0KG5vZGUpOwpA
QCAtMTM5NzQsNyArMTM5NzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVy
YXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUsIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIG1vZGVHUFIs
IGVudW1lcmF0b3JHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5l
eHRVcGRhdGVJbmRleEFuZE1vZGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIG1vZGVHUFIsIGVudW1lcmF0b3JHUFIpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKIH0KQEAgLTE0MDQ3LDEyICsxNDA0MywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUoTm9kZSogbm9kZSkKICAgICAg
ICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIG91dE9mQm91bmRz
LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCB2bSgpLnNtYWxsU3RyaW5ncy5zZW50aW5lbFN0cmluZygpKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0oKS5zbWFsbFN0cmluZ3Muc2VudGluZWxTdHJpbmco
KSksIHJlc3VsdEdQUik7CiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsK
ICAgICAgICAgb3BlcmF0aW9uQ2FsbC5saW5rKCZtX2ppdCk7CiAgICAgfQogCi0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5TmFtZSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3Ip
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0
eU5hbWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGluZGV4LCBt
b2RlLCBlbnVtZXJhdG9yKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgZG9u
ZUNhc2VzLmxpbmsoJm1faml0KTsKQEAgLTE0MDk2LDkgKzE0MDkyLDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JIYXNQcm9wZXJ0eShOb2RlKiBub2RlLCBTbG93UGF0
aEZ1bmN0aW9uVHkKICAgICAgICAgb3BlcmF0aW9uQ2FzZXMubGluaygmbV9qaXQpOwogCiAgICAg
ICAgIGlmIChiYXNlUmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQ
UigpKSwgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1vZGVHUFIpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9h
ZEdQUigpKSwgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1vZGVHUFIpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlOYW1lUmVn
cywgaW5kZXhHUFIsIG1vZGVHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzbG93UGF0
aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZ3MsIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTE0
MjAwLDcgKzE0MTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRo
VGhpcyhOb2RlKiBub2RlKQogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBjYWxsT3BlcmF0
aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhp
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKLSAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFsdWVSZWdzLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFsdWVSZWdzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDI4MSw3ICsxNDI3Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0eUVudW1lcmF0b3IoTm9kZSogbm9kZSkKIAogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxPck90aGVyVXNlKSB7CiAg
ICAgICAgICAgICBhdXRvIG5vdE90aGVyID0gbV9qaXQuYnJhbmNoSWZOb3RPdGhlcihiYXNlUmVn
cywgc2NyYXRjaDFHUFIpOwotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCB2bSgpLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcigpKSwg
c2NyYXRjaDFHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0oKS5lbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBl
bmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgIG5vdE90aGVyLmxpbmsoJm1faml0KTsKICAg
ICAgICAgfQpAQCAtMTQzMzksNyArMTQzMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc2xvd0Nhc2Vz
LmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaDFH
UFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRv
ckNlbGwsIHNjcmF0Y2gxR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0
eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTQzNTQsNyArMTQz
NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9y
KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MpOworICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNDQ0Myw5ICsx
NDQzOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJDYXQoTm9kZSogbm9kZSkK
IAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBpZiAobm9kZS0+
Y2hpbGQzKCkpCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MywgcmVzdWx0
LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywgb3AyUmVncywgb3Az
UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MywgcmVzdWx0Lmdw
cigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywgb3AyUmVncywgb3Az
UmVncyk7CiAgICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDIs
IHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJl
Z3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDIsIHJlc3VsdC5ncHIo
KSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bm9kZSk7CkBAIC0xNDUxNSw3ICsxNDUxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYmlnTGVuZ3RoLmxpbmsoJm1faml0
KTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSksIHN0cnVjdHVyZUdQUik7CiAgICAg
ZG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdp
dGhTaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJ1Y3R1cmVH
UFIsIHNpemVHUFIsIG51bGxwdHIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJy
YXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3Ry
dWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0NTQzLDcgKzE0NTM5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9k
ZSkKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGNhbGxPcGVy
YXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50
Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5
cGVkQXJyYXlUeXBlKCkpKSwgYXJndW1lbnRSZWdzKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCkpKSwgYXJndW1lbnRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0x
NDU3OCw3ICsxNDU3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMoTm9k
ZSogbm9kZSkKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAg
ZWxzZQogICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBmdW5jdGlvbiwgdGVtcFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0aGlzVmFsdWVSZWdzKSk7CisgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24s
IHRlbXBSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykp
OwogCiAgICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CiB9CkBAIC0xNDYyOCw3ICsx
NDYyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RH
ZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93QnV0QXJyYXlCdWZmZXJDYXNlcywgdGhpcywgb3Bl
cmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdEdQUiwgJnZtKCksIGFycmF5U3RydWN0dXJlLCBz
Y3JhdGNoM0dQUikpOwogCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRp
b25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09i
amVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7
CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzT2Jq
ZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVjdCwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAgICAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTQ2NDMsNyArMTQ2MzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5
c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVj
dCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVj
dCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwpAQCAtMTQ2NTgsNyArMTQ2NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5
cyA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXMsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXMgOiBvcGVyYXRp
b25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvYmplY3RSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xNDY4NSw3ICsx
NDY4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSog
bm9kZSkKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMigpLCBzb3VyY2VHUFIp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uT2JqZWN0QXNzaWduT2JqZWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFy
Z2V0R1BSLCBzb3VyY2VHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVj
dEFzc2lnbk9iamVjdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwg
c291cmNlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBu
b1Jlc3VsdChub2RlKTsKQEAgLTE0Njk4LDcgKzE0Njk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEFzc2lnbihOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVncyBz
b3VyY2VSZWdzID0gc291cmNlLmpzVmFsdWVSZWdzKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25VbnR5cGVk
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFyZ2V0R1BSLCBzb3VyY2VSZWdzKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25VbnR5cGVkLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFyZ2V0R1BSLCBzb3VyY2VSZWdzKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTE0
NzIzLDcgKzE0NzE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdENyZWF0
ZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q3JlYXRl
T2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm90b3R5cGVH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlR1BSKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CkBAIC0xNDczOCw3ICsxNDczNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgcHJvdG90eXBlUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2Jq
ZWN0Q3JlYXRlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm90
b3R5cGVSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xNDc5MCw3ICsxNDc4Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQu
ZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdEdQUiwgaW5saW5lQ2FwYWNpdHlHUFIp
OwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2FsbGVlR1BSLCBub2RlLT5pbmxp
bmVDYXBhY2l0eSgpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBjYWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5KCkpKTsK
IAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0ODI3LDcgKzE0ODIz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9k
ZSkKICAgICBtX2ppdC5lbWl0Tm9uTnVsbERlY29kZVN0cnVjdHVyZUlEKHN0cnVjdHVyZUdQUiwg
c3RydWN0dXJlR1BSKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9kZS0+aXNJbnRl
cm5hbFByb21pc2UoKSA/IEpTSW50ZXJuYWxQcm9taXNlOjppbmZvKCkgOiBKU1Byb21pc2U6Omlu
Zm8oKSksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0
cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkpKTsKLSAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2Jh
bE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3Qp
LCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CiAKICAgICBm
YXN0UHJvbWlzZVBhdGgubGluaygmbV9qaXQpOwpAQCAtMTQ4NDAsNyArMTQ4MzYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKiBub2RlKQogICAgIG1f
aml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNP
clJlc3VsdCkpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+
aXNJbnRlcm5hbFByb21pc2UoKSA/IG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSA6IG9w
ZXJhdGlvbkNyZWF0ZVByb21pc2UsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgY2FsbGVlR1BSKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+aXNJbnRl
cm5hbFByb21pc2UoKSA/IG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSA6IG9wZXJhdGlv
bkNyZWF0ZVByb21pc2UsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgY2FsbGVlR1BSKSk7CiAKICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNDg3Niw3ICsxNDg3Miw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUs
IE9wZXJhdGlvbiBvcGVyCiAgICAgbV9qaXQuZW1pdE5vbk51bGxEZWNvZGVTdHJ1Y3R1cmVJRChz
dHJ1Y3R1cmVHUFIsIHN0cnVjdHVyZUdQUik7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KEpTQ2xhc3M6OmluZm8oKSksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQo
KSkpKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5r
ZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBn
bG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
KSk7CiAKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CkBAIC0x
NDg4Nyw3ICsxNDg4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRl
cm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgICAgIG1faml0
LnN0b3JlVHJ1c3RlZFZhbHVlKGluaXRpYWxWYWx1ZXNbaW5kZXhdLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50
ZXJuYWxGaWVsZChpbmRleCkpKTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7
CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgY2FsbGVlR1BSKSk7CisgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVj
dCksIGNhbGxlZUdQUikpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpA
QCAtMTUwMTEsNyArMTUwMDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Qcmlt
aXRpdmUoTm9kZSogbm9kZSkKICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAg
ICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlzLCBvcGVy
YXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChu
b3RQcmltaXRpdmUsIHRoaXMsIG9wZXJhdGlvblRvUHJpbWl0aXZlLCByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CiAKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKIH0KQEAgLTE1MDM1LDcgKzE1MDMxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvUHJvcGVydHlLZXkoTm9kZSogbm9kZSkKICAgICBhbHJlYWR5UHJvcGVydHlL
ZXkubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJndW1lbnRSZWdzLCBy
ZXN1bHRSZWdzKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvUHJvcGVydHlLZXksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdz
KSk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKU0Nl
bGwsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CkBAIC0xNTA2NSw3ICsxNTA2MSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051bWVyaWMoTm9kZSogbm9kZSkKICAg
ICBpc0hlYXBCaWdJbnQubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJn
dW1lbnRSZWdzLCByZXN1bHRSZWdzKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvTnVtZXJpYywgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvTnVt
ZXJpYywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50
UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMpOwogfQpAQCAtMTUxMDAsNyArMTUwOTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2FsbE51bWJlckNvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dE51bWJlcihhcmd1bWVudFJlZ3MsIHRlbXBHUFIpKTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdz
KGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2FsbE51bWJlckNvbnN0cnVjdG9y
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uQ2FsbE51bWJlckNvbnN0cnVjdG9yLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtMTUxNDcsNyArMTUxNDMsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwoTm9kZSogbm9kZSkKICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSUmVn
IHNjb3BlUmVnID0gc2NvcGUuZ3ByKCk7CiAKLSAgICBtX2ppdC5sb2dTaGFkb3dDaGlja2VuVGFp
bFBhY2tldChzaGFkb3dQYWNrZXRSZWcsIHRoaXNSZWdzLCBzY29wZVJlZywgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1faml0LmNvZGVCbG9jaygpKSwgY2FsbFNpdGVJbmRleCk7CisgICAg
bV9qaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrLCBzY3JhdGNoMVJlZyk7CisgICAgbV9qaXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQo
c2hhZG93UGFja2V0UmVnLCB0aGlzUmVncywgc2NvcGVSZWcsIHNjcmF0Y2gxUmVnLCBjYWxsU2l0
ZUluZGV4KTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIApAQCAtMTUxNjYsNyArMTUxNjMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0QWRkKE5vZGUqIG5vZGUpCiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblNldEFkZCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2V0
R1BSLCBrZXlSZWdzLCBoYXNoR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEFk
ZCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2V0R1BSLCBrZXlS
ZWdzLCBoYXNoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1MTg4LDcgKzE1MTg1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1hcFNldChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBT
ZXQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVn
cywgdmFsdWVSZWdzLCBoYXNoR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcFNl
dCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlS
ZWdzLCB2YWx1ZVJlZ3MsIGhhc2hHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTU0MDcsNyArMTU0MDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9kZSkK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgbV9qaXQu
ZW1pdExvYWRQcm90b3R5cGUodm0oKSwgb2JqZWN0R1BSLCByZXN1bHRSZWdzLCBzbG93Q2FzZXMp
OwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRQcm90b3R5cGVPZk9iamVjdCwKLSAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpKTsKKyAgICAgICAgICAg
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpKTsK
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1
cm47CkBAIC0xNTQyNCw3ICsxNTQyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRQcm90b3R5cGVPZihOb2RlKiBub2RlKQogCiAgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90
eXBlKHZtKCksIHZhbHVlR1BSLCByZXN1bHRSZWdzLCBzbG93Q2FzZXMpOwogICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRQcm90b3R5cGVPZiwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpKTsKIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNTU1MSw3ICsxNTU0
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNp
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdl
bmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSwgcmVzdWx0R1BSLAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBnbG9iYWxPYmplY3QpLAorICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLAogICAgICAgICBzdHJ1Y3R1cmUsCiAgICAgICAgIHNo
b3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCiAgICAg
ICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKQEAgLTE1Njg0LDcgKzE1NjgxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2RlLCBTX0pJ
VE9wZXJhdGlvbl9HQ1ogc2wKICAgICB9CiAgICAgfQogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGluZGV4R1BSKSk7Cisg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgc2xv
d1BhdGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIGluZGV4R1BSKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVF
eHRyYWN0Q2F0Y2hMb2NhbChOb2RlKiBub2RlKQpAQCAtMTU4MDQsMTEgKzE1ODAxLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aDsKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKLSAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgdmFsdWVSZWdzLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNs
b3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIHZhbHVlUmVncywKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKSwgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IHZhbHVlUmVncywKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogCkBAIC0xNTgzNyw3ICsxNTgzNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5v
ZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyCiAgICAgICAgIGFyZzIudXNlKCk7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdz
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTE1ODU4
LDcgKzE1ODU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVw
aG9sZUNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXIKICAgICBtX2ppdC5jb21wYXJl
MzIoY29uZCwgYXJnMVJlZ3MucGF5bG9hZEdQUigpLCBhcmcyUmVncy5wYXlsb2FkR1BSKCksIHJl
c3VsdEdQUik7CiAKICAgICBpZiAoIWlzS25vd25JbnRlZ2VyKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSkgfHwgIWlzS25vd25JbnRlZ2VyKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpCi0gICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgaGVscGVyRnVu
Y3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBh
cmcyUmVncykpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d1BhdGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIHVuYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
fQpAQCAtMTU4OTgsNyArMTU4OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNW
YWx1ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgICAg
IGFyZzIudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJl
Z3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAg
ICBicmFuY2hUZXN0MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CkBA
IC0xNTkyMiw3ICsxNTkxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVl
UGVlcGhvbGVCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICAgICAgICAg
IHNsb3dQYXRoLmxpbmsoJm1faml0KTsKIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rp
b24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcy
UmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwog
ICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTU5NjIsNyArMTU5NTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiAgICAgbm90RXF1
YWxDYXNlLmxpbmsoJm1faml0KTsKIAogICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBA
IC0xNjExNSw3ICsxNjExMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9w
ZShOb2RlKiBub2RlKQogCiAgICAgYXV0byBpc05vbkVtcHR5U3RyaW5nID0gbV9qaXQuYnJhbmNo
VGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgYWxsb2NhdG9yR1BSKTsKIAotICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0
cmluZyhtX2ppdC5ncmFwaCgpLm1fdm0pKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5s
aW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgp
LCBqc0VtcHR5U3RyaW5nKG1faml0LmdyYXBoKCkubV92bSkpLCByZXN1bHRHUFIpOwogCiAgICAg
aXNOb25FbXB0eVN0cmluZy5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZt
KCkpOwpAQCAtMTYxMjMsMTEgKzE2MTIwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIHN3aXRjaCAobnVtT3BHUFJzKSB7CiAgICAgY2Fz
ZSAyOgogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAgICAg
ICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSkpOworICAgICAgICAg
ICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0pKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSAzOgogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFrZVJvcGUzLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sx
XSwgb3BHUFJzWzJdKSk7CisgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFr
ZVJvcGUzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNb
MF0sIG9wR1BSc1sxXSwgb3BHUFJzWzJdKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNjE0MSwxMSArMTYx
MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZGUqIG5vZGUp
CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBzd2l0Y2ggKG51bU9w
R1BScykgewogICAgIGNhc2UgMjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtl
Um9wZTIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwg
b3BHUFJzWzFdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTIsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJz
WzFdKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSAzOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMywgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0s
IG9wR1BSc1syXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUzLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BS
c1sxXSwgb3BHUFJzWzJdKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE2MjQ4LDkgKzE2MjQ1LDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQogCiAgICAg
ICAgIGlmICghcmVjb3ZlckdlbmVyaWNDYXNlLmVtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChi
YXNlUmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9w
ZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3Mu
cGF5bG9hZEdQUigpKSwgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0
aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292
ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlUmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0aGlz
LCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBpbmRleEdQUiwgZW51bWVy
YXRvckdQUikpOwogICAgICAgICB9CiAKICAgICAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2
OTUzNDU1Nzk5ZTU4ZDYyZTljOWZlM2U0NjY2M2E5ZWRiZGIyYTQ0Li42ZjNiZDkzMWY5MzJiYjQx
Zjk5ZWI5ZjFkZTRmYTAyYTdjMjRlOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC05NzQsMTYgKzk3NCwxNSBAQCBjbGFzcyBTcGVjdWxh
dGl2ZUpJVCB7CiAgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CiAgICAgfQogCi0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZf
SklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgR1BSUmVnIGNvZGVCbG9ja0dQUikKICAg
ICB7Ci0gICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2lu
dGVyLgotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxWX0pJVE9wZXJhdGlvbl9DYj4oVHJ1
c3RlZEltbVB0cihzdGF0aWNfY2FzdDx2b2lkKj4oY29kZUJsb2NrKSkpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50czxWX0pJVE9wZXJhdGlvbl9DYj4oY29kZUJsb2NrR1BSKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVy
YXRpb24pOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihaX0pJVE9wZXJhdGlvbl9HIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24o
Wl9KSVRPcGVyYXRpb25fRyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxaX0pJVE9wZXJh
dGlvbl9HPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Wl9KSVRPcGVyYXRpb25fRz4oZ2xvYmFs
T2JqZWN0R1BSKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJh
Y2tPbkV4Y2VwdGlvblNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggYTkxMmViNTk4Yjk4MjJhMzU5NmExYzE4Y2UxZTYyM2U4YWFhNjgxMS4uMGQ0NmRmMTI4
OGE1NDM0Y2I3NjhmNmE1MjgxMjU4MGNlY2YyM2UzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNzgsMTIgKzE3OCwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJ
ZEZ1bmN0aW9uKHR5cGUpLAogICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAg
ICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNl
R1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJp
YXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKICAgICAgICAgICAgIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAg
IH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAt
MjE1LDEyICsyMTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdl
dEJ5SWRXaXRoVGhpc09wdGltaXplLAogICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5y
YXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAogICAgICAg
ICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
LSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
YmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlz
R1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEdl
dEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxP
clVuZGVmaW5lZChFZGdlIG9wZXJhbgogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVj
dEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2Nh
bEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEds
b2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFy
Z0dQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpF
cXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0
R1BSKTsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogCiAgICAg
ICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdwcigp
OwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2Jq
ZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFyZ0dQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xv
YmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFu
Y2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSLCB0YWtlbik7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJy
YW5jaE5vZGUKICAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBh
cmcyR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAgCiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCkBAIC01
MDMsNyArNTAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKIAogICAgICAgICBqdW1wKGlu
dmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNlSnVtcCk7CiAKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
MUdQUiwgYXJnMkdQUikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAg
ICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBp
bGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9CiAKQEAgLTU0MSw3ICs1NDEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0
RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZt
X2ppdCk7CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGws
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVn
cyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJS
ZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICAKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwg
Ym9vbCBpbnZlcnQpCiAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BS
KTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncykpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXEsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFS
ZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTczNCw3ICs3
MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uodm0oKSwgbV9qaXQsIHNjcmF0Y2hH
UFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJh
bWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93Q2FzZSk7CiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2Uu
bGluaygmbV9qaXQpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dGb3JWYXJhcmdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2lu
Z1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTc2
Myw3ICs3NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpc0ZsdXNoZWQoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywgYXJndW1lbnRzIGlzIGlu
IGFyZ3VtZW50c0dQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMgZmx1c2hlZC4KLSAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNHUFIs
IG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRzR1BS
LCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
Tm93IHdlIGhhdmUgdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBjYWxsZWUgZnJhbWUsIGJ1dCB3
ZSd2ZSBsb3N0IHRoZSBhcmd1bWVudHMgb3BlcmFuZC4KQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgZW1pdFNl
dFZhcmFyZ3NGcmFtZShtX2ppdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGZhbHNlLCBzY3Jh
dGNoR1BSMSwgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMigtKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2Yodm9pZCopKSkpLCBzY3JhdGNoR1BS
MSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY3JhdGNoR1BS
MSwgYXJndW1lbnRzR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFy
Z3NGcmFtZSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY3JhdGNoR1BSMSwgYXJndW1lbnRzR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNl
dCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIH0KQEAgLTkxMCw3ICs5MTAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICByZXF1aXJlZEJ5
dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVx
dWlyZWRCeXRlcyk7CiAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRC
eXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJl
Z1QxKTsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2Fs
bEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSk7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9q
aXQuYXBwZW5kQ2FsbChvcGVyYXRpb25DYWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CkBAIC0xMDA1LDcgKzEwMDUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOyAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8g
cmVnVDAKICAgICB9CiAKKyAgICAvLyBGSVhNRQogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOyAv
LyBKU0dsb2JhbE9iamVjdCBuZWVkcyB0byBiZSBpbiByZWdUMworICAgIC8vIG1faml0LmxvYWRV
bmxpbmtlZENvbnN0YW50KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxPYmplY3QgbmVlZHMgdG8gYmUg
aW4gcmVnVDMKICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCh2bSgpLCBtX2ppdCk7CiAK
ICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTE4OTAsNyArMTg5Miw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgdmFs
dWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOworICAgIG1faml0
LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0
LmdyYXBoKCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIHJlc3VsdEdQUik7CiAgICAg
bV9qaXQuY29tcGFyZTY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdmFsdWVHUFIsIHJlc3VsdEdQ
UiwgcmVzdWx0R1BSKTsKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiB9CkBAIC0yMTc5LDggKzIxODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50
eXBlZEJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYXNpY0JsbwogICAg
ICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgICAg
ICBicmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCB0YWtlbik7CiAgICAgICAgICAgICBtX2ppdC5lbWl0
TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgdGVtcDFHUFIpOwotICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCks
IHRlbXAyR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0ZW1wMkdQUik7
CiAgICAgICAgICAgICBicmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wMUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQo
KSksIHRlbXAyR1BSLCB0YWtlbik7CiAgICAgICAgICAgICBqdW1wKG5vdFRha2VuLCBGb3JjZUp1
bXApOwogICAgICAgICB9IGVsc2UKQEAgLTIzNzgsNyArMjM3OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKCiAgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
UmVncyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAg
ICAgICAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKICAgICAgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwpAQCAtMjQzNCwxMSArMjQzNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8
SgogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51
bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwpAQCAtMjUxMyw3ICsyNTE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1
cGxlPEoKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgfQogCiAKQEAgLTI2MDUsNyArMjYwNiw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdFJlZ3MuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLmdw
cigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcp
KTsKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncy5ncHIoKSwgbm9kZSk7CiAg
ICAgICAgIH0KIApAQCAtMjY2Myw3ICsyNjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVj
dEludCwKLSAgICAgICAgICAgICAgICByZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIHJlc3VsdFJlZywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICBicmVhazsK
QEAgLTI3OTMsNyArMjc5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBU
ZXN0SW5saW5lKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChpbmxpbmVDb2RlU3RhdHM4Qml0Lm5l
ZWRzVGVtcDIoKSkgewogICAgICAgICAgICAgLy8gU2luY2Ugd2UgcmV1c2VkIGdsb2JhbE9iamVj
dEdQUiBmb3IgdGVtcDIsIGxldCdzIHJlc3RvcmUgdGhlIGdsb2JhbCBvYmplY3QuCiAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Q29uc3QgPSBqc0Nhc3Q8SlNHbG9iYWxP
YmplY3QqPihub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIG1faml0
Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdENvbnN0KSwgZ2xv
YmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3RDb25zdCksIGdsb2JhbE9iamVj
dEdQUik7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0zNTQ4LDcgKzM1NDksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgaWYgKCFzdG9yYWdl
RWRnZSkgewogICAgICAgICAgICAgYXV0byBjYWxsU2xvd1BhdGggPSBbJl0gKCkgewotICAgICAg
ICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRyID0gVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSk7CisgICAgICAgICAgICAgICAgYXV0byBnbG9iYWxPYmplY3RJbW1QdHIgPSBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CiAgICAgICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0FkZCwgcmVzdWx0R1BSLCBnbG9iYWxP
YmplY3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBhcmdHUFJzWzBdKTsKQEAgLTM3NTcsNyAr
Mzc1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJl
ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NJc0xvY2tGcmVlLCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM4OTksNyArMzkwMCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkpLCB2YWx1ZUdQUikpOwogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoLCB2YWx1ZUdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCwg
dmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIGNhbid0IGtub3cgZm9yIHN1cmUgdGhhdCB0aGUg
cmVzdWx0IGlzIGFuIGludCBiZWNhdXNlIG9mIHRoZSBzbG93IHBhdGhzLiA6LS8KICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQodmFsdWVHUFIsIG5vZGUpOwpAQCAtMzkzMiw3ICszOTMzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25BcnJheVBv
cCwgdmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3AsIHZhbHVl
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwogCiAgICAgICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVlR1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNDA1OCw3ICs0MDU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAvLyBJbnN0ZWFkIG9mIHRoZSBzbG93IHBhdGggZ2VuZXJhdG9yLCB3ZSBl
bWl0IGNhbGxPcGVyYXRpb24gaGVyZS4KICAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5v
ZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiBTcGVjQnl0ZWNvZGVOdW1iZXIpKSB7CiAgICAgICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25U
b051bWJlciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRH
UFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOwogICAgICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE51bWJlciA9IG1faml0LmJyYW5jaElmTm90TnVt
YmVyKGFyZ3VtZW50R1BSKTsKQEAgLTQwNjcsNyArNDA2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgbm90TnVtYmVyLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0g
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC00NTQz
LDcgKzQ1NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
V2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCB0aGlzVmFsdWVH
UFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00
NjgxLDcgKzQ2ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAg
ICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3Qu
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3Rl
R2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1
Y3R1cmUodm0oKSwgdmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAg
ICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0
R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00ODg2LDcgKzQ4
ODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk1hcEhhc2gsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVS
ZWdzKGlucHV0R1BSKSk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhh
c2gsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdz
KGlucHV0R1BSKSk7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC00OTMxLDcgKzQ5MzIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc2xvd1Bh
dGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CkBAIC01MDc5LDkgKzUwODAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBzbG93UGF0aENhc2VzLmxpbmsoJm1faml0KTsKICAgICAgICAg
ICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKGluZGV4R1BSKTsKICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTWFwT2JqZWN0VXNlKQotICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CisgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BS
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CiAgICAgICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKQEAgLTUzOTQsNyArNTM5
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAg
ICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJvcGVy
dHksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUiwga2V5
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBrZXlHUFIp
OwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRl
eCAwYzRkMTk1ZDkxNDg1NzIyOTM4NGU5ODQ4ZDE3OTk0ZGEzOTQxMjZkLi5iMDE5OTlhNWVhZWE5
OTIxNjA5MjEyNTc1NTU1MjY4YTc3YTgxYWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaHVua3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1
ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTE0MSw2ICsxNDIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIHB0cmRpZmZfdCBvZmZzZXRPZkZy
YW1lU2l6ZSA9IDA7IC8vIFRoaXMgaXMgdGhlIERGRyBmcmFtZSBjb3VudC4KICAgICBwdHJkaWZm
X3Qgb2Zmc2V0T2ZUYXJnZXRQQyA9IG9mZnNldE9mRnJhbWVTaXplICsgc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkID0gb2Zmc2V0T2ZUYXJnZXRQ
QyArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJs
b2NrID0gb2Zmc2V0T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jazsKICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZMb2NhbHMgPSBvZmZzZXRPZlBheWxv
YWQgKyBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7
CiAgICAgCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBHUFJJbmZvOjpy
ZWdUMCk7CkBAIC0xNjIsOCArMTY0LDIxIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgaml0LmFib3J0V2l0
aFJlYXNvbihERkdVbnJlYXNvbmFibGVPU1JFbnRyeUp1bXBEZXN0aW5hdGlvbik7CiAKICAgICBv
ay5saW5rKCZqaXQpOworCisgICAgaml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDAsIG9mZnNldE9mQ29kZUJsb2NrKSwgR1BSSW5mbzo6cmVnVDIpOworICAg
IGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoR1BSSW5mbzo6cmVnVDIsIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBqaXQucHJvYmVEZWJ1Zyhb
PV0oUHJvYmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAg
fSk7CisjZW5kaWYKKwogICAgIGppdC5yZXN0b3JlQ2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNh
bGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJhbWUpOwogICAgIGppdC5lbWl0TWF0ZXJpYWxp
emVUYWdDaGVja1JlZ2lzdGVycygpOworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QyLCBDb2RlQmxvY2s6Om9mZnNl
dE9mSklURGF0YSgpKSwgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworI2VuZGlmCiAKICAg
ICBqaXQuZmFySnVtcChHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNr
SW5qZWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcAppbmRleCA4ZmQwMmYzYmQzOTQxOWU4MzNlMjdhYTlhMTk3
NjU3ODQ0OWU3YTc1Li4zMTU5Y2RhNWM0MjYzNWNmMzZiZWU3NTMxYjBhMmRiYjI1MzcxZTMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RpZXJVcENoZWNrSW5qZWN0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGllclVwQ2hl
Y2tJbmplY3Rpb25QaGFzZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgVGllclVwQ2hlY2tJ
bmplY3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgCiAgICAgYm9vbCBydW4oKQogICAg
IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFwaC5tX3BsYW4ubW9kZSgpID09IEpJVENv
bXBpbGF0aW9uTW9kZTo6REZHKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNERkcobV9ncmFw
aC5tX3BsYW4ubW9kZSgpKSk7CiAKICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VGVExKSVQoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCAwMjRkZGYwYWY2NzcyYjg1Y2Y0NjQ5ZTliYWIyNGZj
NDg2NDBlNTk2Li4xYjY0MzM0YTE3ZWRlMjIwNmUxMWE1ZGYxMmM1MzY5MjQ2YWYzMjRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0xMzc0
LDYgKzEzNzQsMjIgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5TExJbnRC
YXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUIKICAgICBzcG9vbGVyLmZpbmFs
aXplR1BSKCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0Q29kZUJsb2NrVG9G
cmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCwgYm9vbCBpc0NvbnN0cnVjdG9yKQoreworICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVz
dWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4
ZWN1dGFibGVPclJhcmVEYXRhKCkpLCByZXN1bHQpOworICAgIGF1dG8gaGFzRXhlY3V0YWJsZSA9
IGJyYW5jaFRlc3RQdHIoWmVybywgcmVzdWx0LCBUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6cmFy
ZURhdGFUYWcpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvblJhcmVEYXRh
OjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgcmVzdWx0
KTsKKyAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7CisgICAgaWYgKGlzQ29uc3RydWN0b3Ip
CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zm
c2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSksIHJlc3VsdCk7CisgICAgZWxzZQorICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29k
ZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0KTsKKworICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQs
IEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpLCByZXN1bHQp
OworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGMx
MTdlMGI1Y2Y5Y2UyYWM3NTk4ZTUyZGFkMzM5Y2VhNmIwYWZlZDYuLmVjM2U1ZDQ5MDI5MDdkZDEz
ZWVkYjAyN2Q2NmE2MWFlNjAxYzE1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaApAQCAtNDA2LDYgKzQwNiw4IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVy
cyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIGVt
aXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0LCBib29sIGlzQ29u
c3RydWN0b3IpOworCiAjaWYgQ1BVKFg4Nl82NCkKICAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2ODdlZmRiMDBlYWM3ZDE4NTllNjk3MTUzOWRmMGFh
NWVkMzk4YTc1Li5hNjUyNWY2MGIzMDg1YzI2NzQ1ZmIyY2U3NTEzNzRmZTI1N2I5MmQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTY5LDYgKzY5LDEwIEBA
IGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBH
UFJSZWcgbV9ncHI7CiAgICAgfTsKIAorICAgIC8vIEJhc2UgY2xhc3MgZm9yIGNvbnN0YW50IG1h
dGVyaWFsaXplcnMuCisgICAgLy8gSXQgb2ZmZXJzIERlcml2ZWRDbGFzczo6bWF0ZXJpYWxpemUg
YW5kIHBva2UgZnVuY3Rpb25zLgorICAgIGNsYXNzIENvbnN0YW50TWF0ZXJpYWxpemVyIHsgfTsK
KwogICAgIC8vIFRoZSBtb3N0IGdlbmVyYWwgaGVscGVyIGZvciBzZXR0aW5nIGFyZ3VtZW50cyB0
aGF0IGZpdCBpbiBhIEdQUiwgaWYgeW91IGNhbiBjb21wdXRlIGVhY2gKICAgICAvLyBhcmd1bWVu
dCB3aXRob3V0IHVzaW5nIGFueSBhcmd1bWVudCByZWdpc3RlcnMuIFlvdSB1c3VhbGx5IHdhbnQg
b25lIG9mIHRoZSBzZXR1cEFyZ3VtZW50cyooKQogICAgIC8vIG1ldGhvZHMgYmVsb3cgaW5zdGVh
ZCBvZiB0aGlzLiBUaGlzIHRoaW5nIGlzIG1vc3QgdXNlZnVsIGlmIHlvdSBoYXZlICphIGxvdCog
b2YgYXJndW1lbnRzLgpAQCAtMzY1LDcgKzM2OSwxMCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBw
dWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFy
Z3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVk
IGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAg
ICB7CiAgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1
cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4
dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZShhcmcsIHBv
a2VPZmZzZXQpOworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PENvbnN0
YW50TWF0ZXJpYWxpemVyLCBBcmdUeXBlPikKKyAgICAgICAgICAgIGFyZy5wb2tlKCp0aGlzLCBh
ZGRyZXNzRm9yUG9rZShwb2tlT2Zmc2V0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBv
a2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3Rh
Y2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQ
UkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQpAQCAtNjQ3LDYgKzY1
NCwyNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRy
dXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVt
R1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywg
dW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVk
IG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vf
b2ZfdjxDb25zdGFudE1hdGVyaWFsaXplciwgQXJnPj4KKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwo
QXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1G
UFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0
cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAg
ICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PENVUlJFTlRfQVJHVU1F
TlRfVFlQRT46OnZhbHVlLCAiV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRzL2RvdWJs
ZXMgaW4gc2V0dXBBcmd1bWVudHMiKTsKKyAgICAgICAgYXV0byBudW1BcmdSZWdpc3RlcnMgPSBH
UFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworI2lmIE9TKFdJTkRPV1MpICYmIENQ
VShYODZfNjQpCisgICAgICAgIGF1dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJncyArIG51
bUZQUkFyZ3MgKyAoc3RkOjppc19zYW1lPFJFU1VMVF9UWVBFLCBTbG93UGF0aFJldHVyblR5cGU+
Ojp2YWx1ZSA/IDEgOiAwKTsKKyNlbHNlCisgICAgICAgIGF1dG8gY3VycmVudEFyZ0NvdW50ID0g
bnVtR1BSQXJncyArIGV4dHJhR1BSQXJnczsKKyNlbmRpZgorICAgICAgICBpZiAoY3VycmVudEFy
Z0NvdW50IDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0lt
cGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7Cisg
ICAgICAgICAgICBhcmcubWF0ZXJpYWxpemUoKnRoaXMsIEdQUkluZm86OnRvQXJndW1lbnRSZWdp
c3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51
bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRH
UFJBcmcoKSwgYXJncy4uLik7CisgICAgfQorCiAjdW5kZWYgQ1VSUkVOVF9BUkdVTUVOVF9UWVBF
CiAjdW5kZWYgUkVTVUxUX1RZUEUKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRl
eCAwMDIyYmQ5Yjk4NTk1YTgzMGMxZWUwOTU2ZjgxMDgzZWQ0NzgxZTg2Li42N2U0N2IzYzZjNmY2
MGZiMDE1OGZhYzhmMTllNzAyZWRhN2UxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUklu
Zm8uaApAQCAtNDIwLDEzICs0MjAsMTQgQEAgY2xhc3MgR1BSSW5mbyB7CiBjbGFzcyBHUFJJbmZv
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDExOworICAgIHN0YXRpYyBj
b25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAxMDsKICAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTOwogCiAgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNl
bGluZSBKSVQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIg
PSBYODZSZWdpc3RlcnM6OmVicDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJU
YWdSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG5vdENlbGxNYXNrUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBjb25zdGFudHNSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEzOwog
CiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNDUwLDE2ICs0NTEsMTYgQEAgY2xhc3Mg
R1BSSW5mbyB7CiAKICNpZiAhT1MoV0lORE9XUykKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzEgPSBYODZSZWdpc3RlcnM6OnIxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsgLy8gY29uc3RhbnRzUmVnaXN0ZXIKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxNDsgLy8gbnVt
YmVyVGFnUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZS
ZWdpc3RlcnM6OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdpc3RlcgogI2Vsc2UKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBYODZSZWdpc3RlcnM6OmVzaTsKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OmVkaTsKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxMjsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxMzsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBYODZSZWdpc3RlcnM6OnIxNDsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxMzsgLy8gY29uc3RhbnRz
UmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBYODZSZWdpc3Rl
cnM6OnIxNDsgLy8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzYgPSBYODZSZWdpc3RlcnM6OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdpc3RlcgogI2Vu
ZGlmCiAKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBn
ZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgpAQCAtNDk3
LDkgKzQ5OCw5IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHsKICAgICAgICAgQVNTRVJUKGluZGV4
IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwogI2lmICFPUyhXSU5ET1dTKQotICAgICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdU
MCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ0NT
MCwgcmVnQ1MxLCByZWdDUzIgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3Rl
ckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVn
VDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdDUzAsIHJlZ0NTMSB9OwogI2Vsc2UK
LSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVn
aXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVn
Q1MwLCByZWdDUzEsIHJlZ0NTMiwgcmVnQ1MzLCByZWdDUzQgfTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAs
IHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnQ1MwLCByZWdDUzEsIHJlZ0NT
MiwgcmVnQ1MzIH07CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5k
ZXhdOwogICAgIH0KQEAgLTYzNCw2ICs2MzUsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpm
cDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9IEFSTTY0
UmVnaXN0ZXJzOjp4Mjc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tS
ZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI2OwogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIGRhdGFUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRl
bXBSZWdpc3RlcjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZW1vcnlUZW1wUmVnaXN0
ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6bWVtb3J5VGVtcFJlZ2lzdGVyOwogICAgIC8vIFRlbXBvcmFy
eSByZWdpc3RlcnMuCkBAIC02NjAsNyArNjYyLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gQVJNNjRSZWdpc3RlcnM6OngyMzsgLy8gVXNl
ZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IEFSTTY0
UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsgLy8gY29uc3RhbnRzCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0gQVJNNjRSZWdpc3RlcnM6OngyNzsg
Ly8gbnVtYmVyVGFnCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M5ID0gQVJNNjRS
ZWdpc3RlcnM6OngyODsgLy8gbm90Q2VsbE1hc2sKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJv
dmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4g
dmFsdWUgcmVnaXN0ZXJzLgpAQCAtNzc3LDcgKzc3OSw3IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMCA9IE1JUFNSZWdpc3RlcnM6OnMwOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9IE1JUFNSZWdpc3RlcnM6OnMxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9IE1JUFNSZWdpc3RlcnM6OnMxOyAv
LyBjb25zdGFudHMKIAogICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRl
eCkKICAgICB7CkBAIC04MzIsNiArODM0LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBSSVNDVjY0UmVnaXN0ZXJzOjpm
cDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9IFJJU0NW
NjRSZWdpc3RlcnM6OngyNTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub3RDZWxsTWFz
a1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2OworICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIGNvbnN0YW50c1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI0OwogCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDAgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MTA7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDEgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MTE7
CkBAIC04NTQsNyArODU3LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1M0ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDIxOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTNSA9IFJJU0NWNjRSZWdpc3RlcnM6OngyMjsKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjM7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI0OworICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNDsg
Ly8gY29uc3RhbnRzCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0gUklTQ1Y2
NFJlZ2lzdGVyczo6eDI1OyAvLyBudW1iZXJUYWcKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzkgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjY7IC8vIG5vdENlbGxNYXNrCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxMCA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlOWMwZWNjMzBlYWNjNjhjNTU5ZjhhYzQ2M2Ux
MDYyMjMxZGRlYjZhLi5mZTZlMjY3OTBjZDc1OTQ5ZGQ0N2Y0MzViNGIzODk1YWYzOTQ3NTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDUsMTkgKzIwNSw3IEBAIHZvaWQgSklU
OjplbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIs
IFNsb3dQYXRoRnVuY3RpCiB2b2lkIEpJVDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xv
Z3VlKEdQUlJlZyByZXN1bHQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVC
bG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVzdWx0KTsKLSAgICBsb2FkUHRy
KEFkZHJlc3MocmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRh
KCkpLCByZXN1bHQpOwotICAgIGF1dG8gaGFzRXhlY3V0YWJsZSA9IGJyYW5jaFRlc3RQdHIoWmVy
bywgcmVzdWx0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0
YVRhZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uUmFyZURhdGE6Om9m
ZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCByZXN1bHQpOwot
ICAgIGhhc0V4ZWN1dGFibGUubGluayh0aGlzKTsKLSAgICBpZiAobV91bmxpbmtlZENvZGVCbG9j
ay0+aXNDb25zdHJ1Y3RvcigpKQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5j
dGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCByZXN1bHQp
OwotICAgIGVsc2UKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVj
dXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7Ci0KLSAgICBsb2Fk
UHRyKEFkZHJlc3MocmVzdWx0LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZzZXRPZkNv
ZGVCbG9jaygpKSwgcmVzdWx0KTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0
LCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwotCisgICAgQXNzZW1ibHlIZWxwZXJzOjplbWl0
UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVzdWx0LCBtX3VubGlua2VkQ29kZUJsb2Nr
LT5pc0NvbnN0cnVjdG9yKCkpOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgcHJvYmVEZWJ1Zyhb
PV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CkBAIC0yNzQsNyArMjYyLDcgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBpZiAob3Bjb2RlSUQg
IT0gb3BfY2F0Y2gpIHsKICAgICAgICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spLCByZWdUMCk7CiAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCByZWdUMSk7Ci0gICAgICAg
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZCYXNlbGluZUpJ
VERhdGEoKSksIHJlZ1QyKTsKKyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHJlZ1QyKTsKIAogICAgICAgICAgICAgYXV0byBt
ZXRhZGF0YU9LID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwgc19tZXRhZGF0YUdQUik7CiAgICAg
ICAgICAgICBicmVha3BvaW50KCk7CkBAIC02OTgsNyArNjg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRN
YXRlcmlhbGl6ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29sUmVnaXN0ZXJzKCkKIHsKICAgICBsb2Fk
UHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk1ldGFkYXRhVGFibGUoKSks
IHNfbWV0YWRhdGFHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpKSwgc19jb25zdGFudHNHUFIpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHNfY29uc3RhbnRz
R1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQpAQCAtNzY3LDcgKzc1
NSw3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBp
bGF0aW9uRWZmb3J0IGVmZm9ydCkKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAg
aWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAg
ICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdFB1
dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKHJlZ1QwKTsKIAogICAgIExhYmVsIGJlZ2luTGFi
ZWwodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGI4ZmRhNWQxYjQzMTVlOWY3
ZDcwNGM0NmFhYTVhNWIxYmIwMzQ0ZmIuLmIxMzBlM2VjOTZmZjhiZWUzMTMxNGExYjBkYzg5NDFl
MDEzMTA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjYyLDcgKzI2Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGxvYWRDb2RlQmxvY2tDb25zdGFudFRhZyhWaXJ0
dWFsUmVnaXN0ZXIsIFJlZ2lzdGVySUQpOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBlbWl0UHV0
Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCA9IHJlZ1QwKTsKKyAgICAg
ICAgdm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCk7
CiAKICAgICAgICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAg
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRp
b25Nb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25Nb2Rl
LmNwcAppbmRleCBjNTlkMzk0YTQ2N2M1ZmRkNjhmZmUyZjljMmZiNTI1NmE3NDIyMDZjLi5jZGY2
YzEwMjRmODFlM2VmOTRiMWU4MzYyNzY3MmZiYTU0MzFjODJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvbXBpbGF0aW9uTW9kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb21waWxhdGlvbk1vZGUuY3BwCkBAIC00NCw2ICs0NCw5IEBA
IHZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKSVRDb21waWxhdGlvbk1vZGUg
bW9kZSkKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6REZHOgogICAgICAgICBvdXQucHJp
bnQoIkRGR01vZGUiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSklUQ29tcGlsYXRpb25N
b2RlOjpVbmxpbmtlZERGRzoKKyAgICAgICAgb3V0LnByaW50KCJVbmxpbmtlZERGRyIpOworICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDoKICAgICAgICAg
b3V0LnByaW50KCJGVExNb2RlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25Nb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvbXBpbGF0aW9uTW9kZS5oCmluZGV4IDdiYzBlMDdmZjUzY2EzMTU5
OWI1NjhlZmEyMTU5MWE2MzJjYjk1NGYuLjA2OGE1NzJiZjI2ZjZkZWUxODc0ODk4NmRmMTljODUx
Y2Q2M2UxYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGls
YXRpb25Nb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb21waWxhdGlv
bk1vZGUuaApAQCAtMzMsMTAgKzMzLDIyIEBAIGVudW0gY2xhc3MgSklUQ29tcGlsYXRpb25Nb2Rl
IHsKICAgICBJbnZhbGlkQ29tcGlsYXRpb24sCiAgICAgQmFzZWxpbmUsCiAgICAgREZHLAorICAg
IFVubGlua2VkREZHLAogICAgIEZUTCwKLSAgICBGVExGb3JPU1JFbnRyeQorICAgIEZUTEZvck9T
UkVudHJ5LAogfTsKIAoraW5saW5lIGJvb2wgaXNERkcoSklUQ29tcGlsYXRpb25Nb2RlIG1vZGUp
Cit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRG
RzoKKyAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6VW5saW5rZWRERkc6CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9
CisKIGlubGluZSBib29sIGlzRlRMKEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlKQogewogICAgIHN3
aXRjaCAobW9kZSkgewpAQCAtNDgsNiArNjAsMTcgQEAgaW5saW5lIGJvb2wgaXNGVEwoSklUQ29t
cGlsYXRpb25Nb2RlIG1vZGUpCiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBpc1VubGlua2VkKEpJ
VENvbXBpbGF0aW9uTW9kZSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2Ug
SklUQ29tcGlsYXRpb25Nb2RlOjpCYXNlbGluZToKKyAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9k
ZTo6VW5saW5rZWRERkc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1l
c3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IDViODVjN2FjNTE3YTcwMmRjZmQ3YTYyZWRmMDkyMTFhM2Q1ZDMzM2UuLjQ0YzEyZDhkNjkyNDI5
NGEwNTg4ZmM0NjJlZjU4MjkyNTJiODFkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0
Y2goY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNvIHdl
IHJlcGxlbmlzaCBpdCBoZXJlLgogICAgIHsKICAgICAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKCkpLCBzX2NvbnN0YW50
c0dQUik7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKICAgICB9CiAKICAgICBjYWxsT3BlcmF0aW9u
Tm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25SZXRyaWV2ZUFuZENsZWFyRXhjZXB0aW9uSWZDYXRj
aGFibGUsICZ2bSgpKTsKQEAgLTEwNDYsNiArMTA0Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGNhbGxP
cGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZh
bHVlUHJvZmlsZSwgJnZtKCksIG1fYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSk7CiAgICAgYXV0byBz
a2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmV0dXJuVmFsdWVHUFIyLCBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spOwogICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICBmYXJKdW1wKHJl
dHVyblZhbHVlR1BSLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKICAgICBza2lwT1NSRW50cnku
bGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGVmYzlhMGU4YmIwMmUyMjU4MTE4NDYyM2QxMDYwYTg5MzVjZGYyYTEuLjViNWRhNzhk
YmE3MTU2MjMxMmU5NzA2N2Y0NjdiNDU3MzkwODRhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjA1Niw3ICsyMDU2LDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5cGUsIChW
TSogdm1Qb2ludGVyLAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7
CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0
Y2gsIGNoYXIqLCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZh
bHVlUHJvZmlsZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3Qg
Ynl0ZWNvZGVJbmRleEJpdHMpKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2NiwzNyAr
MjA2NiwxMyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJB
dENhdGNoLCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIHVpbgogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJl
cGxhY2VtZW50ID0gY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpOwogICAgIGlmIChVTkxJS0VMWSgh
b3B0aW1pemVkUmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHN3
aXRjaCAob3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSkgewotICAgIGNhc2UgSklUVHlw
ZTo6REZHSklUOgotICAgIGNhc2UgSklUVHlwZTo6RlRMSklUOiB7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBlbnRyeSA9IERGRzo6cHJlcGFy
ZUNhdGNoT1NSRW50cnkodm0sIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBvcHRpbWl6ZWRSZXBsYWNl
bWVudCwgYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIHJldHVybiBlbnRyeS5leGVjdXRhYmxlQWRk
cmVzczxjaGFyKj4oKTsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBjaGFyKiwgKFZNKiB2bVBv
aW50ZXIsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXhCaXRzKSkKLXsKLSAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7Ci0gICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRl
eDo6ZnJvbUJpdHMoYnl0ZWNvZGVJbmRleEJpdHMpOwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVw
bGFjZW1lbnQgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7Ci0gICAgaWYgKFVOTElLRUxZKCFv
cHRpbWl6ZWRSZXBsYWNlbWVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgc3dpdGNoIChvcHRp
bWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpKSB7CiAgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6
CiAgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGVudHJ5ID0gREZHOjpwcmVwYXJlQ2F0Y2hPU1JF
bnRyeSh2bSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRl
Y29kZUluZGV4KTsKLSAgICAgICAgcmV0dXJuIGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIq
PigpOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNz
PGNoYXIqPigpLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwpAQCAtMjEwOSw3ICsyMDg1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChW
TSoKICAgICAgICAgcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoY2FsbEZy
YW1lLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOwogICAgIH0pOwog
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBu
dWxscHRyKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IDJhNTlmNjRlODg1YWQ1YTI1ZTE4NjcyZjk2YzNkZDViYjg2NWJkMGYuLmM1
Y2U1OGRlZmY5OGVlYjZhZmFjYzQ2Y2RiMWU4MzY4MTc2NGVlMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTksOCArMjU5LDcgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvdywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVidWcs
IHZvaWQsIChWTSosIGludDMyX3QpKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT3B0aW1pemUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKFZN
KiwgdWludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoLCBjaGFyKiwgKFZNKiwgdWludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBjaGFy
KiwgKFZNKiwgdWludDMyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBTbG93UGF0aFJldHVyblR5cGUsIChW
TSosIHVpbnQzMl90KSk7CiAjZW5kaWYKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0R2V0dGVyQnlJZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCop
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUGxhbi5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBsYW4uY3BwCmluZGV4IDk2ZmNiMjMxMGJiZDlm
ZGRmYTg4MTQyZGM0NDQ5OTg5OWQxY2ZhZTQuLmYwNDg4MzM5Nzg3YTQ3MGY5ODc4ZDJlNGEwNWI3
MmQyMDU3ZjYxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUGxh
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQbGFuLmNwcApAQCAtNzcs
NiArNzcsNyBAQCBhdXRvIEpJVFBsYW46OnRpZXIoKSBjb25zdCAtPiBUaWVyCiAgICAgY2FzZSBK
SVRDb21waWxhdGlvbk1vZGU6OkJhc2VsaW5lOgogICAgICAgICByZXR1cm4gVGllcjo6QmFzZWxp
bmU7CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzoKKyAgICBjYXNlIEpJVENvbXBp
bGF0aW9uTW9kZTo6VW5saW5rZWRERkc6CiAgICAgICAgIHJldHVybiBUaWVyOjpERkc7CiAgICAg
Y2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkZUTDoKICAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9k
ZTo6RlRMRm9yT1NSRW50cnk6CkBAIC0xNDUsNyArMTQ2LDcgQEAgYm9vbCBKSVRQbGFuOjpyZXBv
cnRDb21waWxlVGltZXMoKSBjb25zdAogewogICAgIHJldHVybiBPcHRpb25zOjpyZXBvcnRDb21w
aWxlVGltZXMoKQogICAgICAgICB8fCAoT3B0aW9uczo6cmVwb3J0QmFzZWxpbmVDb21waWxlVGlt
ZXMoKSAmJiBtX21vZGUgPT0gSklUQ29tcGlsYXRpb25Nb2RlOjpCYXNlbGluZSkKLSAgICAgICAg
fHwgKE9wdGlvbnM6OnJlcG9ydERGR0NvbXBpbGVUaW1lcygpICYmIG1fbW9kZSA9PSBKSVRDb21w
aWxhdGlvbk1vZGU6OkRGRykKKyAgICAgICAgfHwgKE9wdGlvbnM6OnJlcG9ydERGR0NvbXBpbGVU
aW1lcygpICYmIGlzREZHKCkpCiAgICAgICAgIHx8IChPcHRpb25zOjpyZXBvcnRGVExDb21waWxl
VGltZXMoKSAmJiBpc0ZUTCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBsYW4uaApp
bmRleCA5YThkZjRhNzQ5NjBiOWRkMDg3YmYzN2I1MzFiMDI0ZmExYTEzYjQ1Li5lMmIwNGY3YTJl
ZjllNzZlZjU5M2U4YmQxOTRjZmNiNzA0MWM2MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFBsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFBsYW4uaApAQCAtNTYsNyArNTYsOSBAQCBjbGFzcyBKSVRQbGFuIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPEpJVFBsYW4+IHsKICAgICBKSVRDb21waWxhdGlvbk1vZGUgbW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogCiAgICAgSklUUGxhblN0YWdlIHN0YWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGFnZTsgfQorICAgIGJvb2wgaXNERkcoKSBjb25zdCB7IHJldHVybiA6OkpT
Qzo6aXNERkcobV9tb2RlKTsgfQogICAgIGJvb2wgaXNGVEwoKSBjb25zdCB7IHJldHVybiA6OkpT
Qzo6aXNGVEwobV9tb2RlKTsgfQorICAgIGJvb2wgaXNVbmxpbmtlZCgpIGNvbnN0IHsgcmV0dXJu
IDo6SlNDOjppc1VubGlua2VkKG1fbW9kZSk7IH0KIAogICAgIGVudW0gY2xhc3MgVGllciB7IEJh
c2VsaW5lID0gMCwgREZHID0gMSwgRlRMID0gMiwgQ291bnQgPSAzIH07CiAgICAgVGllciB0aWVy
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVy
U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCmluZGV4
IDM4YzY3OTQ5ZmRkZjA3M2E4OGZhNTU4Mjk3MmM5MjVjMTYxY2RlZDQuLjFjMzEyNzU0ZDBjMzlh
MjFhYjYwMGQ3NmVhNWM5NWQ1OWVjZGM2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuY3BwCkBAIC0yMDAsMTYgKzIwMCwxOCBAQCBSZWdpc3RlclNldCBSZWdpc3Rl
clNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKQogI2VsaWYgQ1BVKFg4Nl82
NCkKICNpZiAhT1MoV0lORE9XUykKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Cisg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzIgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVn
aXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9
PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbHNlCiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5m
bzo6cmVnQ1M0ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0g
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAjZW5kaWYKQEAgLTIxOCw5ICsyMjAsMTAgQEAgUmVn
aXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAjZWxpZiBDUFUoQVJNNjQpIHx8IENQ
VShSSVNDVjY0KQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKKyAgICBzdGF0aWNf
YXNzZXJ0KEdQUkluZm86OnJlZ0NTNyA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7Cisg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
OCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwogI2Vsc2UKQEAgLTIzNiwxNyAr
MjM5LDIwIEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJz
KCkKICNlbGlmIENQVShYODZfNjQpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMik7CiAjaWYgIU9TKFdJTkRPV1MpCi0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpy
ZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7
CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzIgPT0gR1BSSW5mbzo6Y29uc3RhbnRz
UmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9
PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIp
OworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENlbGxN
YXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwg
IiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIsICIiKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwogI2VuZGlmCkBAIC0yNTQsOCArMjYwLDEw
IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzEpOwogI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKLSAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwot
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNyA9PSBHUFJJ
bmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdD
UzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwogI2Vsc2UKQEAgLTI3Miw4ICsyODAs
OCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MxKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7Ci0gICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVn
Q1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxpZiBD
UFUoQVJNNjQpCkBAIC0yODYsOCArMjk0LDggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0
bENhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzcpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdD
UzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOworICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CiAgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzkpOwogICAgIHJlc3VsdC5zZXQoRlBSSW5mbzo6ZnBSZWdDUzApOwpAQCAt
MzA3LDggKzMxNSw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVn
aXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAgICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzYpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJl
Z0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5
KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMTApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5oCmluZGV4IGMwMzMzZDM0MmIwOWIwMzA0MDEwZjQ0NjI4NDNmYzA4
OTQ4MjllZTQuLjE1MTE1ZWUwN2QyNGYxNGJlZTZkYmFmZTYyMjYyYzY4MDI0NTAyOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKQEAgLTM5NSwxMyArMzk1LDEzIEBA
IHN0cnVjdCBSZWdpc3RlcnMgewogCiAjaWYgQ1BVKFg4Nl82NCkgJiYgIU9TKFdJTkRPV1MpCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJl
Z0NTMTsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NT
MjsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OmNvbnN0YW50
c1JlZ2lzdGVyOwogI2VsaWYgQ1BVKFg4Nl82NCkgJiYgT1MoV0lORE9XUykKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1MzOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1M0OworICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXI7
CiAjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzY7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzc7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlcjsKICNlbGlmIENQ
VShNSVBTKSB8fCBDUFUoQVJNX1RIVU1CMikKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBt
ZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1MwOwogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1MxOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGE4ZTdjNzM5OWQ1ODFh
NTk2MGQwYWE3YWE3MjQzMzVkYjAzNTRjNzUuLjEzYjE3OGNmY2Q3MzZiMDhmNjRjOTE4MjRkMDJh
MDI3YTAzOTBjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTI2MjUsNyArMjYyNSw3IEBAIGlmIEpJVAogICAgIG1h
Y3JvIGxvYWRCYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCiAgICAgICAgICMgQmFzZWxpbmUgdXNl
cyBMTEludCdzIFBCIHJlZ2lzdGVyIGZvciBpdHMgSklUIGNvbnN0YW50IHBvb2wuCiAgICAgICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYmFz
ZWxpbmVKSVREYXRhW1BCXSwgUEIKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ppdERhdGFb
UEJdLCBQQgogICAgIGVuZAogCiAgICAgbWFjcm8gc2V0dXBSZXR1cm5Ub0Jhc2VsaW5lQWZ0ZXJD
aGVja3BvaW50RXhpdElmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwCmluZGV4IDNmYmUyNTE5
MjVhZGIzODNiNzhiZTVhMWVkMWUyY2U0NWJiODgzMzkuLjFmMjY3YzkyNjNjYzY4YmI0ZDIzYTAy
YTdmYmI3MTFmYzFlNGFiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNwcApAQCAtNDIsNiArNDIsOSBA
QCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpQcm9maWxlcjo6Q29t
cGlsYXRpb25LaW5kIGtpbmQpCiAgICAgY2FzZSBKU0M6OlByb2ZpbGVyOjpERkc6CiAgICAgICAg
IG91dC5wcmludCgiREZHIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6UHJvZmls
ZXI6OlVubGlua2VkREZHOgorICAgICAgICBvdXQucHJpbnQoIlVubGlua2VkREZHIik7CisgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIEpTQzo6UHJvZmlsZXI6OkZUTDoKICAgICAgICAgb3V0LnBy
aW50KCJGVEwiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaAppbmRleCBhYWVmZDRi
NDZmYTgzNjg0Njc3NmE3NmYyY2IyYzIzNGQ3OGM0M2RmLi4yMTA0YWIwNWNmMjYzZjEyZWQ5Yzdj
ZjllMTI2OWJjZGQ5ODY5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuaApAQCAtMzEsOCArMzEsOSBAQCBl
bnVtIENvbXBpbGF0aW9uS2luZCB7CiAgICAgTExJbnQsCiAgICAgQmFzZWxpbmUsCiAgICAgREZH
LAorICAgIFVubGlua2VkREZHLAogICAgIEZUTCwKLSAgICBGVExGb3JPU1JFbnRyeQorICAgIEZU
TEZvck9TUkVudHJ5LAogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBiNDY5M2Y5MWM2
MDdkOGQwNzQ1OTQ2NDZlOGRjNDM3MmU5YmM5OWU2Li43YjljYTI4MTIxMDhiMTBjYzc4NTYzYTU1
YjgxN2EwYTI5NGVmODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyLmgKQEAgLTg4LDYgKzg4LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXJDb250ZW50cyB7CiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIHsgcmV0dXJuICEhbV9kYXRhOyB9CiAgICAgCiAg
ICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXRNYXlCZU51bGwoc2l6ZUlu
Qnl0ZXMoKSk7IH0KKyAgICB2b2lkKiBkYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2RhdGEuZ2V0VW5zYWZlKCk7IH0KICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMoKSBj
b25zdCB7IHJldHVybiBtX3NpemVJbkJ5dGVzOyB9CiAgICAgCiAgICAgYm9vbCBpc1NoYXJlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkOyB9CkBAIC0xMzYsNiArMTM3LDkgQEAgY2xhc3MgQXJy
YXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKICAg
ICBpbmxpbmUgdm9pZCogZGF0YSgpOwogICAgIGlubGluZSBjb25zdCB2b2lkKiBkYXRhKCkgY29u
c3Q7CiAgICAgaW5saW5lIHNpemVfdCBieXRlTGVuZ3RoKCkgY29uc3Q7CisKKyAgICBpbmxpbmUg
dm9pZCogZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCk7CisgICAgaW5saW5lIGNvbnN0IHZvaWQq
IGRhdGFXaXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbWFrZVNo
YXJlZCgpOwogICAgIHZvaWQgc2V0U2hhcmluZ01vZGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7
CkBAIC0yMDEsNiArMjA1LDE2IEBAIGNvbnN0IHZvaWQqIEFycmF5QnVmZmVyOjpkYXRhKCkgY29u
c3QKICAgICByZXR1cm4gbV9jb250ZW50cy5kYXRhKCk7CiB9CiAKK3ZvaWQqIEFycmF5QnVmZmVy
OjpkYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKQoreworICAgIHJldHVybiBtX2NvbnRlbnRzLmRh
dGFXaXRob3V0UEFDVmFsaWRhdGlvbigpOworfQorCitjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6
ZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZW50
cy5kYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKTsKK30KKwogc2l6ZV90IEFycmF5QnVmZmVyOjpi
eXRlTGVuZ3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb250ZW50cy5zaXplSW5CeXRlcygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlld0lubGluZXMuaAppbmRleCBkODViMzI4MzA3NjJhOTA4MjAxY2I5YzQ1YzkyOTE2OWEx
YzE1NTY1Li5mZTNmNWNjM2E1Y2QxM2UxNTg5N2M3YTliMmVmNTFiNmEyMzg3ODdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
d0lubGluZXMuaApAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgUmVzdWx0VHlwZSBKU0FycmF5QnVm
ZmVyVmlldzo6Ynl0ZU9mZnNldEltcGwoKQogICAgIH0KIAogICAgIHB0cmRpZmZfdCBkZWx0YSA9
Ci0gICAgICAgIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odmVjdG9yV2l0aG91dFBBQ1ZhbGlkYXRp
b24oKSkgLSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpOworICAgICAgICBi
aXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNWYWxpZGF0aW9uKCkpIC0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCkpOwog
CiAgICAgc2l6ZV90IHJlc3VsdCA9IHN0YXRpY19jYXN0PHNpemVfdD4oZGVsdGEpOwogICAgIGlm
IChyZXF1ZXN0ZXIgPT0gTXV0YXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGQ5ZGExZTQ2NmI5Yzk4N2Q3NjMxMGEyYTY3Mzk4Mzc1
NjcxNGQzMTEuLmY0NzAwZDY2ZWEwOGQ3NmU0NjBkYTM0ZjVlN2VmNTU1NTliYWEwYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtOTIx
LDYgKzkyMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFJlZ0V4cEdsb2JhbERhdGEmIHJlZ0V4cEdsb2JhbERhdGEoKSB7
IHJldHVybiBtX3JlZ0V4cEdsb2JhbERhdGE7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IHJlZ0V4
cEdsb2JhbERhdGFPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmpl
Y3QsIG1fcmVnRXhwR2xvYmFsRGF0YSk7IH0KIAorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0
T2ZHbG9iYWxUaGlzKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBt
X2dsb2JhbFRoaXMpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlZNKCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3ZtKTsgfQogICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50KTsg
fQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2No
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2dsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2gpOyB9Cg==
</data>
<flag name="commit-queue"
          id="482368"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454649</attachid>
            <date>2022-03-14 19:25:13 -0700</date>
            <delta_ts>2022-03-15 22:56:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220314192511.patch</filename>
            <type>text/plain</type>
            <size>252251</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
N2M5YjFjZGFkNTg1YmUxYjU4Y2IwOWI4ZWUyMTllMDI4MzhhNWQ1Li44Y2U0ODQ4ZGRkNDZhMTMx
MjA3NGM3MDdjNDk5YjJhODNhMTM1NGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTYgQEAKKzIwMjItMDMtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXJQdHIpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0
cmFuc2ZlclB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
SklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01h
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldERGR0pJ
VERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxv
Y2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OndhdGNoQ29uZGl0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6d2F0Y2hDb25kaXRpb25zKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
d2F0Y2hHbG9iYWxQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnRyeUdldENv
bnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRDb25zdGFu
dENsb3N1cmVWYXIpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRGb2xkYWJsZVZp
ZXcpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpnZXRSZWdFeHBQcm90b3R5cGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmNhbk9wdGltaXplU3RyaW5nT2JqZWN0QWNj
ZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2FuRG9GYXN0U3ByZWFkKToKKyAgICAg
ICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAg
ICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGls
ZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBp
bGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6
VW5saW5rZWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQ6Om1hdGVyaWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudDo6cG9rZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtQdHIpOiBEZWxl
dGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAg
KEpTQzo6REZHOjpQbGFuOjphZGRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZH
OjpQbGFuOjpmaW5hbGl6ZUpJVERhdGEpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAg
ICAgICogZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEdldENhbGxlZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5CeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQ
cml2YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hX
aXRoU2NvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
aW5nU2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9M
b3dlckNhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Vy
cmVudEJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNo
ZWNrVHJhcHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbik6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJh
bmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAq
IGRmZy9ERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpUaWVyVXBDaGVja0luamVjdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGppdC9Bc3NlbWJs
eUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRDb2Rl
QmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxw
ZXJzOjpwb2tlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzSW1wbCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6
R1BSSW5mbzo6dG9SZWdpc3Rlcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
TWF0ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycyk6CisgICAgICAgIChK
U0M6OkpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRDb21waWxhdGlvbk1vZGUuY3BwOgorICAgICAgICAo
V1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBqaXQvSklUQ29tcGlsYXRpb25Nb2RlLmg6
CisgICAgICAgIChKU0M6OmlzREZHKToKKyAgICAgICAgKEpTQzo6aXNVbmxpbmtlZCk6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0
Y2gpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGppdC9KSVRQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6SklUUGxhbjo6dGllciBj
b25zdCk6CisgICAgICAgIChKU0M6OkpJVFBsYW46OnJlcG9ydENvbXBpbGVUaW1lcyBjb25zdCk6
CisgICAgICAgICogaml0L0pJVFBsYW4uaDoKKyAgICAgICAgKEpTQzo6SklUUGxhbjo6aXNERkcg
Y29uc3QpOgorICAgICAgICAoSlNDOjpKSVRQbGFuOjppc1VubGlua2VkIGNvbnN0KToKKyAgICAg
ICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxp
bnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpm
dGxDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmg6CisgICAg
ICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlckNv
bnRlbnRzOjpkYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24gY29uc3QpOgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlcjo6ZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKToKKyAgICAgICAgKEpTQzo6QXJy
YXlCdWZmZXI6OmRhdGFXaXRob3V0UEFDVmFsaWRhdGlvbiBjb25zdCk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1
ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvZmZzZXRPZkdsb2JhbFRoaXMp
OgorCiAyMDIyLTAzLTExICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgW0dMaWJdIEV4cG9zZSBBcnJheUJ1ZmZlciBpbiB0aGUgcHVibGljIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAppbmRleCA2MzM3NzNhZWVjOWQxYzk2N2ZhOThhNWFjYjJhMTI0NTJlYjI1MDdj
Li5jOGQ3ZTdkZGRhMzY0MmM0MGVlNGY1NDU4Yjk4ZmJlZDkwNzlkMjc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApA
QCAtMTk2MCw2ICsxOTYwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMg
QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgc3RvcmU2NChkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHRyYW5zZmVyNjQoQWRk
cmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGdldENh
Y2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHN0b3JlNjQo
Z2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpLCBkZXN0KTsKKyAgICB9
CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgRGF0YUxhYmVs
MzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3Mg
YWRkcmVzcykKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGxhYmVsKHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NW
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVND
VjY0LmgKaW5kZXggMzY0Njg2ZGZmNjg5OTRkZWFhMDRlOTU2NjM2YWQ2MmYwMmVjMTE1NS4uYjNi
ZjZlYmY5NzAyMTUzNjgyOGQyOGQwMWFkNDgwYzM1OGNiOWYyMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCkBA
IC0xMTcxLDYgKzExNzEsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJSSVNDVjY0IDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNkSW5zbih0ZW1wLm1lbW9yeSgpLCBpbW1SZWdpc3RlciwgSW1tOjpTPDA+KCkpOwogICAgIH0K
IAorICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsK
KyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YT4oKTsKKyAgICAgICAgbG9hZDY0KHNyYywg
dGVtcC5kYXRhKCkpOworICAgICAgICBzdG9yZTY0KHRlbXAuZGF0YSgpLCBkZXN0KTsKKyAgICB9
CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdG9y
ZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZElt
bTMyKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiMmU5MTFhYTEzNjYzYTI1MDk4NDBhMDU2ODg0MTJm
MjkyOGVmNDYzLi4xYmVjOWU4NTViZmNhODFiMDkxNDQ4YWRhY2Q1MmY4ZmYxZTU3NjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCkBAIC0xMDI2LDYgKzEwMjYsMTcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZf
NjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAgICBtb3ZlKGltbSwg
c2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNjcmF0Y2hS
ZWdpc3RlcigpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBh
ZGRyZXNzLnNjYWxlKTsKICAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVyNjQoQWRkcmVzcyBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKKyAgICAgICAgc3RvcmU2NChzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7CisgICAgfQor
CisgICAgdm9pZCB0cmFuc2ZlclB0cihBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsK
KyAgICAgICAgdHJhbnNmZXI2NChzcmMsIGRlc3QpOworICAgIH0KICAgICAKICAgICBEYXRhTGFi
ZWwzMiBzdG9yZTY0V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggMDk4YWVkOTM1YTY4ZjdkNjY4N2JkMzUyMzI1MzA3N2YzMWVkMTlmMi4u
MjU5NmY4MzQ5MDZiM2Q4MWRjM2M3MzQzN2ViMTIxMzZkMDJlZDFhYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTc4Nyw5ICs3ODcsOSBAQCB2
b2lkIENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5l
SklUQ29kZT4gaml0Q29kZSkKIAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgICAgICBBU1NFUlQoIW1fYmFzZWxpbmVKSVREYXRhKTsKLSAgICAg
ICAgbV9iYXNlbGluZUpJVERhdGEgPSBCYXNlbGluZUpJVERhdGE6OmNyZWF0ZShqaXRDb2RlLT5t
X2NvbnN0YW50UG9vbC5zaXplKCkpOwotICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+bV9zdHVi
SW5mb3MgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0Q29kZS0+bV91bmxpbmtl
ZFN0dWJJbmZvcy5zaXplKCkpOworICAgICAgICBBU1NFUlQoIW1faml0RGF0YSk7CisgICAgICAg
IGF1dG8gYmFzZWxpbmVKSVREYXRhID0gQmFzZWxpbmVKSVREYXRhOjpjcmVhdGUoaml0Q29kZS0+
bV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJ
bmZvcyA9IEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPihqaXRDb2RlLT5tX3VubGlua2Vk
U3R1YkluZm9zLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgdW5saW5rZWRDYWxsTGlua0lu
Zm8gOiBqaXRDb2RlLT5tX3VubGlua2VkQ2FsbHMpIHsKICAgICAgICAgICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gZ2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNvZGVJbmRleChsb2NrZXIs
IHVubGlua2VkQ2FsbExpbmtJbmZvLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgQVNTRVJU
KGNhbGxMaW5rSW5mbyk7CkBAIC04MDAsMjggKzgwMCwyOSBAQCB2b2lkIENvZGVCbG9jazo6c2V0
dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkK
ICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBqaXRDb2RlLT5tX2NvbnN0YW50UG9vbC5hdChpKTsK
ICAgICAgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEpJ
VENvbnN0YW50UG9vbDo6VHlwZTo6R2xvYmFsT2JqZWN0OgotICAgICAgICAgICAgICAgIG1fYmFz
ZWxpbmVKSVREYXRhLT5hdChpKSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpOworICAgICAgICAgICAg
ICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBl
OjpTdHJ1Y3R1cmVTdHViSW5mbzogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKICAgICAgICAgICAgICAg
ICBVbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvJiB1bmxpbmtlZFN0dWJJbmZvID0gaml0Q29kZS0+
bV91bmxpbmtlZFN0dWJJbmZvc1tpbmRleF07Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gbV9iYXNlbGluZUpJVERhdGEtPm1fc3R1YkluZm9zW2luZGV4XTsK
KyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBiYXNlbGluZUpJ
VERhdGEtPm1fc3R1YkluZm9zW2luZGV4XTsKICAgICAgICAgICAgICAgICBzdHViSW5mby5pbml0
aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8odGhpcywgdW5saW5rZWRTdHViSW5m
byk7Ci0gICAgICAgICAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPmF0KGkpID0gJnN0dWJJbmZv
OworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSAmc3R1YkluZm87CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEpJ
VENvbnN0YW50UG9vbDo6VHlwZTo6RnVuY3Rpb25EZWNsOiB7CiAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRyeS5wb2ludGVyKCkpOwot
ICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IGZ1bmN0aW9uRGVjbChp
bmRleCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IGZ1bmN0aW9u
RGVjbChpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6RnVuY3Rpb25FeHByOiB7CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRy
eS5wb2ludGVyKCkpOwotICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9
IGZ1bmN0aW9uRXhwcihpbmRleCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5h
dChpKSA9IGZ1bmN0aW9uRXhwcihpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgbV9qaXREYXRhID0g
YmFzZWxpbmVKSVREYXRhLnJlbGVhc2UoKTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGNvZGVUeXBl
KCkpIHsKQEAgLTkwNiwyMCArOTA3LDI0IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAgICAg
Ly8gZGVzdHJ1Y3RvcnMuCiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRvKiBqaXREYXRh
ID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHViSW5m
byA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBzdHViSW5mby5hYm91dFRv
RGllKCk7Ci0gICAgICAgICAgICBzdHViSW5mby5kZXJlZigpOwotICAgICAgICB9Ci0gICAgfQot
I2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBmb3IgKGF1dG8qIHN0dWJJ
bmZvIDogaml0Q29kZSgpLT5kZmdDb21tb24oKS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAgICAg
IHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CiAgICAgICAgICAgICBzdHViSW5mby0+ZGVyZWYoKTsK
ICAgICAgICAgfQotICAgIH0KKyAgICAgICAgaWYgKG1faml0RGF0YSkKKyAgICAgICAgICAgIGRl
bGV0ZSBiaXR3aXNlX2Nhc3Q8REZHOjpERkdKSVREYXRhKj4obV9qaXREYXRhKTsKICNlbmRpZgor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRh
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJ
bmZvcykgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmFib3V0VG9EaWUoKTsKKyAgICAgICAg
ICAgICAgICBzdHViSW5mby5kZXJlZigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVs
ZXRlIGppdERhdGE7CisgICAgICAgIH0KKyAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0K
IApAQCAtMTI0OCwxOCArMTI1MywxNyBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJhbnNp
dGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVmlzaXRvciYgdmlzaXRvcgogICAgIH0K
IAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewot
ICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQot
ICAgICAgICAgICAgICAgIHN0dWJJbmZvLnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwot
ICAgICAgICB9Ci0gICAgfQotI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAg
ICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogaml0Q29kZSgpLT5kZmdDb21tb24oKS0+bV9zdHViSW5m
b3MpCiAgICAgICAgICAgICBzdHViSW5mby0+cHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7
Ci0gICAgfQogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEg
PSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6
IGppdERhdGEtPm1fc3R1YkluZm9zKQorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnByb3BhZ2F0
ZVRyYW5zaXRpb25zKHZpc2l0b3IpOworICAgICAgICB9CisgICAgfQogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xNTg1LDE1ICsxNTg5LDggQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogI2lmIEVOQUJMRShK
SVQpCiB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVKSVRJbmxpbmVDYWNoZXMoKQogewotICAgIGlm
IChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNlc3NhcnkpOwotICAgICAg
ICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcyhsb2NrZXIsIHRoaXMpOwotICAgICAg
ICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIERG
Rzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKICAgICAg
ICAgZm9yIChhdXRvKiBjYWxsTGlua0luZm8gOiBkZmdDb21tb24tPm1fY2FsbExpbmtJbmZvcykK
ICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dmlzaXRXZWFrKHZtKCkpOwpAQCAtMTYwMSw4ICsx
NTk4LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUpJVElubGluZUNhY2hlcygpCiAgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNlc3Nhcnkp
OwogICAgICAgICAgICAgc3R1YkluZm8tPnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlz
KTsKICAgICAgICAgfQotICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChh
dXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlckJhc2UgbG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAg
ICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcyhsb2NrZXIsIHRoaXMpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogfQogI2VuZGlmCiAKQEAgLTE2ODksMTIgKzE2
OTMsOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICB9CiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBpZiAoYXV0byogaml0
RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8m
IHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCi0gICAgICAgICAgICAgICAgcmVzdWx0
LmFkZChzdHViSW5mby5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1
YkluZm8gPSAmc3R1YkluZm87Ci0gICAgICAgIH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAg
ICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0
Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogZGZn
Q29tbW9uLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN0dWJJbmZv
LT5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1YkluZm8gPSBzdHVi
SW5mbzsKQEAgLTE3MTAsOCArMTcxMCwxMyBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNN
YXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5pblN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmRlbGV0ZXMpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
ZGVsZXRlU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7Ci0gICAgICAgIH0KICNlbmRpZgorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJ
VERhdGEoKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRh
LT5tX3N0dWJJbmZvcykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby5j
b2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1YkluZm8gPSAmc3R1Yklu
Zm87CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShyZXN1bHQpOwpAQCAtMTcyOCwyMSArMTczMywyMSBAQCB2b2lkIENvZGVCbG9jazo6Z2V0
SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIFN0cnVjdHVyZVN0dWJJbmZvKiBDb2Rl
QmxvY2s6OmZpbmRTdHViSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiB7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9i
YXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGpp
dERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBpZiAoc3R1YkluZm8uY29kZU9yaWdp
biA9PSBjb2RlT3JpZ2luKQotICAgICAgICAgICAgICAgIHJldHVybiAmc3R1YkluZm87Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
Zm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9z
KSB7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvZGVPcmlnaW4gPT0gY29kZU9yaWdpbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3R1YkluZm87CiAgICAgICAgIH0KLSAgICB9CiAjZW5k
aWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklU
RGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9z
dHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY29kZU9yaWdpbiA9PSBj
b2RlT3JpZ2luKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJnN0dWJJbmZvOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQogCkBAIC0x
NzgxLDcgKzE3ODYsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRCYXNlbGluZUpJVERhdGEoKQog
ICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKTsKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCi0gICAgaWYgKGF1dG8qIGppdERh
dGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgeworICAgIGlmIChhdXRvKiBqaXREYXRhID0g
YmFzZWxpbmVKSVREYXRhKCkpIHsKICAgICAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1
c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9z
LCBjYWxsCiAgICAgICAgIC8vIGxpbmsgaW5mb3MsIG9yIGJ5IHZhbCBpbmZvcyBpZiB3ZSBkb24n
dCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVyeSB0aGVzZSBkYXRhCiAgICAgICAgIC8v
IHN0cnVjdHVyZXMgdXNpbmcgdGhlIGNvbmN1cnJlbnQgQVBJIChnZXRJQ1N0YXR1c01hcCBhbmQg
ZnJpZW5kcykgd2lsbCByZXR1cm4gbm90aGluZyBpZiB3ZQpAQCAtMTgwMiw3ICsxODA3LDcgQEAg
dm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKICAgICAgICAgLy8gV2UgY2Fu
IGNsZWFyIHRoaXMgYmVjYXVzZSB0aGUgREZHJ3MgcXVlcmllcyB0byB0aGVzZSBkYXRhIHN0cnVj
dHVyZXMgYXJlIGd1YXJkZWQgYnkgd2hldGhlcgogICAgICAgICAvLyB0aGVyZSBpcyBKSVQgY29k
ZS4KIAotICAgICAgICBtX2Jhc2VsaW5lSklURGF0YSA9IG51bGxwdHI7CisgICAgICAgIG1faml0
RGF0YSA9IG51bGxwdHI7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xODQ4LDE5ICsxODUzLDE5IEBA
IHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyhjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImIGxvY2tlciwKICAgICB9KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
aWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICBm
b3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCi0gICAgICAgICAgICBz
dHViSW5mby52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgp
KSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0Nv
bW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgIGZvciAoYXV0byogc3R1Yklu
Zm8gOiBkZmdDb21tb24tPm1fc3R1YkluZm9zKQogICAgICAgICAgICAgc3R1YkluZm8tPnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMu
dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgICAgIHZpc2l0T1NSRXhpdFRhcmdldHMobG9j
a2VyLCB2aXNpdG9yKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBq
aXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKKyAgICAgICAgICAgICAgICBzdHViSW5mby52
aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICAgICAgfQogICAgIH0KICNlbmRpZgogfQpAQCAt
MzQ3NywyMSArMzQ4MiwyMiBAQCBzdGQ6Om9wdGlvbmFsPENvZGVPcmlnaW4+IENvZGVCbG9jazo6
ZmluZFBDKHZvaWQqIHBjKQogCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKG1fbG9jayk7Ci0gICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERh
dGEuZ2V0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5t
X3N0dWJJbmZvcykgewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBj
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJbmZvLmNvZGVPcmlnaW47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgaWYgKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZn
Q29tbW9uKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogZGZnQ29tbW9uLT5t
X3N0dWJJbmZvcykgewogICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29udGFpbnNQQyhw
YykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHViSW5mby0+Y29kZU9yaWdpbjsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgfQogI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBjKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdHViSW5mby5jb2RlT3JpZ2luOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBtX2ppdENv
ZGUtPmZpbmRQQyh0aGlzLCBwYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgzNDdiNmM3NzVjMTgyNi4u
NDU3OWFlZDc0MDA4ODhlOTBhYjgxMjYzYWZkZmE1YzA1MGM0MGEyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNzksNiArNzksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogI2lmIEVOQUJMRShERkdfSklUKQogbmFtZXNwYWNlIERGRyB7CitjbGFzcyBE
RkdKSVREYXRhOwogc3RydWN0IE9TUkV4aXRTdGF0ZTsKIH0gLy8gbmFtZXNwYWNlIERGRwogI2Vu
ZGlmCkBAIC0yNDcsNyArMjQ4LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVjb2RlSW5kZXhGcm9tQ2Fs
bFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKIAotICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhy
b3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhICht
X2Jhc2VsaW5lSklURGF0YSksCisgICAgLy8gQmVjYXVzZSB3ZSBtaWdodCB0aHJvdyBvdXQgYmFz
ZWxpbmUgSklUIGNvZGUgYW5kIGFsbCBpdHMgYmFzZWxpbmUgSklUIGRhdGEgKG1faml0RGF0YSks
CiAgICAgLy8geW91IG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUgbGlmZXRpbWUgb2Ygd2hl
biB5b3UgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlvbi4KICAgICAvLyBUaGUg
cmV0dXJuIHZhbHVlIG1heSBoYXZlIHJhdyBwb2ludGVycyBpbnRvIHRoaXMgZGF0YSBzdHJ1Y3R1
cmUgdGhhdCBnZXRzIHRocm93biBhd2F5LgogICAgIC8vIFNwZWNpZmljYWxseSwgeW91IG5lZWQg
dG8gZW5zdXJlIHRoYXQgbm8gR0MgY2FuIGJlIGZpbmFsaXplZCAodHlwaWNhbGx5IHRoYXQgbWVh
bnMgbm8KQEAgLTI1OCw3ICsyNTksNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgc2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNv
ZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4pOwogCi0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZkJhc2VsaW5lSklURGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1f
YmFzZWxpbmVKSVREYXRhKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZKSVREYXRh
KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9qaXREYXRhKTsgfQogCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZE9wdGltaXppbmdTdHViSW5mbyhBY2Nlc3NUeXBlLCBD
b2RlT3JpZ2luKTsKIApAQCAtNTM0LDkgKzUzNSwyNSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGJhc2VsaW5lU3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGludCB0YWJsZUluZGV4KTsKICAgICBCYXNlbGluZUpJVERhdGEqIGJhc2VsaW5lSklU
RGF0YSgpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChqaXRUeXBlKCkgPT0gSklUVHlw
ZTo6QmFzZWxpbmVKSVQpOwotICAgICAgICByZXR1cm4gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCk7
CisgICAgICAgIGlmICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpCisgICAg
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEJhc2VsaW5lSklURGF0YSo+KG1faml0RGF0YSk7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKworI2lmIEVOQUJMRShERkdfSklUKQor
ICAgIHZvaWQgc2V0REZHSklURGF0YShzdGQ6OnVuaXF1ZV9wdHI8REZHOjpERkdKSVREYXRhPiYm
IGppdERhdGEpCisgICAgeworICAgICAgICBBU1NFUlQoIW1faml0RGF0YSk7CisgICAgICAgIG1f
aml0RGF0YSA9IGppdERhdGEucmVsZWFzZSgpOworICAgIH0KKworICAgIERGRzo6REZHSklURGF0
YSogZGZnSklURGF0YSgpCisgICAgeworICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGppdFR5cGUoKSkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PERGRzo6REZH
SklURGF0YSo+KG1faml0RGF0YSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyNl
bmRpZgogI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVz
KCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mVW5saW5rZWRTd2l0Y2hK
dW1wVGFibGVzKCk7IH0KICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgcmV0dXJuIG1fdW5saW5rZWRDb2Rl
LT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsgfQpAQCAtOTM3LDcgKzk1NCw3
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFJlZlB0cjxKSVRDb2Rl
PiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKIHB1YmxpYzoKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8QmFzZWxpbmVKSVREYXRhPiBtX2Jhc2VsaW5lSklURGF0YTsKKyAgICB2b2lkKiBtX2ppdERh
dGEgeyBudWxscHRyIH07CiBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5BQkxFKERGR19KSVQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4
IGQ5OGZiNzZlY2I2MTNkMjZmYjZmMjZkNWJhMTViM2UzZGI3ODZiMDEuLjI4ZjEyMTViMzY4ZTNl
OGEwMWYwZTE2ZDUyMTY4NjJlMGYxOGNiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNTY2LDYgKzE1NjYsMTEgQEAgdW5zaWdu
ZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBh
cmd1bWVudENvdW50SW5jbHUKICAgICAgICAgcmV0dXJuIFVJTlRfTUFYOwogICAgIH0KIAorICAg
IGlmIChtX2dyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAgICAgICAgVkVSQk9TRV9MT0co
IiAgICBGYWlsaW5nIGJlY2F1c2UgdGhlIGNvbXBpbGF0aW9uIG1vZGUgaXMgdW5saW5rZWQgREZH
LlxuIik7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICB9CisKICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCk7CiAgICAg
aWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIFZFUkJPU0VfTE9HKCIgICAgRmFpbGluZyBiZWNh
dXNlIHRoZXJlIGlzIG5vIGZ1bmN0aW9uIGV4ZWN1dGFibGUuXG4iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCAyM2ZkNDU0N2M1OWI5MmE5MzQzNzQyYTU4NGY3ZGRj
ZGYyOTFmOWViLi40ZTAzYWEzZWRlNDI4OWUwOGMyNTg4ODI5MDhiNTRiNjNmMzlhZGJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNz
IENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvciBmaW5h
bCA6IHB1YmxpYyBKdW1waW5nCiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fR1N0WkIgZnVu
Y3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0ciBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgY29udGlndW91c1N0cnVjdHVy
ZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0b3JhZ2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXpl
R1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQgZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJl
IGNvbnRpZ3VvdXNTdHJ1Y3R1cmUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdG9yYWdlU3Ry
dWN0dXJlLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCiAgICAgICAgIDogSnVt
cGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0
KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9jb250aWd1b3Vz
U3RydWN0dXJlKGNvbnRpZ3VvdXNTdHJ1Y3R1cmUpCkBAIC0xMTUsNyArMTE1LDcgQEAgY2xhc3Mg
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIEp1bXBpbmcKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fY29udGlndW91c1N0
cnVjdHVyZTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fYXJyYXlTdG9yYWdlT3JDb250aWd1
b3VzU3RydWN0dXJlOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBDQ2FsbEhlbHBlcnM6
OlRydXN0ZWRJbW1QdHIgbV9nbG9iYWxPYmplY3Q7CisgICAgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQgbV9nbG9iYWxPYmplY3Q7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJS
ZWcgbV9zdG9yYWdlR1BSOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBt
X3BsYW5zOwpAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhW
YXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsCiBwdWJs
aWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVT
aXplU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlvbl9HU3RaQiBmdW5jdGlvbiwK
LSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIGds
b2JhbE9iamVjdCwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBz
dG9yYWdlR1BSKQorICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudCBnbG9iYWxPYmplY3QsIEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBzaXpl
R1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKICAgICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0
b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9mdW5j
dGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX3Jlc3VsdEdQUihyZXN1bHRHUFIpCkBAIC0xNTIs
NyArMTUyLDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJl
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwKIAogICAgIFBfSklUT3BlcmF0aW9u
X0dTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9iamVjdDsKKyAgICBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudCBtX2dsb2JhbE9iamVjdDsKICAgICBHUFJSZWcgbV9zdHJ1Y3R1cmVHUFI7
CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCAxNDRjYzE5Mjg3M2QwNzZlMWVmZmJm
ODRkZGU2ZTE2MWE4NWMxNzc4Li42M2JmNGJjZWRlMTRkNDA4NDE1MWViYmEwYWNlMzNlNDE2ZjYw
ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTA2MSw2ICsx
MDYxLDkgQEAgdm9pZCBHcmFwaDo6Y2xlYXJGbGFnc09uQWxsTm9kZXMoTm9kZUZsYWdzIGZsYWdz
KQogCiBib29sIEdyYXBoOjp3YXRjaENvbmRpdGlvbihjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiYga2V5KQogeworICAgIGlmIChtX3BsYW4uaXNVbmxpbmtlZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICBpZiAoIWtleS5pc1dhdGNoYWJsZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTEwODEsNiArMTA4NCw5IEBAIGJvb2wgR3JhcGg6OndhdGNoQ29uZGl0aW9u
KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJiBrZXkpCiAKIGJvb2wgR3JhcGg6OndhdGNo
Q29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYga2V5cykKIHsKKyAg
ICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
aWYgKCFrZXlzLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDk4LDYg
KzExMDQsOSBAQCBib29sIEdyYXBoOjppc1NhZmVUb0xvYWQoSlNPYmplY3QqIGJhc2UsIFByb3Bl
cnR5T2Zmc2V0IG9mZnNldCkKIAogYm9vbCBHcmFwaDo6d2F0Y2hHbG9iYWxQcm9wZXJ0eShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKQogewor
ICAgIGlmIChtX3BsYW4uaXNVbmxpbmtlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVy
XTsKICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBXYXRjaHBvaW50U2V0LCBhbmQgaXQgaXMg
YWxyZWFkeSBpbnZhbGlkYXRlZCwgaXQgbWVhbnMgdGhhdCB0aGlzIHNjb3BlIG9wZXJhdGlvbiBt
dXN0IGJlIGNoYW5nZWQgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLAog
ICAgIC8vIGJ1dCB3ZSBzdGlsbCBoYXZlIHN0YWxlIG1ldGFkYXRhIGhlcmUgc2luY2Ugd2UgaGF2
ZSBub3QgeWV0IGV4ZWN1dGVkIHRoaXMgYnl0ZWNvZGUgb3BlcmF0aW9uIHNpbmNlIHRoZSBpbnZh
bGlkYXRpb24uIEp1c3QgZW1pdHRpbmcgRm9yY2VPU1JFeGl0IHRvIHVwZGF0ZSB0aGUKQEAgLTEy
NjcsNiArMTI3Niw5IEBAIHVuc2lnbmVkIEdyYXBoOjpyZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JF
eGVjdXRpb25BbmRFeGl0KCkKIEpTVmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50UHJvcGVydHko
CiAgICAgSlNWYWx1ZSBiYXNlLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKKyAgICBpZiAobV9wbGFuLmlzVW5saW5r
ZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKwogICAgIGlmICghYmFzZSB8fCAhYmFz
ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIApAQCAtMTM1Miw2
ICsxMzY0LDkgQEAgQWJzdHJhY3RWYWx1ZSBHcmFwaDo6aW5mZXJyZWRWYWx1ZUZvclByb3BlcnR5
KAogSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRDbG9zdXJlVmFyKEpTVmFsdWUgYmFzZSwg
U2NvcGVPZmZzZXQgb2Zmc2V0KQogewogICAgIC8vIFRoaXMgaGFzIGFuIGF3ZXNvbWUgY29uY3Vy
cmVuY3kgc3RvcnkuIFNlZSBjb21tZW50IGZvciBHZXRHbG9iYWxWYXIgaW4gQnl0ZUNvZGVQYXJz
ZXIuCisKKyAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWUoKTsKICAgICAKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBA
IC0xNDAyLDYgKzE0MTcsOCBAQCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudENsb3N1cmVW
YXIoTm9kZSogbm9kZSwgU2NvcGVPZmZzZXQgb2Zmc2V0KQogCiBKU0FycmF5QnVmZmVyVmlldyog
R3JhcGg6OnRyeUdldEZvbGRhYmxlVmlldyhKU1ZhbHVlIHZhbHVlKQogeworICAgIGlmIChtX3Bs
YW4uaXNVbmxpbmtlZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihtX3ZtLCB2YWx1ZSk7CkBAIC0xNzMw
LDYgKzE3NDcsOSBAQCBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIEdyYXBoOjptZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKE5vZGUqIGN1cnJlbgogCiBib29sIEdyYXBoOjpnZXRS
ZWdFeHBQcm90b3R5cGVQcm9wZXJ0eShKU09iamVjdCogcmVnRXhwUHJvdG90eXBlLCBTdHJ1Y3R1
cmUqIHJlZ0V4cFByb3RvdHlwZVN0cnVjdHVyZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNW
YWx1ZSYgcmV0dXJuSlNWYWx1ZSkKIHsKKyAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gcmVnRXhw
UHJvdG90eXBlU3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKTsKICAgICBpZiAoIWlzVmFs
aWRPZmZzZXQob2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc3Nyw2ICsxNzk3
LDkgQEAgYm9vbCBHcmFwaDo6aXNTdHJpbmdQcm90b3R5cGVNZXRob2RTYW5lKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFVuaXF1ZWRTdHIKIAogYm9vbCBHcmFwaDo6Y2FuT3B0aW1pemVT
dHJpbmdPYmplY3RBY2Nlc3MoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKIHsKKyAgICBp
ZiAobV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYg
KGhhc0V4aXRTaXRlKGNvZGVPcmlnaW4sIEJhZENhY2hlKSB8fCBoYXNFeGl0U2l0ZShjb2RlT3Jp
Z2luLCBCYWRDb25zdGFudENhY2hlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODI5
LDYgKzE4NTIsOSBAQCBib29sIEdyYXBoOjpjYW5Eb0Zhc3RTcHJlYWQoTm9kZSogbm9kZSwgY29u
c3QgQWJzdHJhY3RWYWx1ZSYgdmFsdWUpCiAgICAgLy8gVGhlIHBhcmFtZXRlciAndmFsdWUnIGlz
IHRoZSBBYnN0cmFjdFZhbHVlIGZvciBjaGlsZDEgKHRoZSB0aGluZyBiZWluZyBzcHJlYWQpLgog
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IFNwcmVhZCk7CiAKKyAgICBpZiAobV9wbGFuLmlzVW5s
aW5rZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSAhPSBBcnJheVVzZSkgewogICAgICAgICAvLyBOb3RlOiB3ZSBvbmx5IHNwZWN1
bGF0ZSBvbiBBcnJheVVzZSB3aGVuIHdlJ3ZlIHNldCB1cCB0aGUgbmVjZXNzYXJ5IHdhdGNocG9p
bnRzCiAgICAgICAgIC8vIHRvIHByb3ZlIHRoYXQgdGhlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyBu
b24tb2JzZXJ2YWJsZSBzdGFydGluZyBmcm9tIEFycmF5UHJvdG90eXBlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGZiOTAwNDFjNWFjMGY4NTBkODE1MDk5ODUyYWIyMjA5
MjY4MDQ4YjUuLmQwZmE3NmJmMGMwN2UxYWFjNTg4YmIwNTgyYmRjOWUyZmQzNTM3ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTQ3NiwxOSArNDc2LDYgQEAgY2xhc3Mg
R3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgICAgICByZXR1cm4g
anNDYXN0PEpTT2JqZWN0Kj4ob2JqZWN0LT5tZXRob2RUYWJsZShtX3ZtKS0+dG9UaGlzKG9iamVj
dCwgb2JqZWN0LCBFQ01BTW9kZTo6c2xvcHB5KCkpKTsKICAgICB9CiAgICAgCi0gICAgU2NyaXB0
RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFt
ZSkKLSAgICB7Ci0gICAgICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0
dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKLSAgICAgICAgCi0gICAgICAgIHJl
dHVybiBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KTsKLSAgICB9Ci0gICAgCi0gICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZUZvcihjb25z
dCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGV4ZWN1dGFi
bGVGb3IoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKSk7Ci0gICAgfQotICAgIAogICAgIENv
ZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxs
RnJhbWUpCiAgICAgewogICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSkKQEAgLTUwMyw2ICs0
OTAsOCBAQCBjbGFzcyBHcmFwaCBmaW5hbCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAg
ICAgCiAgICAgYm9vbCBtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxp
ZChjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKKyAgICAgICAgaWYgKG1fcGxh
bi5pc1VubGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbiktPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRj
aHBvaW50KCktPmlzU3RpbGxWYWxpZCgpOwogICAgIH0KICAgICAKQEAgLTc5NSwxMiArNzg0LDE3
IEBAIGNsYXNzIEdyYXBoIGZpbmFsIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAg
IGJvb2wgaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChOb2RlKiBub2RlKQogICAg
IHsKKyAgICAgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgcmV0dXJuIHdhdGNocG9pbnRz
KCkuaXNXYXRjaGVkKGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOwog
ICAgIH0KIAogICAgIGJvb2wgaXNXYXRjaGluZ0dsb2JhbE9iamVjdFdhdGNocG9pbnQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0KQogICAgIHsK
KyAgICAgICAgaWYgKG1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICAgICAgaWYgKHdhdGNocG9pbnRzKCkuaXNXYXRjaGVkKHNldCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtODE5LDYgKzgxMyw5IEBAIGNsYXNzIEdyYXBoIGZpbmFs
IDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAgIGJvb2wgaXNXYXRjaGluZ0FycmF5
SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQoTm9kZSogbm9kZSkKICAgICB7CisgICAgICAgIGlm
IChtX3BsYW4uaXNVbmxpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0ID0gZ2xv
YmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KCk7CiAgICAgICAg
IHJldHVybiBpc1dhdGNoaW5nR2xvYmFsT2JqZWN0V2F0Y2hwb2ludChnbG9iYWxPYmplY3QsIHNl
dCk7CkBAIC04MjYsNiArODIzLDkgQEAgY2xhc3MgR3JhcGggZmluYWwgOiBwdWJsaWMgdmlydHVh
bCBTY2FubmFibGUgewogCiAgICAgYm9vbCBpc1dhdGNoaW5nTnVtYmVyVG9TdHJpbmdXYXRjaHBv
aW50KE5vZGUqIG5vZGUpCiAgICAgeworICAgICAgICBpZiAobV9wbGFuLmlzVW5saW5rZWQoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAg
ICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldCA9IGdsb2JhbE9iamVjdC0+bnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50U2V0KCk7CiAgICAgICAgIHJldHVybiBpc1dhdGNoaW5nR2xvYmFsT2JqZWN0
V2F0Y2hwb2ludChnbG9iYWxPYmplY3QsIHNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5oCmluZGV4IDQ1M2MzZGNkYWVkMWYzYzNjMmFmMTRiODEyYjhhMjNhNTZkMTFjYTIu
LjQwNTg3ZTlhZDVlZDkwNTFkMWMyMTBiY2ExZGZlYjhiYjVlZDEyNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC00OSw2ICs0OSwyMyBAQCBuYW1lc3BhY2UgREZH
IHsKIAogY2xhc3MgSklUQ29tcGlsZXI7CiAKK2NsYXNzIERGR0pJVERhdGEgZmluYWwgOiBwdWJs
aWMgVHJhaWxpbmdBcnJheTxERkdKSVREYXRhLCB2b2lkKj4geworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJs
aWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJyYXk8REZHSklURGF0YSwgdm9pZCo+Owor
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBjcmVhdGUodW5zaWduZWQg
cG9vbFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERGR0pJVERh
dGE+IHsgbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHBvb2xT
aXplKSkpIERGR0pJVERhdGEocG9vbFNpemUpIH07CisgICAgfQorCisgICAgZXhwbGljaXQgREZH
SklURGF0YSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uoc2l6ZSkKKyAgICB7CisgICAg
fQorfTsKKwogY2xhc3MgSklUQ29kZSBmaW5hbCA6IHB1YmxpYyBEaXJlY3RKSVRDb2RlIHsKIHB1
YmxpYzoKICAgICBKSVRDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCmluZGV4IDQ1ZjM0M2YwZGQwNTkwN2YwOTkxN2RiMDNhMWY0MTRkZDY4MDE0
Y2IuLmZkYjRlZjgzOTlhODZhYjQ4YWUyMmFjZDVlYTBlZTAzODZlNDQ5NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwuaCIKKyNpbmNsdWRlICJQ
cm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKICNpbmNsdWRlICJW
TS5oIgogCkBAIC0xMTAsMTMgKzExMSwyNCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50
cnkoKQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlv
dXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFs
IHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgog
ICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworICAgIGlmIChtX2NvZGVC
bG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCisgICAgICAgIGVtaXRQdXRDb2RlQmxv
Y2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJJbmZvOjpyZWdUMCwgbV9jb2RlQmxvY2stPmlzQ29uc3Ry
dWN0b3IoKSk7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6
Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENh
bGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRp
ZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgp
CiB7CiAgICAgZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0No
ZWNrUmVnaXN0ZXJzKCk7ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjpjb25z
dGFudHNSZWdpc3Rlcik7CisgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNvbnN0YW50c1Jl
Z2lzdGVyLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURGF0YSgpKSwgR1BSSW5mbzo6Y29uc3RhbnRz
UmVnaXN0ZXIpOworI2VuZGlmCiB9CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeUV4
ZWN1dGlvbkZsYWcoKQpAQCAtMzQwLDcgKzM1Miw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGUoKQogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgbV9zcGVjdWxhdGl2
ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlv
blRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CisgICAgZW1pdEdldEZyb21D
YWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1l
Um9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKIAogICAgIC8vIEdlbmVyYXRlIHNsb3cgcGF0aCBjb2RlLgog
ICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2VuZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2lu
TWFwQnVpbGRlcik7CkBAIC00MTMsNyArNDI2LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGls
ZUZ1bmN0aW9uKCkKICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAg
ICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0
ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIG1fc3Bl
Y3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihv
cGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOworICAgIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKKyAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENh
bGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJy
b3IsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgCiAgICAgLy8gVGhlIGZhc3QgZW50cnkg
cG9pbnQgaW50byBhIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBjb3JyZWN0IG51bWJlciBv
ZiBhcmd1bWVudHMKICAgICAvLyBoYXZlIGJlZW4gcGFzc2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5
IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2ludCB3aGVyZSB3ZSBjYW4gc3RhdGljYWxseQpAQCAtNDMy
LDcgKzQ0Niw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCiAgICAgICAg
IGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbihCeXRlY29kZUluZGV4KDApKSk7CiAgICAg
ICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgICAgIGFkZFB0
cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9zcGVjdWxhdGl2
ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29kZUJs
b2NrLT5pc0NvbnN0cnVjdG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3Bl
cmF0aW9uQ2FsbEFyaXR5Q2hlY2ssIEdQUkluZm86OnJlZ1QwLCBtX2NvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCkpOworICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAsIENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9i
YWxPYmplY3QoKSksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIG1fc3BlY3VsYXRp
dmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVC
bG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9w
ZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKICAgICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxs
KQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMihtYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgYnJhbmNoVGVzdDMyKFpl
cm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKS5saW5rVG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMp
OwpAQCAtNjQzLDYgKzY1OSwzNiBAQCB2b2lkIEpJVENvbXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRy
eUJ1ZmZlcigpCiAgICAgfQogfQogCit2b2lkIEpJVENvbXBpbGVyOjpsb2FkVW5saW5rZWRDb25z
dGFudChVbmxpbmtlZENvbnN0YW50IGNvbnN0YW50LCBHUFJSZWcgZGVzdCkKK3sKKyAgICBjb25z
dGFudC5tYXRlcmlhbGl6ZSgqdGhpcywgZGVzdCk7Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6OnN0
b3JlVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0YW50IGNvbnN0YW50LCBBZGRyZXNzIGRl
c3QpCit7CisgICAgY29uc3RhbnQucG9rZSgqdGhpcywgZGVzdCk7Cit9CisKK0pJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50OjpVbmxpbmtlZENvbnN0YW50KEdyYXBoJiBncmFwaCwgSlNDZWxs
KiBjZWxsKQorICAgIDogbV9pbmRleChncmFwaC5tX3BsYW4uYWRkVW5saW5rZWRDb25zdGFudChT
cGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIoZ3JhcGgsIGNlbGwpKSkK
K3sKK30KKworSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6OlVubGlua2VkQ29uc3RhbnQo
R3JhcGgmIGdyYXBoLCB2b2lkKiBwb2ludGVyLCBOb25DZWxsVGFnKQorICAgIDogbV9pbmRleChn
cmFwaC5tX3BsYW4uYWRkVW5saW5rZWRDb25zdGFudChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIocG9pbnRlcikpKQoreworfQorCit2b2lkIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
OjptYXRlcmlhbGl6ZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHJlc3VsdEdQUikKK3sKKyAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVn
aXN0ZXIsIERGR0pJVERhdGE6Om9mZnNldE9mRGF0YSgpICsgc2l6ZW9mKHZvaWQqKSAqIG1faW5k
ZXgpLCByZXN1bHRHUFIpOworfQorCit2b2lkIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
Ojpwb2tlKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykK
K3sKKyAgICBqaXQudHJhbnNmZXJQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNv
bnN0YW50c1JlZ2lzdGVyLCBERkdKSVREYXRhOjpvZmZzZXRPZkRhdGEoKSArIHNpemVvZih2b2lk
KikgKiBtX2luZGV4KSwgYWRkcmVzcyk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oCmluZGV4IDk4NDI3NjgzOGQzZTg5MGM1MTEzNmUwYTNkMThlZTBiOTcy
NDZjMTcuLjYzZjI4NjQwYjE5NmZmMGE1ZTExMDFhZmRmNDcyNzI3ZTA0ZTQ0YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTI1NSwxNCArMjU1LDYg
QEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgICAg
IGFkZFdlYWtSZWZlcmVuY2Uoc3RydWN0dXJlU2V0W2ldKTsKICAgICB9CiAgICAgCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtQdHIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBUIGxlZnQsIEpTQ2VsbCogd2Vha1B0cikKLSAgICB7Ci0gICAgICAgIEp1bXAg
cmVzdWx0ID0gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW1QdHIod2Vha1B0cikpOwot
ICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHdlYWtQdHIpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgSnVtcCBicmFuY2hXZWFr
U3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHdlYWtTdHJ1Y3R1cmUpCiAgICAgewpAQCAtMzEyLDYgKzMwNCwzNSBAQCBjbGFzcyBK
SVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBlbWl0U2F2ZUNhbGxl
ZVNhdmVzRm9yKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
KTsKICAgICB9CiAKKyAgICBjbGFzcyBVbmxpbmtlZENvbnN0YW50IGZpbmFsIDogcHVibGljIEND
YWxsSGVscGVyczo6Q29uc3RhbnRNYXRlcmlhbGl6ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
ZW51bSBOb25DZWxsVGFnIHsgTm9uQ2VsbCB9OworICAgICAgICBVbmxpbmtlZENvbnN0YW50KEdy
YXBoJiwgSlNDZWxsKik7CisKKyAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZShDQ2FsbEhlbHBlcnMm
LCBHUFJSZWcpOworICAgICAgICB2b2lkIHBva2UoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0
aWMgVW5saW5rZWRDb25zdGFudCBub25DZWxsUHRyKEdyYXBoJiBncmFwaCwgVCogcG9pbnRlcikK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mX3Y8
SlNDZWxsLCBUPik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRDb25zdGFudChncmFwaCwg
cG9pbnRlciwgTm9uQ2VsbCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgVW5saW5rZWRD
b25zdGFudCBzdHJ1Y3R1cmUoR3JhcGgmIGdyYXBoLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkQ29uc3RhbnQoZ3Jh
cGgsIHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IFVubGlua2VkQ29uc3RhbnQoR3JhcGgmLCB2b2lkKiwgTm9uQ2VsbFRhZyk7CisKKyAgICAgICAg
dW5zaWduZWQgbV9pbmRleCB7IDAgfTsKKyAgICB9OworCisgICAgdm9pZCBsb2FkVW5saW5rZWRD
b25zdGFudChVbmxpbmtlZENvbnN0YW50LCBHUFJSZWcpOworICAgIHZvaWQgc3RvcmVVbmxpbmtl
ZENvbnN0YW50KFVubGlua2VkQ29uc3RhbnQsIEFkZHJlc3MpOworCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCmluZGV4IGQ2MzYxMzI5N2MyN2YzODgx
NTg2YmNhYTc3ZTNhY2NmZjRlMjY0YzcuLjVlY2U0NTY3NTUwZGEzMTZiNDI2OTNhYTU1YmY2NmVh
ZTc3MmU1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmlu
YWxpemVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fcGxhbi5jb2RlQmxvY2soKTsKIAogICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUuY29weVJlZigpKTsKKyAgICBjb2RlQmxvY2stPnNl
dERGR0pJVERhdGEobV9wbGFuLmZpbmFsaXplSklURGF0YSgpKTsKIAogI2lmIEVOQUJMRShGVExf
SklUKQogICAgIG1faml0Q29kZS0+b3B0aW1pemVBZnRlcldhcm1VcChjb2RlQmxvY2spOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5kZXggZjBlZjlhODk3MTI3NDQ4NWY0NDNj
NTQ2YTc0NjllYjc4YjIxOGQ2ZC4uYWQxYzY4Mjc5MGI2YjlmNTQ2OWY1M2I5M2MyMTg2NzdlZDRh
ZTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC0xMTIsNiArMTEy
LDggQEAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uS2luZCBwcm9maWxlckNvbXBpbGF0aW9uS2luZEZv
ck1vZGUoSklUQ29tcGlsYXRpb25Nb2RlIG1vZGUKICAgICAgICAgcmV0dXJuIFByb2ZpbGVyOjpE
Rkc7CiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzoKICAgICAgICAgcmV0dXJuIFBy
b2ZpbGVyOjpERkc7CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OlVubGlua2VkREZHOgor
ICAgICAgICByZXR1cm4gUHJvZmlsZXI6OlVubGlua2VkREZHOwogICAgIGNhc2UgSklUQ29tcGls
YXRpb25Nb2RlOjpGVEw6CiAgICAgICAgIHJldHVybiBQcm9maWxlcjo6RlRMOwogICAgIGNhc2Ug
SklUQ29tcGlsYXRpb25Nb2RlOjpGVExGb3JPU1JFbnRyeToKQEAgLTMxNSw3ICszMTcsOCBAQCBQ
bGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCgpCiAgICAgfQog
CiAgICAgc3dpdGNoIChtX21vZGUpIHsKLSAgICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6REZH
OiB7CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzoKKyAgICBjYXNlIEpJVENvbXBp
bGF0aW9uTW9kZTo6VW5saW5rZWRERkc6IHsKICAgICAgICAgZGZnLm1fZml4cG9pbnRTdGF0ZSA9
IEZpeHBvaW50Q29udmVyZ2VkOwogCiAgICAgICAgIFJVTl9QSEFTRShwZXJmb3JtVGllclVwQ2hl
Y2tJbmplY3Rpb24pOwpAQCAtNjc4LDYgKzY4MSwyMSBAQCB2b2lkIFBsYW46OmNsZWFuTXVzdEhh
bmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCkKICAgICB9CiB9CiAKK3Vuc2lnbmVkIFBsYW46OmFkZFVu
bGlua2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIHB0cikKK3sKKyAgICBy
ZXR1cm4gbV9jb25zdGFudFBvb2wuYWRkKGJpdHdpc2VfY2FzdDx2b2lkKj4ocHRyLmFzSW50cHRy
KCkpLCBtX2NvbnN0YW50UG9vbC5zaXplKCkpLml0ZXJhdG9yLT52YWx1ZTsKK30KKworc3RkOjp1
bmlxdWVfcHRyPERGR0pJVERhdGE+IFBsYW46OmZpbmFsaXplSklURGF0YSgpCit7CisgICAgaWYg
KG1fY29uc3RhbnRQb29sLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
YXV0byBqaXREYXRhID0gREZHSklURGF0YTo6Y3JlYXRlKG1fY29uc3RhbnRQb29sLnNpemUoKSk7
CisgICAgZm9yIChhdXRvJiBwYWlyIDogbV9jb25zdGFudFBvb2wpCisgICAgICAgIGppdERhdGEt
PmF0KHBhaXIudmFsdWUpID0gcGFpci5rZXk7CisgICAgcmV0dXJuIGppdERhdGE7Cit9CisKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAppbmRleCA0MDgwMzI5NmE2ZGJlMGU0N2VhMzgzM2Ri
YmYyNGE2YzI5MDNiNmUyLi5kYWVlMWUwNzE4NzQ2MmRlZDM0YmE0ZjgwZjcwZDA0YzdmYzExMjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaApAQCAtNDgsNiArNDgsNyBAQCBjbGFz
cyBDb2RlQmxvY2s7CiBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgVGhyZWFkRGF0YTsKK2NsYXNz
IERGR0pJVERhdGE7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtMTAxLDYgKzEwMiw5IEBA
IGNsYXNzIFBsYW4gZmluYWwgOiBwdWJsaWMgSklUUGxhbiB7CiAgICAgRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrKiBjYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7
IH0KICAgICB2b2lkIHNldENhbGxiYWNrKFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+
JiYgY2FsbGJhY2spIHsgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAKKyAgICB1
bnNpZ25lZCBhZGRVbmxpbmtlZENvbnN0YW50KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERGR0pJVERhdGE+IGZpbmFsaXplSklURGF0YSgpOworCiBw
cml2YXRlOgogICAgIENvbXBpbGF0aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKCkgb3ZlcnJp
ZGU7CiAgICAgCkBAIC0xMzQsNiArMTM4LDcgQEAgY2xhc3MgUGxhbiBmaW5hbCA6IHB1YmxpYyBK
SVRQbGFuIHsKICAgICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5
dGVjb2RlczsKIAogICAgIFJlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IG1fY2Fs
bGJhY2s7CisgICAgSGFzaE1hcDx2b2lkKiwgdW5zaWduZWQ+IG1fY29uc3RhbnRQb29sOwogfTsK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oCmluZGV4IGZhYmNlMDE4MmRlOTAwMjUzZjBkZjNmMGJmMmU5MzAxODdjMGZmMTQuLjY0
M2JkMjVjMDljMmEzMjAyMjQ1N2ExNWQ2MTY5NDYxOTExMjNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogY2xhc3MgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpK
dW1wPiB7CiBwdWJsaWM6CiAgICAgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Io
Ci0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBmcm9tLCBTcGVjdWxhdGl2ZUpJ
VCogaml0LCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIgZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQorICAg
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQg
Z2xvYmFsT2JqZWN0LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAg
ICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4oZnJvbSwg
aml0KQogICAgICAgICAsIG1fcmVzdWx0UmVncyhyZXN1bHRSZWdzKQogICAgICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRo
R2VuZXJhdG8KICAgICB9CiAKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdFJlZ3M7Ci0gICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX2Jhc2VSZWc7
CiAgICAgR1BSUmVnIG1fcHJvcGVydHlSZWc7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4sIDI+IG1fcGxhbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IDM2MGUxODE4M2VjYmExZTBjYzA1ZDc2YzcyY2RmMTIxOWVj
Y2IxNmQuLjdmNzJjNWM3Nzc2ZWZhNzM5ZTEyMDUyMjdlZmFiYzM3ZGE1YzExZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC02MSw2
ICs2MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAi
UHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCkBAIC0yMDUsMTEg
KzIwNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUoQ29kZU9yaWdpbiBv
cmlnaW4sIEdQUlJlZyBjYWxsZWVHUFIpCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAogICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlUmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIGNhbGxlZUdQ
Uik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGlubGluZUNh
bGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAg
ICAgICAgY2FsbGVlR1BSKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQo
KS5hc0NlbGwoKSksIGNhbGxlZUdQUik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbGVl
R1BSKTsKIH0KQEAgLTY4Niw3ICs2ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRG
aWxsKGNvbnN0IFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4mIHBsYW4pCiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU2V0Q2VsbENvbnN0YW50OgogICAgICAgICBBU1NFUlQocGxhbi5ub2RlKCktPmNv
bnN0YW50KCktPnZhbHVlKCkuaXNDZWxsKCkpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIocGxhbi5ub2RlKCktPmNvbnN0YW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9q
aXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgcGxhbi5ub2RlKCktPmNvbnN0YW50KCktPnZhbHVlKCkuYXNDZWxsKCkpLCBwbGFuLmdw
cigpKTsKICAgICAgICAgYnJlYWs7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldFRy
dXN0ZWRKU0NvbnN0YW50OgpAQCAtMTE5MSwyMiArMTE4OSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBpZiAoSklUQ29kZTo6
dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1Yklu
Zm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1Yklu
Zm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwK
LSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBK
U1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMo
KSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAj
ZWxzZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTIyNyw3ICsxMjI1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVs
ZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51
bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTI3NywyMiArMTI3NSwyMiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9
IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRl
bGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAj
ZWxzZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRo
OwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52
YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywg
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAg
ICAgICAgIH0KICNlbmRpZgogCkBAIC0xMzE0LDcgKzEzMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRl
QnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxs
cHRyLCBiYXNlUmVncywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVn
cywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CkBAIC0xMzUyLDEyICsxMzUwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXpl
LAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNo
ZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQ
UiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxs
LCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygp
KTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJ
ZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xNDAyLDEyICsxNDAwLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5VmFsT3B0
aW1pemUsCiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
a2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5
UmVncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwKICAg
ICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
KTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
KTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtMTQ1NiwxMiArMTQ1NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJp
dmF0ZShOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xv
d1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1
cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCB0eXBlID09IEFjY2Vzc1R5cGU6
Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJh
dGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikp
OworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFj
Y2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6
ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRv
U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAg
ICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5
T3JCcmFuZEdQUikpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOwogICAgIH0KIAogICAgIG1f
aml0LmFkZEluQnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xNDk1LDcgKzE0OTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQog
ICAgICAgICBzcGVjdWxhdGVPYmplY3Qob2JqZWN0RWRnZSwgb2JqZWN0R1BSKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hX
aXRoU2NvcGVPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1
cnJlbnRTY29wZUdQUiwgb2JqZWN0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXNoV2l0aFNjb3BlT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdEdQUik7CiAgICAgICAgIC8vIE5vIGV4Y2Vw
dGlvbiBjaGVjayBoZXJlIGFzIHdlIGRpZCBub3QgaGF2ZSB0byBjYWxsIHRvT2JqZWN0KCkuCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG9iamVjdEVkZ2UudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpOwpAQCAtMTUwMyw3ICsxNTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb2JqZWN0UmVn
cyA9IG9iamVjdC5qc1ZhbHVlUmVncygpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RSZWdzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdFJl
Z3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KICAgICAKQEAgLTE5
MjIsMTIgKzE5MjAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNl
KE5vZGUqIG5vZGUpCiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoYmln
Q2hhcmFjdGVyLCB0aGlzLCBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcsIHRlbXBHUFIs
ICZ2bSwgdGVtcEdQUikpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU3RyaW5nU3Vic3RyLCB0ZW1wR1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uU3RyaW5nU3Vic3RyLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RyaW5nR1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7CiAKICAgICBpZiAoZW5k
R1BSKQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0
aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsICplbmRHUFIpKTsKKyAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xp
Y2UsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0
YXJ0R1BSLCAqZW5kR1BSKSk7CiAgICAgZWxzZQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsIFRydXN0
ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9u
U3RyaW5nU2xpY2UsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJp
bmdHUFIsIHN0YXJ0R1BSLCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpKSk7CiAKICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwogICAgIGNlbGxSZXN1
bHQodGVtcEdQUiwgbm9kZSk7CkBAIC0xOTc0LDcgKzE5NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9Mb3dlckNhc2UoTm9kZSogbm9kZSkKICAgICAKICAgICBzbG93UGF0aC5s
aW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMobGVuZ3RoR1BSKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTG93ZXJDYXNlLCBsZW5ndGhHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIGluZGV4R1BSKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRvTG93ZXJDYXNlLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdHJpbmdHUFIsIGluZGV4R1BSKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBhdXRvIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CkBAIC0yMTkzLDEwICsyMTkxLDIwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDdXJyZW50QmxvY2soKQogICAgIH0KIAogICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50
cnlwb2ludCkgeworICAgICAgICAvLyBGb3IgY2F0Y2ggZW50cnkgcG9pbnQsIE9TUiBlbnRyeSBz
ZXRzIGEgbmV3IENvZGVCbG9jayBwb2ludGVyLgogICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgp
ICogc2l6ZW9mKFJlZ2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIENDYWxs
SGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5lbWl0U2F2ZUNh
bGxlZVNhdmVzKCk7CiAgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0
ZXJzKCk7Ci0gICAgICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2ppdC5jb2Rl
QmxvY2soKSwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgICAgICBtX2ppdC5wcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAg
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgICAgICB9KTsKKyNlbmRpZgorI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIG1faml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwor
ICAgICAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjb25z
dGFudHNSZWdpc3RlciwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIEdQUkluZm86OmNv
bnN0YW50c1JlZ2lzdGVyKTsKKyNlbmRpZgogICAgIH0KIAogICAgIG1fc3RyZWFtLT5hcHBlbmRB
bmRMb2coVmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CkBAIC0yNDc3LDcgKzI0ODUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUcmFwcyhOb2RlKiBub2RlKQogICAgICAgICBK
SVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKG1faml0LnZtKCkudHJhcHMoKS50cmFwQml0c0Fk
ZHJlc3MoKSksCiAgICAgICAgIFRydXN0ZWRJbW0zMihWTVRyYXBzOjpBc3luY0V2ZW50cykpOwog
Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxpbmcs
IHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRU
cmFwSGFuZGxpbmcsIHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKQEAg
LTI1NDIsNyArMjU1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3Vz
UHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSA/CiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9u
UHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgIChub2Rl
LT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRB
cnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QpLAotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7CisgICAgICAgICAgICBOb1Jl
c3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVn
LCB2YWx1ZVJlZ3MpKTsKICAgICB9CiAKICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNh
bGxlZEV4cGxpY2l0bHkpOwpAQCAtMjYxNyw3ICsyNjI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbm9k
ZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9w
KCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9u
ZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJv
dW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZh
bERpcmVjdCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3Ry
aWN0KSwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOworICAgICAgICAgICAgICAgIE5v
UmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHZhbHVlUmVnKSk7CiAgICAgfQogCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTI2NzUsOSArMjY4Myw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbChOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxE
aXJlY3QpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsRGlyZWN0Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Ms
IHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0
eVJlZ3MsIHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsTm9uU3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
Z3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMjczMCwxMSArMjcz
OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkK
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAg
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxs
cHRyKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNl
UmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLAotICAgICAgICAgICAgICAg
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVl
UmVncywgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywg
Z2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgbV9qaXQuYWRk
UHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yODI1LDcgKzI4MzMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgICAgICAgICAo
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0KSA6CiAgICAgICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAotICAgICAgICAg
ICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJv
cGVydHlSZWcsIHZhbHVlUmVncykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykp
OwogICAgICAgICB9CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKQEAgLTI5NTIsMTIgKzI5NjAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0
ZDoKICAgICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRy
YW5zaXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0dXJlKTsKIAogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvcj4oCi0gICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGJhc2VSZWcs
IHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVj
dCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbFN0
cmluZ0ludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJvcGVydHlSZWcp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBt
X2N1cnJlbnROb2RlKTsKQEAgLTI5ODEsNyArMjk4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcHJSZWdzKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3ByUmVncyk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUpOwpAQCAtMzAwMSw3ICszMDA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUZyb21DaGFyQ29kZShOb2RlKiBub2RlKQogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7Ci0g
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgcHJvcGVydHlSZWcpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGUsIHNjcmF0
Y2hSZWcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm9wZXJ0eVJlZykpOwogICAg
IGNlbGxSZXN1bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CiB9CiAKQEAgLTM5MjUsOSAr
MzkzMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICAgICAgICAgICAgICAobm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxOb25TdHJpY3QpLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5
UmVnLCB2YWx1ZUdQUikpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsKICNlbHNlIC8v
IG5vdCBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwgSlNWYWx1ZVJl
Z3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIs
IHZhbHVlR1BSKSkpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZh
bHVlR1BSKSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC00MDM1LDcgKzQwNDMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3RyaW5nKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRS
ZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICBpZiAoY2FuVXNlRmx1c2gg
PT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQwNjIsNyArNDA3MCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbEZvck9iamVjdFdpdGhTeW1ib2woTm9kZSogbm9k
ZSwgY29uc3QgU2NvcGVkCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJl
Z3MpOwogICAgIGVsc2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAgIGlmIChjYW5Vc2VGbHVzaCA9
PSBDYW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtNDEzMCwxMiArNDEzOCwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1Zh
bHVlUmVncyBiYXNlLCBKUwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAotICAg
ICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
CisgICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwKICAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShw
cm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1Bh
dGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRl
TmFtZU9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICB9OwogCkBAIC00MjE1LDcg
KzQyMjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0
aFN0cmluZyhOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkg
PwogICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJp
bmdTdHJpY3QpIDoKICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0
QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00MjM4LDcgKzQy
NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5
bWJvbChOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAg
ICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xT
dHJpY3QpCiAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3ltYm9sTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00MjU2LDcgKzQyNjQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKiBu
b2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRoaXNWYWx1ZVJl
Z3MsIHN1YnNjcmlwdFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxX
aXRoVGhpcywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTQyODIs
NyArNDI5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShO
b2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGF1dG8gb3Bl
cmF0aW9uID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRp
b25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbFNl
dFByaXZhdGVGaWVsZEdlbmVyaWM7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRy
dXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDMyNiwxMSArNDMzNCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKICAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbiwKLSAg
ICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgbnVs
bHB0cik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKLSAgICAgICAgICAgIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgZ2VuLnN0dWJJ
bmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0cik7CiAg
ICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00
NDAwLDExICs0NDA4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZh
dGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1
bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShicmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVC
cmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJl
Z3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CiAgICAgfQogCiAgICAgbV9q
aXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtNDQ0OCwx
MSArNDQ1NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5k
KE5vZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1
bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRH
UFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4s
IHNsb3dQYXRoLmdldCgpKTsKQEAgLTQ0ODgsNyArNDQ5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50R2VuZXJpYywgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgcmFkaXhHUFIp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludEdlbmVyaWMsIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIHJhZGl4
R1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDUwMSw3ICs0NTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5v
ZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Q
YXJzZUludFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlR1BSLCByYWRpeEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJ
bnRTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZUdQUiwgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC00
NTE0LDcgKzQ1MjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9k
ZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBh
cnNlSW50Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCB2YWx1ZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50
Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC00NTI3
LDcgKzQ1MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSog
bm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4LCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0K
QEAgLTQ1NTAsMTEgKzQ1NTgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJy
aWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgLy8gc2luY2UgaXQgcmVsaWVzIG9uIE9T
UiBpbmZvcm1hdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDgzMgogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmlzQ2VsbENvbnN0YW50KCkgfHwg
ZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmFzQ2Vs
bCgpKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5z
dGFuY2VWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25z
dGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3Bl
cmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAg
IG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxP
cGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCByZXN1
bHRHUFIpKTsKICNlbHNlCiAgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBub3REZWZhdWx0LmFwcGVu
ZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZh
bHVlUmVncy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkp
KTsKKyAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRH
UFIpKTsKICNlbmRpZgogICAgIH0KIApAQCAtNDU4OCwxMCArNDU5NywxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xv
d1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkp
LCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1
YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5
cGVSZWdzKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKQEAgLTQ3MDEsNyArNDcxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUJpdE5vdChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RI
ZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFu
ZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwogCkBAIC00NzE2LDcgKzQ3MjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcGVyYW5kUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUJpdE5v
dCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRSZWdz
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKQEAgLTQ3NTYsNyArNDc2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CkBAIC00ODIxLDcgKzQ4MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92
ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAg
IGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQ4ODQsMTMg
KzQ4OTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0
QW5kOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0g
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQ5NzQsNyArNDk4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTA0MCw3ICs1MDQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAg
ICAgICBtX2ppdC5tb3ZlVmFsdWUocmlnaHRDaGlsZC0+YXNKU1ZhbHVlKCksIHJpZ2h0UmVncyk7
CiAgICAgfQogCi0gICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3Mp
OworICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKIAog
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwpAQCAtNTA2OSw3ICs1MDc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TFNoaWZ0T3AoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJp
Z0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJp
Z2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmln
SW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01MDk2LDcg
KzUxMDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9k
ZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJp
dFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTE4NCw3ICs1
MTkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUp
CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICAgICAgLy8g
RklYTUU6IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CkBAIC01MjA1LDcgKzUyMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVBZGQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
QWRkSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTIyMSw3ICs1MjMw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51
bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCBy
aWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVt
YmVyLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC01Mjg0LDcgKzUyOTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3ViLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUpOwpAQCAtNTMwNSw3ICs1MzE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJ
bnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTQxMiw5ICs1NDIxLDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJh
dG9yPiogbWF0aEkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFkZElDR2VuZXJh
dGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICAgICAgYWRkSUNH
ZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1
bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0
UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgICAg
ICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
cmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElD
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3Rh
dGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5u
ZXJSaWdodFJlZ3MpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmln
aHRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTU0NDMsNyArNTQ1Miw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJCiAgICAgICAgIH0KIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNTQ3Niw3ICs1NDg1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSogbm9kZSkKIAog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuanVtcCgpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRp
b25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJlZ3MpKTsKKyAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbklu
c3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHZhbHVlUmVncywgY29uc3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVncykpOwogCiAgICAgdW5i
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtNTU3NSw5ICs1NTg0
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29u
c3RydWN0b3IoTm9kZSogbm9kZSkKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGVycm9yTWVz
c2FnZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkgIT0g
VUlOVDMyX01BWCkKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgZXJyb3JNZXNzYWdlKSk7Cisg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCB2YWx1ZVJlZ3MsIGVycm9yTWVzc2FnZSkpOwogICAgIH0gZWxzZQotICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25D
YWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxs
T3BlcmFuZCgpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxPYmplY3RDb25zdHJ1Y3Rv
ciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2Rl
LT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCB2YWx1ZVJlZ3MpKTsKIAogICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTU3MjEsNyArNTczMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aEFicyhOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVncyBv
cDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJpdGhBYnMsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQWJzLCByZXN1
bHQuZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5m
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTc0NSw3ICs1NzU0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQ2x6MzIoTm9kZSogbm9kZSkKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZ3ByKCk7
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRo
Q2x6MzIsIHJlc3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhDbHozMiwgcmVzdWx0UmVnLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogfQpAQCAtNTc2
OSw3ICs1Nzc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRG91YmxlVW5h
cnlPcChOb2RlKiBub2RlLCBkb3VibGUgKCpkb3VibGVGdW5jdGkKICAgICBKU1ZhbHVlUmVncyBv
cDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBG
UFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1
bHQuZnByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTU4ODYsNyArNTg5NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGF1dG8gb3BlcmF0aW9uID0gbm9kZS0+b3Ao
KSA9PSBJbmMgPyBvcGVyYXRpb25JbmMgOiBvcGVyYXRpb25EZWM7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFS
ZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTYwMjUsOSAr
NjAzNCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwg
SklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgICAgICBzaWxlbnRTcGls
bChzYXZlUGxhbnMpOwogCiAgICAgICAgICAgICBpZiAoaWNHZW5lcmF0aW9uU3RhdGUtPnNob3Vs
ZFNsb3dQYXRoUmVwYXRjaCkKLSAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xv
d1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0
aElDKSk7CisgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAgICAgICAgICAg
ICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVw
YXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgY2hpbGRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTYwNDgsNyArNjA1Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUVW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1
bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdz
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNjExMyw3ICs2MTIyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTXVsSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNjEzMSw3ICs2
MTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU11bCwg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJl
Z3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlTXVsLCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMTMsNyArNjMyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZI
ZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQ
UiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkhlYXBCaWdJ
bnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCBy
aWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMzEsNyArNjM0MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CkBAIC02NDE1LDcgKzY0MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFz
SlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKQEAgLTY1NzksNyArNjU4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcml0aEZSb3VuZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBv
cDEuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEZQUlJlc3VsdCBy
ZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVz
dWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0LmZwcigpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTY2MDQsNyAr
NjYxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChOb2RlKiBub2Rl
KQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
QEAgLTY2MjEsNyArNjYzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1v
ZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU1vZCwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBA
IC03MDE4LDcgKzcwMjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3Vu
ZGluZyhOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBBcml0aFRydW5j
KTsKICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uQXJpdGhUcnVuYzsKICAgICB9Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmd1bWVudFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiB9CkBAIC03MDUxLDcgKzcwNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhTcXJ0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5q
c1ZhbHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoU3FydCwgcmVzdWx0LmZw
cigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CkBAIC03MTc5LDcgKzcxODgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9kZSkKICAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Qb3dIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC03MTk4
LDcgKzcyMDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSog
bm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVQb3csIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlUG93LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC03
OTM1LDcgKzc5NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nRXF1YWxp
dHkoCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAg
ICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRp
b25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVy
YXRpb25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKICAgICAKICAgICBibGVzc2VkQm9vbGVhblJl
c3VsdChsZWZ0VGVtcEdQUiwgbm9kZSk7CiB9CkBAIC04MDg1LDcgKzgwOTQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2Vt
Ymxlcjo6UmVsYXRpb25hbAogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24oY29tcGFyZUZ1bmN0aW9u
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7CisgICAgY2FsbE9wZXJhdGlvbihjb21wYXJlRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwpAQCAtODE4Niw3ICs4MTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNhbWVWYWx1ZShOb2RlKiBub2RlKQogCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
ZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwpAQCAtODI3Miw3ICs4MjgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSogbm9kZSkKIHsKICAgICBHUFJUZW1wb3Jh
cnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7
Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG5vZGUtPnN0b3JhZ2VQb2ludGVyKCkpLCBz
dG9yYWdlR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudDo6bm9uQ2VsbFB0cihtX2dyYXBoLCBub2RlLT5zdG9yYWdlUG9pbnRl
cigpKSwgc3RvcmFnZUdQUik7CiAgICAgc3RvcmFnZVJlc3VsdChzdG9yYWdlR1BSLCBub2RlKTsK
IH0KIApAQCAtODMyNSw3ICs4MzM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgbV9q
aXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzdG9yYWdlUmVnKSwKLSAgICAgICAgICAgICAgICB0
aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc3RvcmFnZVJlZywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VSZWcpKTsKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25SZXNv
bHZlUm9wZSwgc3RvcmFnZVJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWcpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgICAg
ICBicmVhazsKQEAgLTg0MzYsNyArODQ0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhCiAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2Jq
ZWN0SW50LAotICAgICAgICAgICAgICAgIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAg
ICAgICAgIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAgIH0KICAgICAKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtODU0Miw4ICs4NTUxLDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSogbm9kZSkKIHsKICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICBtX2ppdC5sb2FkUHRyKGdsb2JhbE9iamVj
dC0+YWRkcmVzc09mR2xvYmFsVGhpcygpLCByZXN1bHRHUFIpOworICAgIG1faml0LmxvYWRVbmxp
bmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZXN1bHRH
UFIpOworICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNHbG9iYWxPYmplY3Q6Om9mZnNldE9mR2xvYmFsVGhpcygpKSwgcmVzdWx0R1BSKTsKICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKQEAgLTg3MDUsNyArODcxNCw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0
R1BSLCBSZWdpc3RlcmVkU3RydWN0CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25T
aXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRl
cmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAg
ICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpKTsKLSAgICBtX2ppdC5zdG9yZVB0
cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGVPclJhcmVEYXRhKCkpKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgc2Ny
YXRjaDFHUFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxR1BSLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURh
dGEoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIH0KIApAQCAtODgwMCw3ICs4
ODEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEZ1bmN0aW9uTmFtZShOb2Rl
KiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG5hbWVWYWx1ZVJlZ3MgPSBuYW1lVmFsdWUuanNWYWx1
ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25TZXRGdW5jdGlvbk5hbWUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jR1BS
LCBuYW1lVmFsdWVSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEZ1bmN0aW9u
TmFtZSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmNHUFIsIG5hbWVWYWx1ZVJl
Z3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
QEAgLTg4MTcsNyArODgyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYXJhcmdz
TGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB1bmxvY2soR1BS
SW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXpl
T2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOwpAQCAtODg1NCw3ICs4ODY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxv
YWRWYXJhcmdzKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5zdG9yZTMyKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQp
KTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1Jl
Z3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRh
dG9yeU1pbmltdW0pOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCks
IGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTg5ODUsMTAgKzg5OTUsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKiBub2RlKQogICAgIC8vIERvbid0
IG5lZWQgYSBtZW1vcnkgYmFycmllcnMgc2luY2Ugd2UganVzdCBmYXN0LWNyZWF0ZWQgdGhlIGFj
dGl2YXRpb24sIHNvIHRoZQogICAgIC8vIGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBt
X2ppdC5zdG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBK
U1Njb3BlOjpvZmZzZXRPZk5leHQoKSkpOwotICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBU
cnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLAotICAgICAgICBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlN5bWJvbFRh
YmxlKCkpKTsKLSAgICAgICAgCisgICAgbV9qaXQuc3RvcmVVbmxpbmtlZENvbnN0YW50KEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNl
bGwoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNMZXhpY2FsRW52aXJvbm1l
bnQ6Om9mZnNldE9mU3ltYm9sVGFibGUoKSkpOworCiAgICAgLy8gTXVzdCBpbml0aWFsaXplIGFs
bCBtZW1iZXJzIHRvIHVuZGVmaW5lZCBvciB0aGUgVERaIGVtcHR5IHZhbHVlLgogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS0+c2NvcGVTaXplKCk7ICsraSkgewogICAgICAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZSgKQEAgLTkxMTUsMTIgKzkxMjMsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCiAgICAgICAgICAgICAgICAgICAg
IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAg
ICAgICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAgICAgICAgc2NyYXRj
aDFHUFIpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubG9h
ZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgp
KSwgc2NyYXRjaDFHUFIpOwogICAgIH0gZWxzZQogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIHNjcmF0Y2gxR1BSKTsK
IApAQCAtOTM2MCw3ICs5MzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZVJlc3QoTm9kZSogbm9kZSkKIAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQ3JlYXRlUmVzdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJndW1lbnRzU3RhcnRHUFIsIEltbTMyKG5vZGUtPm51bWJlck9mQXJndW1lbnRzVG9T
a2lwKCkpLCBhcnJheUxlbmd0aEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVh
dGVSZXN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVu
dHNTdGFydEdQUiwgSW1tMzIobm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKSksIGFycmF5
TGVuZ3RoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtOTQ1NCw3ICs5NDU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBub2RlKQogICAgICAgICAgICAgZG9uZS5hcHBlbmQo
bV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25TcHJlYWRGYXN0
QXJyYXksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50KSk7
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmd1bWVudCkpOwogCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
ICAgICAgICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0oKSk7CkBAIC05NDY0LDcgKzk0NjgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVh
ZEZhc3RBcnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1l
bnQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKQEAgLTk0NzMsNyArOTQ3Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSogbm9kZSkKIAogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFk
R2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVhZEdlbmVyaWMsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50KTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwogICAgIH0KQEAgLTk2MTAsNyArOTYxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdBcnJheShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAKICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgp
KSksCisgICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIHNpemVfdChub2RlLT5udW1DaGlsZHJlbigpKSk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtOTc2OSw3ICs5NzczLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZChOb2RlKiBub2RlKQogICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhT
cHJlYWRTbG93LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IGdsb2JhbE9iamVjdCksIGJ1ZmZlciwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTcHJlYWRTbG93LCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGJ1ZmZlciwg
bm9kZS0+bnVtQ2hpbGRyZW4oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTk5NDksNyArOTk1Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0K
IAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigK
LSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmpl
Y3QpLCB0ZW1wVmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCB0ZW1w
VmFsdWUsIHNpemVHUFIsIHN0b3JhZ2VSZXN1bHRHUFIpKTsKICAgICB9CiAKICAgICBHUFJUZW1w
b3JhcnkgdGVtcDQodGhpcyk7CkBAIC0xMDE2OCw3ICsxMDE3Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4T2YoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9m
U3RyaW5nLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BS
LCBzZWFyY2hFbGVtZW50R1BSLCBpbmRleEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJyYXlJbmRleE9mU3RyaW5nLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVtZW50R1BSLCBpbmRleEdQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQo
bGVuZ3RoR1BSLCBub2RlKTsKQEAgLTEwMTgzLDExICsxMDE4NywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIHN3aXRjaCAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAg
ICAgICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJyYXlJbmRleE9mVmFsdWVEb3VibGUsIGxlbmd0aEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRSZWdzLCBpbmRleEdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlRG91Ymxl
LCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBz
ZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQXJyYXk6OkludDMyOgogICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3VzOgotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JD
b250aWd1b3VzLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdl
R1BSLCBzZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JDb250aWd1b3VzLCBsZW5ndGhH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVt
ZW50UmVncywgaW5kZXhHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTAyNTYsNyAr
MTAyNjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihzdG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRS
ZWdzKTsKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGJhc2VHUFIpKTsK
KyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFy
cmF5UHVzaCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVl
UmVncywgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzMDIsNyArMTAzMDYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8RW5j
b2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpKSk7CiAKLSAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3Bl
cmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCks
IHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxl
bWVudENvdW50KSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHN0b3JhZ2UudXNl
KCk7CkBAIC0xMDMyNyw3ICsxMDMzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VM
ZW5ndGhHUFIsIHJlc3VsdFJlZ3MpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bkFycmF5UHVzaERvdWJsZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHZhbHVlRlBSLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUZQUiwgYmFzZUdQUikpOwogCiAgICAgICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTAzNzEsNyArMTAzNzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQ
dXNoKE5vZGUqIG5vZGUpCiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGgg
PSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRy
dXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5k
YXRhQnVmZmVyKCkpKSk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlTXVsdGlwbGUs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJH
UFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVz
aERvdWJsZU11bHRpcGxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOwogCiAg
ICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHN0b3JhZ2UudXNlKCk7CkBAIC0xMDQwNCw3ICsx
MDQwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VMZW5ndGhHUFIsIHJlc3VsdFJl
Z3MpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgYmFzZUdQUikpOwor
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJy
YXlQdXNoLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVS
ZWdzLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQ0OCw3ICsxMDQ1Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgZmFzdFBhdGggPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBidWZmZXJHUFIsIFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8RW5jb2Rl
ZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpKSk7CiAKICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICBzbG93UGF0aENhbGwobV9qaXQuanVtcCgp
LCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1l
bnRDb3VudCkpKTsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMs
IG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENv
dW50KSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHN0b3JhZ2UudXNlKCk7CkBA
IC0xMDUwMyw4ICsxMDUwNyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc09iamVj
dChOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mSXNPYmpl
Y3QoTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTEwNTM2
LDcgKzEwNTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZklzT2JqZWN0
KE5vZGUqIG5vZGUpCiAgICAgCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZJ
c09iamVjdCwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICBzbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uVHlwZU9mSXNPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5bG9h
ZEdQUigpKSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xMDU0Niw4ICsxMDU0
OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2ZJc09iamVjdChOb2RlKiBu
b2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDYWxsYWJsZShOb2RlKiBub2Rl
LCBTX0pJVE9wZXJhdGlvbl9HQyBzbG93UGF0aE9wZXJhdGlvbikKIHsKLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1
ZVJlZ3MoKTsKICAgICAKQEAgLTEwNTczLDcgKzEwNTczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUlzQ2FsbGFibGUoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25fR0Mgc2xvd1Bh
dGhPcGUKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgc2xvd1BhdGhD
YWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1
bHRHUFIsIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBzbG93UGF0
aE9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2pp
dC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEwNTg5LDE0ICsxMDU4OSwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSXNDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Jc0NvbnN0cnVjdG9yLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSXNDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBl
T2YoTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTEwNjE5
LDcgKzEwNjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKiBu
b2RlKQogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZPYmplY3QsIHJlc3Vs
dEdQUiwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
blR5cGVPZk9iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAK
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMDY2OCw3ICsxMDY2Niw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lzQ29uc3RhbnQoTm9kZSogbm9kZSkK
IHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRy
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+
Y2VsbCgpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFub2RlLT5jb25zdGFudCgpLT52YWx1ZSgp
LmlzQ2VsbCgpIHx8ICFub2RlLT5jb25zdGFudCgpLT52YWx1ZSgpKTsKICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC0xMDkzOSwxMyArMTA5
MzcsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkK
ICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJn
dW1lbnRDb3VudCArIDE7CiAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykg
ewogICAgIGNhc2UgMToKLSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpf
SklUT3BlcmF0aW9uX0dQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVn
cyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQPihmdW5jdGlvbi5nZXQo
KSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCByZWdzWzBdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAyOgotICAgICAgICBjYWxs
T3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fR1BQPihmdW5jdGlvbi5n
ZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCByZWdzWzBdLCByZWdzWzFdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJl
dF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0
KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVn
c1sxXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUFA+KGZ1bmN0aW9uLmdldCgpKSwg
ZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJl
Z3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOworICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJw
cmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fR1BQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVz
dWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwg
cmVnc1sxXSwgcmVnc1syXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDk2OSw5ICsxMDk2Nyw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2Uo
KSkKLSAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKSVA+
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVy
TnVtYmVyKSwgZ2V0dGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHM8Sl9KSVRPcGVyYXRpb25fR0pJUD4oSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlE
KG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpLCBnZXR0ZXIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKST4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlEKG5vZGUtPmNh
bGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKST4oSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyVUlE
KG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpKTsKIAogICAgICAg
ICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtKCkudG9wQ2Fs
bEZyYW1lKTsKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtMTExMTIsMTAgKzExMTEwLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdW
YWx1ZU9mKE5vZGUqCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgaWYgKG5v
ZGUtPm9wKCkgPT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvU3RyaW5nLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdz
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENhbGxTdHJpbmdDb25zdHJ1Y3Rv
cik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3Rvciwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAg
ICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTExNDIsMTIgKzExMTQwLDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdW
YWx1ZU9mKE5vZGUqCiAgICAgICAgICAgICBzbG93UGF0aDIubGluaygmbV9qaXQpOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvU3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFS
ZWdzKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBTdHJpbmdWYWx1ZU9mKQotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdWYWx1ZU9mLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
QVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAgfQogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQpAQCAtMTEy
MTgsMTAgKzExMjE2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09y
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5vZGUqCiAgICAgICAgICAgICBu
ZWVkQ2FsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvU3RyaW5n
T25DZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFHUFIpOwor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxR1BSKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3RydWN0
b3IpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3Ry
dWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMUdQ
Uik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3Rvck9uQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
R1BSKTsKICAgICAgICAgfQogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBpZiAoZG9uZS5pc1NldCgpKQpAQCAtMTEyNzQsNyArMTEyNzIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBub2RlKQogICAgIGNvbnRpbnVh
dGlvbi5saW5rKCZtX2ppdCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKIAotICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkZ1bmN0
aW9uVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1
bmN0aW9uLmdwcigpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRnVuY3Rpb25Ub1N0cmluZywgcmVzdWx0LmdwcigpLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZnVuY3Rpb24uZ3ByKCkpKTsKIAogICAgIGNl
bGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KQEAgLTExMjg4LDcgKzExMjg2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudChOb2RlKiBub2RlLCBpbnQKIHsKICAgICBhdXRvIGNhbGxUb1N0cmluZyA9IFsmXSAo
YXV0byBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRHUFIsIGF1dG8gdmFsdWVSZWcpIHsKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCBUcnVzdGVkSW1t
MzIocmFkaXgpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCBUcnVzdGVkSW1tMzIocmFk
aXgpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH07CkBAIC0xMTMzMyw3ICsxMTMzMSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeChOb2RlKiBub2Rl
KQogCiAgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnLCBHUFJSZWcgcmFkaXhHUFIpIHsKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCByYWRpeEdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgfTsK
QEAgLTExNDMxLDcgKzExNDI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N5
bWJvbChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9s
V2l0aFN0cmluZ0Rlc2NyaXB0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzdHJpbmdHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJv
bFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3RyaW5nR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0x
MTQ0Miw3ICsxMTQ0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2wo
Tm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTE1
NjUsNyArMTE1NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRBcnJheVdp
dGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VAogICAgIAogICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBlKSwKLSAg
ICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RydWN0dXJlLCBz
aXplR1BSLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOwogCiAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTE1OTAsMTMgKzExNTg4LDExIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdSZWdleHAoTm9kZSogbm9kZSkKICAgICBh
dXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3Q8UmVnRXhwT2JqZWN0PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsKIAotICAg
IG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5k
KCkpLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBSZWdFeHBPYmpl
Y3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOworICAgIG1faml0LnN0b3JlVW5saW5rZWRD
b25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxs
T3BlcmFuZCgpLT5jZWxsKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBSZWdF
eHBPYmplY3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOwogICAgIG1faml0LnN0b3JlVmFs
dWUobGFzdEluZGV4UmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhw
T2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZt
KCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCByZWdleHAsIGxhc3RJbmRleFJlZ3MpKTsKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld1Jl
Z2V4cFdpdGhMYXN0SW5kZXgsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHJlZ2V4cCwgbGFzdEluZGV4UmVncykpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQpAQCAtMTI1MjIsNyArMTI1MTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BS
UgogewogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWUsIEpT
U3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoKTsKICAgICBhdXRvIGlzUm9wZSA9IG1f
aml0LmJyYW5jaElmUm9wZVN0cmluZ0ltcGwoc2NyYXRjaCk7Ci0gICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHNj
cmF0Y2gsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZSkpOworICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMsIG9wZXJhdGlvblJlc29sdmVS
b3BlLCBzY3JhdGNoLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWUpKTsKICAg
ICAKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5jaDMyKApAQCAtMTI3NjQsNyAr
MTI3NjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmco
Tm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BSUgogCiAgICAgaWYgKCFjYW5Eb0JpbmFy
eVN3aXRjaCB8fCB0b3RhbExlbmd0aCA+IE9wdGlvbnM6Om1heGltdW1CaW5hcnlTdHJpbmdTd2l0
Y2hUb3RhbExlbmd0aCgpKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgp
LCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Td2l0Y2hTdHJpbmcsIHN0cmluZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0
YXRpY19jYXN0PHNpemVfdD4oZGF0YS0+c3dpdGNoVGFibGVJbmRleCksICZ1bmxpbmtlZFRhYmxl
LCBzdHJpbmcpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBtX2pp
dC5mYXJKdW1wKHN0cmluZywgSlNTd2l0Y2hQdHJUYWcpOwogICAgICAgICByZXR1cm47CkBAIC0x
MjgwMSw3ICsxMjc5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdP
blN0cmluZyhOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSCiAgICAgCiAgICAgc2xv
d0Nhc2VzLmxpbmsoJm1faml0KTsKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzdHJpbmcp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRh
YmxlSW5kZXgpLCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2Vk
VGFibGUsIHN0cmluZyk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbV9qaXQuZmFySnVtcChzdHJpbmcsIEpTU3dpdGNoUHRy
VGFnKTsKQEAgLTEyOTQ4LDcgKzEyOTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEFjY2Vzc29yQnlJZChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBhY2Nlc3NvckdQUiA9IGFj
Y2Vzc29yLmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1dEdldHRlckJ5SWQgOiBv
cGVyYXRpb25QdXRTZXR0ZXJCeUlkLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3Nv
ckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3Ao
KSA9PSBQdXRHZXR0ZXJCeUlkID8gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZCA6IG9wZXJhdGlvblB1
dFNldHRlckJ5SWQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmFjY2Vzc29yQXR0cmli
dXRlcygpLCBhY2Nlc3NvckdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwpAQCAtMTI5NjYsNyArMTI5NjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0R2V0dGVyU2V0dGVyQnlJZChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBz
ZXR0ZXJHUFIgPSBzZXR0ZXIuZ3ByKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
LCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIp
OwogI2Vsc2UKICAgICAvLyBUaGVzZSBKU1ZhbHVlcyBtYXkgYmUgSlNVbmRlZmluZWQgT1IgSlNG
dW5jdGlvbiouCiAgICAgLy8gQXQgdGhhdCB0aW1lLApAQCAtMTI5NzgsNyArMTI5NzQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0R2V0dGVyU2V0dGVyQnlJZChOb2RlKiBub2Rl
KQogICAgIEpTVmFsdWVSZWdzIHNldHRlclJlZ3MgPSBzZXR0ZXIuanNWYWx1ZVJlZ3MoKTsKIAog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0
ZXJTZXR0ZXIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudGlmaWVy
VUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygp
LCBnZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSwgc2V0dGVyUmVncy5wYXlsb2FkR1BSKCkpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyUmVncy5wYXlsb2FkR1BS
KCksIHNldHRlclJlZ3MucGF5bG9hZEdQUigpKTsKICNlbmRpZgogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKQEAgLTEyOTkyLDcgKzEyOTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlc29sdmVTY29wZShOb2RlKiBub2RlKQogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlU2Nv
cGUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KQEAgLTEzMDA0LDcgKzEzMDAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwoTm9kZSogbm9kZSkK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5j
RGVjbEluRXZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3Bl
R1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTEz
MDMyLDcgKzEzMDI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldER5bmFtaWNW
YXIoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0RHluYW1pY1Zh
ciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWljVmFyLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9
CkBAIC0xMzA0Niw3ICsxMzA0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRE
eW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRp
Zmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3Qg
OiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMzExMiw3ICsxMzEwOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5VmFsKE5vZGUqIG5vZGUpCiAg
ICAgR1BSUmVnIGFjY2Vzc29yR1BSID0gYWNjZXNzb3IuZ3ByKCk7CiAKICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgc3Vic2NyaXB0UmVncywgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVz
KCksIGFjY2Vzc29yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHN1YnNjcmlwdFJlZ3MsIG5vZGUtPmFjY2Vz
c29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTMyODksNyArMTMyODUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nUmVwbGFjZShOb2RlKiBub2RlKQogCiAgICAgICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIsIHJlc3VsdC5ncHIoKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSKTsKKyAgICAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VS
ZWdFeHBFbXB0eVN0ciwgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3RyaW5nR1BSLCByZWdFeHBHUFIpOwogICAgICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUp
OwogICAgICAgICAgICAgICAgIGlmIChzYW1wbGUpCkBAIC0xMzMxMCw3ICsxMzMwNiw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVu
Y1JlcGxhY2VSZWdFeHBTdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSLCByZXBsYWNlR1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLCByZXN1
bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4
cEdQUiwgcmVwbGFjZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgaWYgKHNhbXBsZSkK
QEAgLTEzMzMyLDcgKzEzMzI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z1JlcGxhY2UoTm9kZSogbm9kZSkKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0cmluZ1JlZ3MsIHNlYXJjaFJlZ3MsIHJlcGxhY2VSZWdzKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljLCBy
ZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdSZWdzLCBz
ZWFyY2hSZWdzLCByZXBsYWNlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgaWYgKHNhbXBsZSkKQEAgLTEz
MzUzLDcgKzEzMzQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cEV4ZWNO
b25HbG9iYWxPclN0aWNreShOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIG9wZXJhdGlvblJl
Z0V4cEV4ZWNOb25HbG9iYWxPclN0aWNreSwgcmVzdWx0UmVncywKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0R1BSLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLCBhcmd1bWVudEdQUik7
CisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgYXJndW1lbnRHUFIpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwpAQCAtMTMzNzMsNyArMTMzNjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUmVnRXhwTWF0Y2hGYXN0R2xvYmFsKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgb3Bl
cmF0aW9uUmVnRXhwTWF0Y2hGYXN0R2xvYmFsU3RyaW5nLCByZXN1bHRSZWdzLAotICAgICAgICBn
bG9iYWxPYmplY3RHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIGFyZ3Vt
ZW50R1BSKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCBhcmd1bWVudEdQ
Uik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CkBAIC0xMzU1Nyw3ICsxMzU1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hp
bGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVz
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlT
dHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM1NzQsNyArMTM1NzAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAg
ICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRl
bnQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudEdQUiwgdmFsdWVS
ZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIGlkZW50R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzU4Niw3
ICsxMzU4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVy
dHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRh
UHJvcGVydHlTeW1ib2wsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BS
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTM1OTcsNyArMTM1OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVm
aW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lRGF0YVByb3BlcnR5LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UiwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBhdHRyaWJ1dGVz
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTM2MzgsNyArMTM2MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihu
b2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0
dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTdHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0x
MzY1NSw3ICsxMzY1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVBY2Nl
c3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVz
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3Bl
cnR5U3RyaW5nSWRlbnQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBp
ZGVudEdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzY2Nyw3
ICsxMzY2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclBy
b3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eVN5bWJvbCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJv
bCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBn
ZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNjc4LDcgKzEzNjc0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkoTm9k
ZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclBy
b3BlcnR5LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdz
LCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIs
IGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0xMzgxMCw3ICsxMzgwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRNYXBCdWNrZXROZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgIEFTU0VSVChu
b2RlLT5idWNrZXRPd25lclR5cGUoKSA9PSBCdWNrZXRPd25lclR5cGU6OlNldCk7CiAgICAgICAg
IHNlbnRpbmVsID0gdm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpOwogICAgIH0KLSAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIHNlbnRpbmVsKSwg
cmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBzZW50aW5lbCksIHJlc3VsdEdQUik7CiAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CkBAIC0xMzg3Miw3ICsxMzg2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUaHJv
dyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwog
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd0RG
RywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncyk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UaHJvd0RGRywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBtX2ppdC5icmVha3Bv
aW50KCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMzg4NCw3ICsxMzg4MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUaHJvd1N0YXRpY0Vycm9yKE5vZGUqIG5vZGUpCiAgICAg
R1BSUmVnIG1lc3NhZ2VHUFIgPSBtZXNzYWdlLmdwcigpOwogICAgIHNwZWN1bGF0ZVN0cmluZyhu
b2RlLT5jaGlsZDEoKSwgbWVzc2FnZUdQUik7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhdGljRXJyb3IsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBtZXNzYWdlR1BSLCBub2RlLT5lcnJvclR5cGUoKSk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbWVzc2FnZUdQUiwgbm9kZS0+ZXJyb3JUeXBlKCkpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgIG5vUmVzdWx0KG5vZGUpOwpA
QCAtMTM5NzQsNyArMTM5NzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVy
YXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUsIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIG1vZGVHUFIs
IGVudW1lcmF0b3JHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5l
eHRVcGRhdGVJbmRleEFuZE1vZGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIG1vZGVHUFIsIGVudW1lcmF0b3JHUFIpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKIH0KQEAgLTE0MDQ3LDEyICsxNDA0MywxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUoTm9kZSogbm9kZSkKICAgICAg
ICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIG91dE9mQm91bmRz
LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCB2bSgpLnNtYWxsU3RyaW5ncy5zZW50aW5lbFN0cmluZygpKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0oKS5zbWFsbFN0cmluZ3Muc2VudGluZWxTdHJpbmco
KSksIHJlc3VsdEdQUik7CiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsK
ICAgICAgICAgb3BlcmF0aW9uQ2FsbC5saW5rKCZtX2ppdCk7CiAgICAgfQogCi0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5TmFtZSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5kZXgsIG1vZGUsIGVudW1lcmF0b3Ip
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0
eU5hbWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGluZGV4LCBt
b2RlLCBlbnVtZXJhdG9yKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgZG9u
ZUNhc2VzLmxpbmsoJm1faml0KTsKQEAgLTE0MDk2LDkgKzE0MDkyLDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JIYXNQcm9wZXJ0eShOb2RlKiBub2RlLCBTbG93UGF0
aEZ1bmN0aW9uVHkKICAgICAgICAgb3BlcmF0aW9uQ2FzZXMubGluaygmbV9qaXQpOwogCiAgICAg
ICAgIGlmIChiYXNlUmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQ
UigpKSwgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1vZGVHUFIpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9h
ZEdQUigpKSwgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1vZGVHUFIpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlOYW1lUmVn
cywgaW5kZXhHUFIsIG1vZGVHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzbG93UGF0
aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZ3MsIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTE0
MjAwLDcgKzE0MTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5SWRXaXRo
VGhpcyhOb2RlKiBub2RlKQogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBjYWxsT3BlcmF0
aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhp
c1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKLSAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFsdWVSZWdzLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFsdWVSZWdzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDI4MSw3ICsxNDI3Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0eUVudW1lcmF0b3IoTm9kZSogbm9kZSkKIAogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxPck90aGVyVXNlKSB7CiAg
ICAgICAgICAgICBhdXRvIG5vdE90aGVyID0gbV9qaXQuYnJhbmNoSWZOb3RPdGhlcihiYXNlUmVn
cywgc2NyYXRjaDFHUFIpOwotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCB2bSgpLmVtcHR5UHJvcGVydHlOYW1lRW51bWVyYXRvcigpKSwg
c2NyYXRjaDFHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0oKS5lbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgICAgIGRvbmVDYXNlcy5hcHBl
bmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgIG5vdE90aGVyLmxpbmsoJm1faml0KTsKICAg
ICAgICAgfQpAQCAtMTQzMzksNyArMTQzMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc2xvd0Nhc2Vz
LmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaDFH
UFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRv
ckNlbGwsIHNjcmF0Y2gxR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Mu
cGF5bG9hZEdQUigpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0
eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTQzNTQsNyArMTQz
NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9y
KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MpOworICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNDQ0Myw5ICsx
NDQzOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJDYXQoTm9kZSogbm9kZSkK
IAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBpZiAobm9kZS0+
Y2hpbGQzKCkpCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MywgcmVzdWx0
LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywgb3AyUmVncywgb3Az
UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MywgcmVzdWx0Lmdw
cigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywgb3AyUmVncywgb3Az
UmVncyk7CiAgICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDIs
IHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJl
Z3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDIsIHJlc3VsdC5ncHIo
KSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bm9kZSk7CkBAIC0xNDUxNSw3ICsxNDUxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYmlnTGVuZ3RoLmxpbmsoJm1faml0
KTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSksIHN0cnVjdHVyZUdQUik7CiAgICAg
ZG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdp
dGhTaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJ1Y3R1cmVH
UFIsIHNpemVHUFIsIG51bGxwdHIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJy
YXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3Ry
dWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0NTQzLDcgKzE0NTM5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9k
ZSkKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGNhbGxPcGVy
YXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50
Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5
cGVkQXJyYXlUeXBlKCkpKSwgYXJndW1lbnRSZWdzKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCkpKSwgYXJndW1lbnRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0x
NDU3OCw3ICsxNDU3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1RoaXMoTm9k
ZSogbm9kZSkKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXNTdHJpY3Q7CiAgICAg
ZWxzZQogICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhpczsKLSAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBmdW5jdGlvbiwgdGVtcFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0aGlzVmFsdWVSZWdzKSk7CisgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24s
IHRlbXBSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykp
OwogCiAgICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7CiB9CkBAIC0xNDYyOCw3ICsx
NDYyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RLZXlzT3JPYmplY3RH
ZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93QnV0QXJyYXlCdWZmZXJDYXNlcywgdGhpcywgb3Bl
cmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdEdQUiwgJnZtKCksIGFycmF5U3RydWN0dXJlLCBz
Y3JhdGNoM0dQUikpOwogCi0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRp
b25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09i
amVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7
CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzT2Jq
ZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lc09iamVjdCwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAgICAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTQ2NDMsNyArMTQ2MzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5
c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVj
dCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVj
dCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwpAQCAtMTQ2NTgsNyArMTQ2NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5
cyA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXMsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXMgOiBvcGVyYXRp
b25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvYmplY3RSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xNDY4NSw3ICsx
NDY4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSog
bm9kZSkKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNoaWxkMigpLCBzb3VyY2VHUFIp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uT2JqZWN0QXNzaWduT2JqZWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFy
Z2V0R1BSLCBzb3VyY2VHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVj
dEFzc2lnbk9iamVjdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwg
c291cmNlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBu
b1Jlc3VsdChub2RlKTsKQEAgLTE0Njk4LDcgKzE0Njk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEFzc2lnbihOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVncyBz
b3VyY2VSZWdzID0gc291cmNlLmpzVmFsdWVSZWdzKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25VbnR5cGVk
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFyZ2V0R1BSLCBzb3VyY2VSZWdzKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25VbnR5cGVkLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFyZ2V0R1BSLCBzb3VyY2VSZWdzKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTE0
NzIzLDcgKzE0NzE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdENyZWF0
ZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q3JlYXRl
T2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm90b3R5cGVH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlR1BSKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CkBAIC0xNDczOCw3ICsxNDczNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgcHJvdG90eXBlUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2Jq
ZWN0Q3JlYXRlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm90
b3R5cGVSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xNDc5MCw3ICsxNDc4Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQu
ZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdEdQUiwgaW5saW5lQ2FwYWNpdHlHUFIp
OwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2FsbGVlR1BSLCBub2RlLT5pbmxp
bmVDYXBhY2l0eSgpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBjYWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5KCkpKTsK
IAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0ODI3LDcgKzE0ODIz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9k
ZSkKICAgICBtX2ppdC5lbWl0Tm9uTnVsbERlY29kZVN0cnVjdHVyZUlEKHN0cnVjdHVyZUdQUiwg
c3RydWN0dXJlR1BSKTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9kZS0+aXNJbnRl
cm5hbFByb21pc2UoKSA/IEpTSW50ZXJuYWxQcm9taXNlOjppbmZvKCkgOiBKU1Byb21pc2U6Omlu
Zm8oKSksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0
cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkpKTsKLSAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2Jh
bE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3Qp
LCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CiAKICAgICBm
YXN0UHJvbWlzZVBhdGgubGluaygmbV9qaXQpOwpAQCAtMTQ4NDAsNyArMTQ4MzYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKiBub2RlKQogICAgIG1f
aml0LnN0b3JlVHJ1c3RlZFZhbHVlKGpzVW5kZWZpbmVkKCksIENDYWxsSGVscGVyczo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Pjo6b2Zmc2V0T2ZJbnRlcm5h
bEZpZWxkKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1Byb21pc2U6OkZpZWxkOjpSZWFjdGlvbnNP
clJlc3VsdCkpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+
aXNJbnRlcm5hbFByb21pc2UoKSA/IG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSA6IG9w
ZXJhdGlvbkNyZWF0ZVByb21pc2UsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgY2FsbGVlR1BSKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+aXNJbnRl
cm5hbFByb21pc2UoKSA/IG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSA6IG9wZXJhdGlv
bkNyZWF0ZVByb21pc2UsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgY2FsbGVlR1BSKSk7CiAKICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNDg3Niw3ICsxNDg3Miw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUs
IE9wZXJhdGlvbiBvcGVyCiAgICAgbV9qaXQuZW1pdE5vbk51bGxEZWNvZGVTdHJ1Y3R1cmVJRChz
dHJ1Y3R1cmVHUFIsIHN0cnVjdHVyZUdQUik7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KEpTQ2xhc3M6OmluZm8oKSksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQo
KSkpKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5r
ZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBn
bG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkp
KSk7CiAKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CkBAIC0x
NDg4Nyw3ICsxNDg4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRl
cm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgICAgIG1faml0
LnN0b3JlVHJ1c3RlZFZhbHVlKGluaXRpYWxWYWx1ZXNbaW5kZXhdLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50
ZXJuYWxGaWVsZChpbmRleCkpKTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7
CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgY2FsbGVlR1BSKSk7CisgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVj
dCksIGNhbGxlZUdQUikpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpA
QCAtMTUwMTEsNyArMTUwMDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Qcmlt
aXRpdmUoTm9kZSogbm9kZSkKICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAg
ICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlzLCBvcGVy
YXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChu
b3RQcmltaXRpdmUsIHRoaXMsIG9wZXJhdGlvblRvUHJpbWl0aXZlLCByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CiAKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKIH0KQEAgLTE1MDM1LDcgKzE1MDMxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvUHJvcGVydHlLZXkoTm9kZSogbm9kZSkKICAgICBhbHJlYWR5UHJvcGVydHlL
ZXkubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJndW1lbnRSZWdzLCBy
ZXN1bHRSZWdzKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvUHJvcGVydHlLZXksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdz
KSk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKU0Nl
bGwsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CkBAIC0xNTA2NSw3ICsxNTA2MSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb051bWVyaWMoTm9kZSogbm9kZSkKICAg
ICBpc0hlYXBCaWdJbnQubGluaygmbV9qaXQpOwogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJn
dW1lbnRSZWdzLCByZXN1bHRSZWdzKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvTnVtZXJpYywgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvTnVt
ZXJpYywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50
UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMpOwogfQpAQCAtMTUxMDAsNyArMTUwOTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2FsbE51bWJlckNvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgQ0NhbGxIZWxwZXJzOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5v
dE51bWJlcihhcmd1bWVudFJlZ3MsIHRlbXBHUFIpKTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdz
KGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2FsbE51bWJlckNvbnN0cnVjdG9y
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uQ2FsbE51bWJlckNvbnN0cnVjdG9yLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtMTUxNDcsNyArMTUxNDMsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwoTm9kZSogbm9kZSkKICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSUmVn
IHNjb3BlUmVnID0gc2NvcGUuZ3ByKCk7CiAKLSAgICBtX2ppdC5sb2dTaGFkb3dDaGlja2VuVGFp
bFBhY2tldChzaGFkb3dQYWNrZXRSZWcsIHRoaXNSZWdzLCBzY29wZVJlZywgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKG1faml0LmNvZGVCbG9jaygpKSwgY2FsbFNpdGVJbmRleCk7CisgICAg
bV9qaXQuZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrLCBzY3JhdGNoMVJlZyk7CisgICAgbV9qaXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQo
c2hhZG93UGFja2V0UmVnLCB0aGlzUmVncywgc2NvcGVSZWcsIHNjcmF0Y2gxUmVnLCBjYWxsU2l0
ZUluZGV4KTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIApAQCAtMTUxNjYsNyArMTUxNjMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0QWRkKE5vZGUqIG5vZGUpCiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblNldEFkZCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2V0
R1BSLCBrZXlSZWdzLCBoYXNoR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEFk
ZCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2V0R1BSLCBrZXlS
ZWdzLCBoYXNoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1MTg4LDcgKzE1MTg1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU1hcFNldChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBT
ZXQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVn
cywgdmFsdWVSZWdzLCBoYXNoR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcFNl
dCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlS
ZWdzLCB2YWx1ZVJlZ3MsIGhhc2hHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTU0MDcsNyArMTU0MDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9kZSkK
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgbV9qaXQu
ZW1pdExvYWRQcm90b3R5cGUodm0oKSwgb2JqZWN0R1BSLCByZXN1bHRSZWdzLCBzbG93Q2FzZXMp
OwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25HZXRQcm90b3R5cGVPZk9iamVjdCwKLSAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpKTsKKyAgICAgICAgICAg
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpKTsK
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1
cm47CkBAIC0xNTQyNCw3ICsxNTQyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRQcm90b3R5cGVPZihOb2RlKiBub2RlKQogCiAgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90
eXBlKHZtKCksIHZhbHVlR1BSLCByZXN1bHRSZWdzLCBzbG93Q2FzZXMpOwogICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRQcm90b3R5cGVPZiwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpKTsKIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNTU1MSw3ICsxNTU0
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNp
emUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihtYWtlVW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdl
bmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSwgcmVzdWx0R1BSLAotICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBnbG9iYWxPYmplY3QpLAorICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLAogICAgICAgICBzdHJ1Y3R1cmUsCiAgICAgICAgIHNo
b3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCiAgICAg
ICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKQEAgLTE1Njg0LDcgKzE1NjgxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2RlLCBTX0pJ
VE9wZXJhdGlvbl9HQ1ogc2wKICAgICB9CiAgICAgfQogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGluZGV4R1BSKSk7Cisg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgc2xv
d1BhdGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIGluZGV4R1BSKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVF
eHRyYWN0Q2F0Y2hMb2NhbChOb2RlKiBub2RlKQpAQCAtMTU4MDQsMTEgKzE1ODAxLDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBH
UFJSZWcgYmFzZUdQUiwgSlNWYWx1CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJh
dG9yPiBzbG93UGF0aDsKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJ
VCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKLSAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVy
YXRpb24oKSksIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4u
c2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgdmFsdWVSZWdzLAogICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNs
b3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIHZhbHVlUmVncywKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRo
RnVuY3Rpb24oKSwgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IHZhbHVlUmVncywKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogCkBAIC0xNTgzNyw3ICsxNTgzNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5v
ZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyCiAgICAgICAgIGFyZzIudXNlKCk7CiAKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdz
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTE1ODU4
LDcgKzE1ODU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVw
aG9sZUNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXIKICAgICBtX2ppdC5jb21wYXJl
MzIoY29uZCwgYXJnMVJlZ3MucGF5bG9hZEdQUigpLCBhcmcyUmVncy5wYXlsb2FkR1BSKCksIHJl
c3VsdEdQUik7CiAKICAgICBpZiAoIWlzS25vd25JbnRlZ2VyKG5vZGUtPmNoaWxkMSgpLm5vZGUo
KSkgfHwgIWlzS25vd25JbnRlZ2VyKG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpCi0gICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgaGVscGVyRnVu
Y3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBh
cmcyUmVncykpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d1BhdGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIHVuYmxlc3NlZEJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
fQpAQCAtMTU4OTgsNyArMTU4OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNW
YWx1ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgICAg
IGFyZzIudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJG
dW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJl
Z3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAg
ICBicmFuY2hUZXN0MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CkBA
IC0xNTkyMiw3ICsxNTkxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVl
UGVlcGhvbGVCcmFuY2goTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICAgICAgICAg
IHNsb3dQYXRoLmxpbmsoJm1faml0KTsKIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rp
b24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcy
UmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwog
ICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMTU5NjIsNyArMTU5NTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSGVhcEJpZ0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiAgICAgbm90RXF1
YWxDYXNlLmxpbmsoJm1faml0KTsKIAogICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBA
IC0xNjExNSw3ICsxNjExMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9w
ZShOb2RlKiBub2RlKQogCiAgICAgYXV0byBpc05vbkVtcHR5U3RyaW5nID0gbV9qaXQuYnJhbmNo
VGVzdDMyKENDYWxsSGVscGVyczo6Tm9uWmVybywgYWxsb2NhdG9yR1BSKTsKIAotICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0
cmluZyhtX2ppdC5ncmFwaCgpLm1fdm0pKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5s
aW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgp
LCBqc0VtcHR5U3RyaW5nKG1faml0LmdyYXBoKCkubV92bSkpLCByZXN1bHRHUFIpOwogCiAgICAg
aXNOb25FbXB0eVN0cmluZy5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZt
KCkpOwpAQCAtMTYxMjMsMTEgKzE2MTIwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIHN3aXRjaCAobnVtT3BHUFJzKSB7CiAgICAgY2Fz
ZSAyOgogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAgICAg
ICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSkpOworICAgICAgICAg
ICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0pKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSAzOgogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFrZVJvcGUzLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sx
XSwgb3BHUFJzWzJdKSk7CisgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFr
ZVJvcGUzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNb
MF0sIG9wR1BSc1sxXSwgb3BHUFJzWzJdKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNjE0MSwxMSArMTYx
MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZGUqIG5vZGUp
CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBzd2l0Y2ggKG51bU9w
R1BScykgewogICAgIGNhc2UgMjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtl
Um9wZTIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwg
b3BHUFJzWzFdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTIsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJz
WzFdKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSAzOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMywgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0s
IG9wR1BSc1syXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUzLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BS
c1sxXSwgb3BHUFJzWzJdKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE2MjQ4LDkgKzE2MjQ1LDkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQogCiAgICAg
ICAgIGlmICghcmVjb3ZlckdlbmVyaWNDYXNlLmVtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChi
YXNlUmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9w
ZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3Mu
cGF5bG9hZEdQUigpKSwgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0
aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292
ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlUmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0aGlz
LCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBpbmRleEdQUiwgZW51bWVy
YXRvckdQUikpOwogICAgICAgICB9CiAKICAgICAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2
OTUzNDU1Nzk5ZTU4ZDYyZTljOWZlM2U0NjY2M2E5ZWRiZGIyYTQ0Li42ZjNiZDkzMWY5MzJiYjQx
Zjk5ZWI5ZjFkZTRmYTAyYTdjMjRlOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC05NzQsMTYgKzk3NCwxNSBAQCBjbGFzcyBTcGVjdWxh
dGl2ZUpJVCB7CiAgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUklu
Zm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CiAgICAgfQogCi0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZf
SklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0
aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgR1BSUmVnIGNvZGVCbG9ja0dQUikKICAg
ICB7Ci0gICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2RlQmxvY2sqIGFzIGEgd2Vhay1wb2lu
dGVyLgotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxWX0pJVE9wZXJhdGlvbl9DYj4oVHJ1
c3RlZEltbVB0cihzdGF0aWNfY2FzdDx2b2lkKj4oY29kZUJsb2NrKSkpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50czxWX0pJVE9wZXJhdGlvbl9DYj4oY29kZUJsb2NrR1BSKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVy
YXRpb24pOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihaX0pJVE9wZXJhdGlvbl9HIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24o
Wl9KSVRPcGVyYXRpb25fRyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBnbG9iYWxP
YmplY3RHUFIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxaX0pJVE9wZXJh
dGlvbl9HPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Wl9KSVRPcGVyYXRpb25fRz4oZ2xvYmFs
T2JqZWN0R1BSKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9sbGJh
Y2tPbkV4Y2VwdGlvblNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
aW5kZXggYTkxMmViNTk4Yjk4MjJhMzU5NmExYzE4Y2UxZTYyM2U4YWFhNjgxMS4uYzI3MjlkOWQw
MDVkYTRhNzZmOWJmODdkOGI4YjAyZWYwYzdkMjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNzgsMTIgKzE3OCwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdp
biwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJ
ZEZ1bmN0aW9uKHR5cGUpLAogICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAg
ICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNl
R1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJp
YXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKICAgICAgICAgICAgIHNwaWxsTW9k
ZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAg
IH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAt
MjE1LDEyICsyMTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdl
dEJ5SWRXaXRoVGhpc09wdGltaXplLAogICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5y
YXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAogICAgICAg
ICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
LSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
YmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlz
R1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEdl
dEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxP
clVuZGVmaW5lZChFZGdlIG9wZXJhbgogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVj
dEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2Nh
bEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEds
b2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFy
Z0dQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRk
cmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpF
cXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0
R1BSKTsKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogCiAgICAg
ICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdwcigp
OwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2Jq
ZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFyZ0dQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xv
YmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFu
Y2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSLCB0YWtlbik7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJy
YW5jaE5vZGUKICAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBh
cmcyR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAgCiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCkBAIC01
MDMsNyArNTAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKIAogICAgICAgICBqdW1wKGlu
dmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNlSnVtcCk7CiAKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
MUdQUiwgYXJnMkdQUikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAg
ICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBp
bGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9CiAKQEAgLTU0MSw3ICs1NDEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0
RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZt
X2ppdCk7CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGws
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVn
cyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJS
ZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICAKQEAgLTU5Nyw3ICs1OTcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwg
Ym9vbCBpbnZlcnQpCiAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BS
KTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncykpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXEsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFS
ZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTczNCw3ICs3
MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uodm0oKSwgbV9qaXQsIHNjcmF0Y2hH
UFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJh
bWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93Q2FzZSk7CiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2Uu
bGluaygmbV9qaXQpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dGb3JWYXJhcmdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2lu
Z1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTc2
Myw3ICs3NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpc0ZsdXNoZWQoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywgYXJndW1lbnRzIGlzIGlu
IGFyZ3VtZW50c0dQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMgZmx1c2hlZC4KLSAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNHUFIs
IG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRzR1BS
LCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
Tm93IHdlIGhhdmUgdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBjYWxsZWUgZnJhbWUsIGJ1dCB3
ZSd2ZSBsb3N0IHRoZSBhcmd1bWVudHMgb3BlcmFuZC4KQEAgLTc3Myw3ICs3NzMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgZW1pdFNl
dFZhcmFyZ3NGcmFtZShtX2ppdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGZhbHNlLCBzY3Jh
dGNoR1BSMSwgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMigtKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2Yodm9pZCopKSkpLCBzY3JhdGNoR1BS
MSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY3JhdGNoR1BS
MSwgYXJndW1lbnRzR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFy
Z3NGcmFtZSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY3JhdGNoR1BSMSwgYXJndW1lbnRzR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNl
dCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIH0KQEAgLTkxMCw3ICs5MTAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICByZXF1aXJlZEJ5
dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVx
dWlyZWRCeXRlcyk7CiAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRC
eXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJl
Z1QxKTsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2Fs
bEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSk7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9q
aXQuYXBwZW5kQ2FsbChvcGVyYXRpb25DYWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CkBAIC0xMDA1LDcgKzEwMDUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOyAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8g
cmVnVDAKICAgICB9CiAKKyAgICAvLyBGSVhNRQogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOyAv
LyBKU0dsb2JhbE9iamVjdCBuZWVkcyB0byBiZSBpbiByZWdUMworICAgIC8vIG1faml0LmxvYWRV
bmxpbmtlZENvbnN0YW50KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxPYmplY3QgbmVlZHMgdG8gYmUg
aW4gcmVnVDMKICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCh2bSgpLCBtX2ppdCk7CiAK
ICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTE4OTAsNyArMTg5Miw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgdmFs
dWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOworICAgIG1faml0
LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0
LmdyYXBoKCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIHJlc3VsdEdQUik7CiAgICAg
bV9qaXQuY29tcGFyZTY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdmFsdWVHUFIsIHJlc3VsdEdQ
UiwgcmVzdWx0R1BSKTsKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiB9CkBAIC0yMTc5LDggKzIxODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50
eXBlZEJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYXNpY0JsbwogICAg
ICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgICAg
ICBicmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMy
KE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCB0YWtlbik7CiAgICAgICAgICAgICBtX2ppdC5lbWl0
TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgdGVtcDFHUFIpOwotICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCks
IHRlbXAyR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0ZW1wMkdQUik7
CiAgICAgICAgICAgICBicmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wMUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQo
KSksIHRlbXAyR1BSLCB0YWtlbik7CiAgICAgICAgICAgICBqdW1wKG5vdFRha2VuLCBGb3JjZUp1
bXApOwogICAgICAgICB9IGVsc2UKQEAgLTIzNzgsNyArMjM3OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3Rk
Ojp0dXBsZTxKCiAgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
UmVncyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAg
ICAgICAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKICAgICAgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwpAQCAtMjQzNCwxMSArMjQzNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8
SgogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51
bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHBy
b3BlcnR5R1BSKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwpAQCAtMjUxMyw3ICsyNTE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1
cGxlPEoKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgfQogCiAKQEAgLTI2MDUsNyArMjYwNiw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdFJlZ3MuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLmdw
cigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcp
KTsKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncy5ncHIoKSwgbm9kZSk7CiAg
ICAgICAgIH0KIApAQCAtMjY2Myw3ICsyNjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoK
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVj
dEludCwKLSAgICAgICAgICAgICAgICByZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIHJlc3VsdFJlZywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICBicmVhazsK
QEAgLTI3OTIsOCArMjc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBU
ZXN0SW5saW5lKE5vZGUqIG5vZGUpCiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgaWYgKGlubGlu
ZUNvZGVTdGF0czhCaXQubmVlZHNUZW1wMigpKSB7CiAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBy
ZXVzZWQgZ2xvYmFsT2JqZWN0R1BSIGZvciB0ZW1wMiwgbGV0J3MgcmVzdG9yZSB0aGUgZ2xvYmFs
IG9iamVjdC4KLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RDb25zdCA9
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOwot
ICAgICAgICAgICAgbV9qaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoZ2xvYmFs
T2JqZWN0Q29uc3QpLCBnbG9iYWxPYmplY3RHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVu
bGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwganND
YXN0PEpTR2xvYmFsT2JqZWN0Kj4obm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSkpLCBnbG9i
YWxPYmplY3RHUFIpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMzU0OCw3ICszNTQ4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGlmICgh
c3RvcmFnZUVkZ2UpIHsKICAgICAgICAgICAgIGF1dG8gY2FsbFNsb3dQYXRoID0gWyZdICgpIHsK
LSAgICAgICAgICAgICAgICBhdXRvIGdsb2JhbE9iamVjdEltbVB0ciA9IFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpOworICAgICAgICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRyID0g
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICAg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBZGQsIHJlc3VsdEdQUiwg
Z2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CkBAIC0z
NzU3LDcgKzM3NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0lz
TG9ja0ZyZWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRH
UFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJl
ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODk5LDcg
KzM4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpKSwgdmFsdWVHUFIpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCwg
dmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJM
ZW5ndGgsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBjYW4ndCBrbm93IGZvciBzdXJlIHRo
YXQgdGhlIHJlc3VsdCBpcyBhbiBpbnQgYmVjYXVzZSBvZiB0aGUgc2xvdyBwYXRocy4gOi0vCiAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVlR1BSLCBub2RlKTsKQEAgLTM5MzIsNyArMzkz
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93
UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
QXJyYXlQb3AsIHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikp
OworICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9w
LCB2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKIAog
ICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTQwNTgsNyArNDA1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgLy8gSW5zdGVhZCBvZiB0aGUgc2xvdyBwYXRoIGdlbmVyYXRv
ciwgd2UgZW1pdCBjYWxsT3BlcmF0aW9uIGhlcmUuCiAgICAgICAgIGlmICghKG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVG9OdW1iZXIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
Z3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIs
IHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsK
ICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2hJ
Zk5vdE51bWJlcihhcmd1bWVudEdQUik7CkBAIC00MDY3LDcgKzQwNjcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIG5vdE51bWJlci5s
aW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOworICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApA
QCAtNDU0Myw3ICs0NTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhp
c1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwpAQCAtNDY4MSw3ICs0NjgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFs
T2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9
IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAgIG1faml0LmVtaXRM
b2FkU3RydWN0dXJlKHZtKCksIHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVj
dHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAg
ICAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2Jh
bE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHQuZ3ByKCkpOwpAQCAtNDg4
Niw3ICs0ODg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
CiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25NYXBIYXNoLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBK
U1ZhbHVlUmVncyhpbnB1dEdQUikpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25NYXBIYXNoLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1Zh
bHVlUmVncyhpbnB1dEdQUikpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygp
OwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtNDkzMSw3ICs0OTMx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAg
IHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBIYXNoLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVlUmVncyhpbnB1dEdQUikp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7CiAgICAg
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIApAQCAtNTA3OSw5ICs1MDc5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd1BhdGhDYXNlcy5saW5rKCZtX2ppdCk7CiAg
ICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhpbmRleEdQUik7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwor
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwg
aGFzaEdQUik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwogICAgICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CkBAIC01Mzk0
LDcgKzUzOTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJl
Z2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc093
blByb3BlcnR5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RH
UFIsIGtleUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJvcGVy
dHksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUiwg
a2V5R1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAKaW5kZXggMGM0ZDE5NWQ5MTQ4NTcyMjkzODRlOTg0OGQxNzk5NGRhMzk0MTI2ZC4uYjAxOTk5
YTVlYWVhOTkyMTYwOTIxMjU3NTU1NTI2OGE3N2E4MWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8u
aCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
KyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogCkBAIC0xNDEsNiArMTQyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBwdHJkaWZmX3Qgb2Zm
c2V0T2ZGcmFtZVNpemUgPSAwOyAvLyBUaGlzIGlzIHRoZSBERkcgZnJhbWUgY291bnQuCiAgICAg
cHRyZGlmZl90IG9mZnNldE9mVGFyZ2V0UEMgPSBvZmZzZXRPZkZyYW1lU2l6ZSArIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSk7CiAgICAgcHRyZGlmZl90IG9mZnNldE9mUGF5bG9hZCA9IG9mZnNldE9m
VGFyZ2V0UEMgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworICAgIHB0cmRpZmZfdCBvZmZzZXRP
ZkNvZGVCbG9jayA9IG9mZnNldE9mUGF5bG9hZCArIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2s7CiAgICAgcHRyZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0
T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVn
aXN0ZXJzOwogICAgIAogICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgR1BS
SW5mbzo6cmVnVDApOwpAQCAtMTYyLDggKzE2NCwyMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5h
Ym9ydFdpdGhSZWFzb24oREZHVW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24pOwog
CiAgICAgb2subGluaygmaml0KTsKKworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZkNvZGVCbG9jayksIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUkluZm86OnJlZ1QyLCBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgaml0LnByb2Jl
RGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkp
OworICAgIH0pOworI2VuZGlmCisKICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVudHJ5
RnJhbWVDYWxsZWVTYXZlc0J1ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQuZW1pdE1h
dGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgQ29kZUJsb2Nr
OjpvZmZzZXRPZkpJVERhdGEoKSksIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyNlbmRp
ZgogCiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVy
VXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAKaW5kZXggOGZkMDJmM2JkMzk0MTllODMzZTI3
YWE5YTE5NzY1Nzg0NDllN2E3NS4uMzE1OWNkYTVjNDI2MzVjZjM2YmVlNzUzMWIwYTJkYmIyNTM3
MWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaWVyVXBDaGVj
a0luamVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Rp
ZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGNsYXNzIFRpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgIAogICAgIGJvb2wgcnVu
KCkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9wbGFuLm1vZGUoKSA9
PSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRyk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzREZH
KG1fZ3JhcGgubV9wbGFuLm1vZGUoKSkpOwogCiAgICAgICAgIGlmICghT3B0aW9uczo6dXNlRlRM
SklUKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggMDI0ZGRmMGFmNjc3MmI4NWNmNDY0OWU5
YmFiMjRmYzQ4NjQwZTU5Ni4uMWI2NDMzNGExN2VkZTIyMDZlMTFhNWRmMTJjNTM2OTI0NmFmMzI0
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcApA
QCAtMTM3NCw2ICsxMzc0LDIyIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29w
eUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCCiAgICAgc3Bvb2xl
ci5maW5hbGl6ZUdQUigpOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFB1dENvZGVC
bG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQsIGJvb2wgaXNDb25zdHJ1Y3RvcikK
K3sKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxs
ZWUsIHJlc3VsdCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKKyAgICBhdXRvIGhhc0V4ZWN1
dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgVHJ1c3RlZEltbTMyKEpTRnVuY3Rp
b246OnJhcmVEYXRhVGFnKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25S
YXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyks
IHJlc3VsdCk7CisgICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOworICAgIGlmIChpc0NvbnN0
cnVjdG9yKQorICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFi
bGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCByZXN1bHQpOworICAgIGVsc2UK
KyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZz
ZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7CisKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZzZXRPZkNvZGVCbG9jaygpKSwg
cmVzdWx0KTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJhbWVT
bG90Ojpjb2RlQmxvY2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApp
bmRleCBjMTE3ZTBiNWNmOWNlMmFjNzU5OGU1MmRhZDMzOWNlYTZiMGFmZWQ2Li5lYzNlNWQ0OTAy
OTA3ZGQxM2VlZGIwMjdkNjZhNjFhZTYwMWMxNTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTQwNiw2ICs0MDYsOCBAQCBjbGFzcyBBc3NlbWJs
eUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAg
dm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCwgYm9v
bCBpc0NvbnN0cnVjdG9yKTsKKwogI2lmIENQVShYODZfNjQpCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggNjg3ZWZkYjAwZWFjN2QxODU5ZTY5NzE1
MzlkZjBhYTVlZDM5OGE3NS4uYTY1MjVmNjBiMzA4NWMyNjc0NWZiMmNlNzUxMzc0ZmUyNTdiOTJk
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC02OSw2ICs2
OSwxMCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAg
ICAgICAgR1BSUmVnIG1fZ3ByOwogICAgIH07CiAKKyAgICAvLyBCYXNlIGNsYXNzIGZvciBjb25z
dGFudCBtYXRlcmlhbGl6ZXJzLgorICAgIC8vIEl0IG9mZmVycyBEZXJpdmVkQ2xhc3M6Om1hdGVy
aWFsaXplIGFuZCBwb2tlIGZ1bmN0aW9ucy4KKyAgICBjbGFzcyBDb25zdGFudE1hdGVyaWFsaXpl
ciB7IH07CisKICAgICAvLyBUaGUgbW9zdCBnZW5lcmFsIGhlbHBlciBmb3Igc2V0dGluZyBhcmd1
bWVudHMgdGhhdCBmaXQgaW4gYSBHUFIsIGlmIHlvdSBjYW4gY29tcHV0ZSBlYWNoCiAgICAgLy8g
YXJndW1lbnQgd2l0aG91dCB1c2luZyBhbnkgYXJndW1lbnQgcmVnaXN0ZXJzLiBZb3UgdXN1YWxs
eSB3YW50IG9uZSBvZiB0aGUgc2V0dXBBcmd1bWVudHMqKCkKICAgICAvLyBtZXRob2RzIGJlbG93
IGluc3RlYWQgb2YgdGhpcy4gVGhpcyB0aGluZyBpcyBtb3N0IHVzZWZ1bCBpZiB5b3UgaGF2ZSAq
YSBsb3QqIG9mIGFyZ3VtZW50cy4KQEAgLTM2NSw3ICszNjksMTAgQEAgY2xhc3MgQ0NhbGxIZWxw
ZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHBv
a2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1
bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5z
aWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBv
a2UpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9rZU9m
ZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NTb3Vy
Y2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHBva2Uo
YXJnLCBwb2tlT2Zmc2V0KTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vfb2Zf
djxDb25zdGFudE1hdGVyaWFsaXplciwgQXJnVHlwZT4pCisgICAgICAgICAgICBhcmcucG9rZSgq
dGhpcywgYWRkcmVzc0ZvclBva2UocG9rZU9mZnNldCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBi
b29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1
cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRy
YUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKQEAgLTY0
Nyw2ICs2NTQsMjcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVy
cyB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VS
ZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwogICAgIH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVuc2ln
bmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQUlNv
dXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1
bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywgdHlw
ZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjpp
c19iYXNlX29mX3Y8Q29uc3RhbnRNYXRlcmlhbGl6ZXIsIEFyZz4+CisgICAgc2V0dXBBcmd1bWVu
dHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBSQXJn
cywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQ
UnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19mbG9hdGluZ19wb2ludDxDVVJSRU5U
X0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSwgIldlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGZsb2F0
cy9kb3VibGVzIGluIHNldHVwQXJndW1lbnRzIik7CisgICAgICAgIGF1dG8gbnVtQXJnUmVnaXN0
ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyNpZiBPUyhXSU5ET1dT
KSAmJiBDUFUoWDg2XzY0KQorICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQUkFy
Z3MgKyBudW1GUFJBcmdzICsgKHN0ZDo6aXNfc2FtZTxSRVNVTFRfVFlQRSwgU2xvd1BhdGhSZXR1
cm5UeXBlPjo6dmFsdWUgPyAxIDogMCk7CisjZWxzZQorICAgICAgICBhdXRvIGN1cnJlbnRBcmdD
b3VudCA9IG51bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYgKGN1
cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgc2V0dXBBcmd1
bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3Mu
Li4pOworICAgICAgICAgICAgYXJnLm1hdGVyaWFsaXplKCp0aGlzLCBHUFJJbmZvOjp0b0FyZ3Vt
ZW50UmVnaXN0ZXIoY3VycmVudEFyZ0NvdW50KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1GUFJB
cmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOworICAgIH0KKwogI3VuZGVmIENVUlJFTlRfQVJHVU1F
TlRfVFlQRQogI3VuZGVmIFJFU1VMVF9UWVBFCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgKaW5kZXggMDAyMmJkOWI5ODU5NWE4MzBjMWVlMDk1NmY4MTA4M2VkNDc4MWU4Ni4uNjdlNDdi
M2M2YzZmNjBmYjAxNThmYWM4ZjE5ZTcwMmVkYTdlMTUzYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9HUFJJbmZvLmgKQEAgLTQyMCwxMyArNDIwLDE0IEBAIGNsYXNzIEdQUkluZm8gewogY2xhc3Mg
R1BSSW5mbyB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAxMTsKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTA7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKIAogICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0
aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
bnVtYmVyVGFnUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub3RDZWxsTWFza1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6
OnIxMzsKIAogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKQEAgLTQ1MCwxNiArNDUxLDE2IEBA
IGNsYXNzIEdQUkluZm8gewogCiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1MxID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjpyMTM7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTU7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjpyMTM7IC8vIGNvbnN0YW50c1JlZ2lzdGVy
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTQ7
IC8vIG51bWJlclRhZ1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0
ID0gWDg2UmVnaXN0ZXJzOjpyMTU7IC8vIG5vdENlbGxNYXNrUmVnaXN0ZXIKICNlbHNlCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxID0gWDg2UmVnaXN0ZXJzOjplc2k7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjplZGk7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTM7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gWDg2UmVnaXN0ZXJzOjpyMTU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTM7IC8vIGNv
bnN0YW50c1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gWDg2
UmVnaXN0ZXJzOjpyMTQ7IC8vIG51bWJlclRhZ1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1M2ID0gWDg2UmVnaXN0ZXJzOjpyMTU7IC8vIG5vdENlbGxNYXNrUmVnaXN0
ZXIKICNlbmRpZgogCiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZv
ciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4K
QEAgLTQ5Nyw5ICs0OTgsOSBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICB7CiAgICAgICAgIEFTU0VS
VChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKICNpZiAhT1MoV0lORE9XUykKLSAgICAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9
IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3
LCByZWdDUzAsIHJlZ0NTMSwgcmVnQ1MyIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVn
VDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCByZWdUNywgcmVnQ1MwLCByZWdDUzEgfTsK
ICNlbHNlCi0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1i
ZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVn
VDUsIHJlZ0NTMCwgcmVnQ1MxLCByZWdDUzIsIHJlZ0NTMywgcmVnQ1M0IH07CisgICAgICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7
IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ0NTMCwgcmVnQ1Mx
LCByZWdDUzIsIHJlZ0NTMyB9OwogI2VuZGlmCiAgICAgICAgIHJldHVybiByZWdpc3RlckZvcklu
ZGV4W2luZGV4XTsKICAgICB9CkBAIC02MzQsNiArNjM1LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk02NFJlZ2lz
dGVyczo6ZnA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0ZXIg
PSBBUk02NFJlZ2lzdGVyczo6eDI3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENl
bGxNYXNrUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI4OworICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIGNvbnN0YW50c1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBkYXRhVGVtcFJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6
OmRhdGFUZW1wUmVnaXN0ZXI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWVtb3J5VGVt
cFJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3RlcjsKICAgICAvLyBU
ZW1wb3JhcnkgcmVnaXN0ZXJzLgpAQCAtNjYwLDcgKzY2Miw3IEBAIGNsYXNzIEdQUkluZm8gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4MjM7
IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUg
PSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBVc2VkIGJ5IEZUTCBvbmx5CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gQVJNNjRSZWdpc3RlcnM6OngyNTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBBUk02NFJlZ2lzdGVyczo6eDI2OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7IC8vIGNvbnN0
YW50cwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJz
Ojp4Mjc7IC8vIG51bWJlclRhZwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOSA9
IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7IC8vIG5vdENlbGxNYXNrCiAgICAgLy8gVGhlc2UgY29uc3Rh
bnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYg
cmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KQEAgLTc3Nyw3ICs3NzksNyBAQCBjbGFzcyBHUFJJbmZv
IHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBy
ZWdUMjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzAgPSBNSVBTUmVnaXN0ZXJz
OjpzMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBNSVBTUmVnaXN0ZXJz
OjpzMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBNSVBTUmVnaXN0ZXJz
OjpzMTsgLy8gY29uc3RhbnRzCiAKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWdu
ZWQgaW5kZXgpCiAgICAgewpAQCAtODMyLDYgKzgzNCw3IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lz
dGVyczo6ZnA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0ZXIg
PSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90
Q2VsbE1hc2tSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNjsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBjb25zdGFudHNSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNDsK
IAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ1QwID0gUklTQ1Y2NFJlZ2lzdGVyczo6
eDEwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ1QxID0gUklTQ1Y2NFJlZ2lzdGVy
czo6eDExOwpAQCAtODU0LDcgKzg1Nyw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHJlZ0NTNCA9IFJJU0NWNjRSZWdpc3RlcnM6OngyMTsKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjI7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDIzOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IFJJU0NWNjRSZWdpc3RlcnM6Ongy
NDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBSSVNDVjY0UmVnaXN0ZXJz
Ojp4MjQ7IC8vIGNvbnN0YW50cwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9
IFJJU0NWNjRSZWdpc3RlcnM6OngyNTsgLy8gbnVtYmVyVGFnCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1M5ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2OyAvLyBub3RDZWxsTWFzawog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMTAgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4
Mjc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZTljMGVjYzMwZWFjYzY4YzU1OWY4
YWM0NjNlMTA2MjIzMWRkZWI2YS4uZmU2ZTI2NzkwY2Q3NTk0OWRkNDdmNDM1YjRiMzg5NWFmMzk0
NzU1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjA1LDE5ICsyMDUsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dDYXNlQ2FsbChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyLCBTbG93UGF0aEZ1bmN0aQogdm9pZCBKSVQ6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1l
SW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fdW5saW5r
ZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsKLSAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJlc3VsdCk7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JS
YXJlRGF0YSgpKSwgcmVzdWx0KTsKLSAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBicmFuY2hUZXN0
UHRyKFplcm8sIHJlc3VsdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNGdW5jdGlvbjo6
cmFyZURhdGFUYWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvblJhcmVE
YXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwgcmVz
dWx0KTsKLSAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7Ci0gICAgaWYgKG1fdW5saW5rZWRD
b2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSkKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3Vs
dCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNvbnN0cnVjdCgpKSwg
cmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDYWxsKCkpLCByZXN1bHQpOwotCi0g
ICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZTo6b2Zm
c2V0T2ZDb2RlQmxvY2soKSksIHJlc3VsdCk7Ci0gICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVy
KHJlc3VsdCwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKLQorICAgIEFzc2VtYmx5SGVscGVy
czo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKHJlc3VsdCwgbV91bmxpbmtlZENv
ZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKTsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIHByb2Jl
RGVidWcoWz1dIChQcm9iZTo6Q29udGV4dCYgY3R4KSB7CiAgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOwpAQCAtMjc0LDcgKzI2
Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgaWYgKG9w
Y29kZUlEICE9IG9wX2NhdGNoKSB7CiAgICAgICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgICAgICAgICAgbG9hZFB0cihBZGRy
ZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRhdGFUYWJsZSgpKSwgcmVnVDEpOwot
ICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFz
ZWxpbmVKSVREYXRhKCkpLCByZWdUMik7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCByZWdUMik7CiAKICAgICAgICAgICAg
IGF1dG8gbWV0YWRhdGFPSyA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDEsIHNfbWV0YWRhdGFHUFIp
OwogICAgICAgICAgICAgYnJlYWtwb2ludCgpOwpAQCAtNjk4LDcgKzY4Niw3IEBAIHZvaWQgSklU
OjplbWl0TWF0ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpCiB7CiAg
ICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRh
YmxlKCkpLCBzX21ldGFkYXRhR1BSKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVC
bG9jazo6b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKKyAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBzX2Nv
bnN0YW50c0dQUik7CiB9CiAKIHZvaWQgSklUOjplbWl0U2F2ZUNhbGxlZVNhdmVzKCkKQEAgLTc2
Nyw3ICs3NTUsNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyhK
SVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgp
OwogICAgIGlmIChtX3VubGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29k
ZSkKLSAgICAgICAgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKCk7CisgICAgICAg
IGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShyZWdUMCk7CiAKICAgICBMYWJlbCBi
ZWdpbkxhYmVsKHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiOGZkYTVkMWI0
MzE1ZTlmN2Q3MDRjNDZhYWE1YTViMWJiMDM0NGZiLi5iMTMwZTNlYzk2ZmY4YmVlMzEzMTRhMWIw
ZGM4OTQxZTAxMzEwNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTI2Miw3ICsyNjIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBsb2FkQ29kZUJsb2NrQ29uc3RhbnRU
YWcoVmlydHVhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKTsKICNlbmRpZgogCi0gICAgICAgIHZvaWQg
ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQgPSByZWdUMCk7
CisgICAgICAgIHZvaWQgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyBy
ZXN1bHQpOwogCiAgICAgICAgIHZvaWQgZXhjZXB0aW9uQ2hlY2soSnVtcCBqdW1wVG9IYW5kbGVy
KQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
bXBpbGF0aW9uTW9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvbXBpbGF0
aW9uTW9kZS5jcHAKaW5kZXggYzU5ZDM5NGE0NjdjNWZkZDY4ZmZlMmY5YzJmYjUyNTZhNzQyMjA2
Yy4uY2RmNmMxMDI0ZjgxZTNlZjk0YjFlODM2Mjc2NzJmYmE1NDMxYzgyZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb21waWxhdGlvbk1vZGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29tcGlsYXRpb25Nb2RlLmNwcApAQCAtNDQsNiAr
NDQsOSBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSklUQ29tcGlsYXRp
b25Nb2RlIG1vZGUpCiAgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OkRGRzoKICAgICAgICAg
b3V0LnByaW50KCJERkdNb2RlIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpJVENvbXBp
bGF0aW9uTW9kZTo6VW5saW5rZWRERkc6CisgICAgICAgIG91dC5wcmludCgiVW5saW5rZWRERkci
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2RlOjpGVEw6CiAg
ICAgICAgIG91dC5wcmludCgiRlRMTW9kZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvbXBpbGF0aW9uTW9kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb21waWxhdGlvbk1vZGUuaAppbmRleCA3YmMwZTA3ZmY1
M2NhMzE1OTliNTY4ZWZhMjE1OTFhNjMyY2I5NTRmLi4wNjhhNTcyYmYyNmY2ZGVlMTg3NDg5ODZk
ZjE5Yzg1MWNkNjNlMWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvbXBpbGF0aW9uTW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29t
cGlsYXRpb25Nb2RlLmgKQEAgLTMzLDEwICszMywyMiBAQCBlbnVtIGNsYXNzIEpJVENvbXBpbGF0
aW9uTW9kZSB7CiAgICAgSW52YWxpZENvbXBpbGF0aW9uLAogICAgIEJhc2VsaW5lLAogICAgIERG
RywKKyAgICBVbmxpbmtlZERGRywKICAgICBGVEwsCi0gICAgRlRMRm9yT1NSRW50cnkKKyAgICBG
VExGb3JPU1JFbnRyeSwKIH07CiAKK2lubGluZSBib29sIGlzREZHKEpJVENvbXBpbGF0aW9uTW9k
ZSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgSklUQ29tcGlsYXRpb25N
b2RlOjpERkc6CisgICAgY2FzZSBKSVRDb21waWxhdGlvbk1vZGU6OlVubGlua2VkREZHOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCiBpbmxpbmUgYm9vbCBpc0ZUTChKSVRDb21waWxhdGlvbk1vZGUgbW9kZSkKIHsK
ICAgICBzd2l0Y2ggKG1vZGUpIHsKQEAgLTQ4LDYgKzYwLDE3IEBAIGlubGluZSBib29sIGlzRlRM
KEpJVENvbXBpbGF0aW9uTW9kZSBtb2RlKQogICAgIH0KIH0KIAoraW5saW5lIGJvb2wgaXNVbmxp
bmtlZChKSVRDb21waWxhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAg
ICBjYXNlIEpJVENvbXBpbGF0aW9uTW9kZTo6QmFzZWxpbmU6CisgICAgY2FzZSBKSVRDb21waWxh
dGlvbk1vZGU6OlVubGlua2VkREZHOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAppbmRleCA1Yjg1YzdhYzUxN2E3MDJkY2ZkN2E2MmVkZjA5MjExYTNkNWQzMzNlLi40NGMxMmQ4
ZDY5MjQyOTRhMDU4OGZjNDYyZWY1ODI5MjUyYjgxZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEwMjUsNyArMTAyNSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2NhdGNoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAv
LyBTbyB3ZSByZXBsZW5pc2ggaXQgaGVyZS4KICAgICB7CiAgICAgICAgIGxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7Ci0gICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpKSwgc19j
b25zdGFudHNHUFIpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6
b2Zmc2V0T2ZKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7CiAgICAgfQogCiAgICAgY2FsbE9w
ZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uUmV0cmlldmVBbmRDbGVhckV4Y2VwdGlv
bklmQ2F0Y2hhYmxlLCAmdm0oKSk7CkBAIC0xMDQ2LDYgKzEwNDYsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9jYXRjaChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAKICAg
ICBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0
Y2hBbmRWYWx1ZVByb2ZpbGUsICZ2bSgpLCBtX2J5dGVjb2RlSW5kZXguYXNCaXRzKCkpOwogICAg
IGF1dG8gc2tpcE9TUkVudHJ5ID0gYnJhbmNoVGVzdFB0cihaZXJvLCByZXR1cm5WYWx1ZUdQUik7
CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHJldHVyblZhbHVlR1BSMiwgQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKTsKICAgICBlbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgZmFy
SnVtcChyZXR1cm5WYWx1ZUdQUiwgRXhjZXB0aW9uSGFuZGxlclB0clRhZyk7CiAgICAgc2tpcE9T
UkVudHJ5LmxpbmsodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAppbmRleCBlZmM5YTBlOGJiMDJlMjI1ODExODQ2MjNkMTA2MGE4OTM1Y2RmMmExLi41
YjVkYTc4ZGJhNzE1NjIzMTJlOTcwNjdmNDY3YjQ1NzM5MDg0YTIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIwNTYsNyArMjA1Niw3IEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PcHRpbWl6ZSwgU2xvd1BhdGhSZXR1cm5U
eXBlLCAoVk0qIHZtUG9pbnRlciwKICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51
bGxwdHIpOwogfQogCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50
ZXJBdENhdGNoLCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXhC
aXRzKSkKK0pTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0
Y2hBbmRWYWx1ZVByb2ZpbGUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKFZNKiB2bVBvaW50ZXIsIHVp
bnQzMl90IGJ5dGVjb2RlSW5kZXhCaXRzKSkKIHsKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKQEAgLTIw
NjYsMzcgKzIwNjYsMTMgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9T
UkVudGVyQXRDYXRjaCwgY2hhciosIChWTSogdm1Qb2ludGVyLCB1aW4KICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CiAgICAgQ29kZUJsb2NrKiBvcHRp
bWl6ZWRSZXBsYWNlbWVudCA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKICAgICBpZiAoVU5M
SUtFTFkoIW9wdGltaXplZFJlcGxhY2VtZW50KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBzd2l0Y2ggKG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkpIHsKLSAgICBjYXNl
IEpJVFR5cGU6OkRGR0pJVDoKLSAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDogewotICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZW50cnkgPSBERkc6
OnByZXBhcmVDYXRjaE9TUkVudHJ5KHZtLCBjYWxsRnJhbWUsIGNvZGVCbG9jaywgb3B0aW1pemVk
UmVwbGFjZW1lbnQsIGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICByZXR1cm4gZW50cnkuZXhlY3V0
YWJsZUFkZHJlc3M8Y2hhcio+KCk7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChW
TSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlY29kZUluZGV4Qml0cykpCi17Ci0gICAgVk0mIHZt
ID0gKnZtUG9pbnRlcjsKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9G
UkFNRSh2bSk7Ci0gICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwotICAgIEJ5dGVjb2RlSW5kZXggYnl0ZWNvZGVJbmRleCA9IEJ5dGVj
b2RlSW5kZXg6OmZyb21CaXRzKGJ5dGVjb2RlSW5kZXhCaXRzKTsKLQotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZFJlcGxhY2VtZW50ID0gY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpOwotICAgIGlmIChVTkxJ
S0VMWSghb3B0aW1pemVkUmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKIAogICAgIHN3aXRj
aCAob3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSkgewogICAgIGNhc2UgSklUVHlwZTo6
REZHSklUOgogICAgIGNhc2UgSklUVHlwZTo6RlRMSklUOiB7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBlbnRyeSA9IERGRzo6cHJlcGFyZUNh
dGNoT1NSRW50cnkodm0sIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBvcHRpbWl6ZWRSZXBsYWNlbWVu
dCwgYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIHJldHVybiBlbnRyeS5leGVjdXRhYmxlQWRkcmVz
czxjaGFyKj4oKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChlbnRyeS5leGVjdXRhYmxl
QWRkcmVzczxjaGFyKj4oKSwgb3B0aW1pemVkUmVwbGFjZW1lbnQpOwogICAgIH0KICAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKQEAgLTIxMDksNyArMjA4NSw3IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUsIGNo
YXIqLCAoVk0qCiAgICAgICAgIHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGxGcmFtZS0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKICAg
ICB9KTsKIAotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVs
bHB0ciwgbnVsbHB0cik7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuaAppbmRleCAyYTU5ZjY0ZTg4NWFkNWEyNWUxODY3MmY5NmMzZGQ1YmI4NjVi
ZDBmLi5jNWNlNThkZWZmOThlZWI2YWZhY2M0NmNkYjFlODM2ODE3NjRlZTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjU5LDggKzI1OSw3IEBAIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3csIHZvaWQsIChKU0dsb2JhbE9i
amVjdCosIEVuY29kZWRKU1ZhbHVlCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bkRlYnVnLCB2b2lkLCAoVk0qLCBpbnQzMl90KSk7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5
cGUsIChWTSosIHVpbnQzMl90KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blRyeU9TUkVudGVyQXRDYXRjaCwgY2hhciosIChWTSosIHVpbnQzMl90KSk7Ci1KU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmls
ZSwgY2hhciosIChWTSosIHVpbnQzMl90KSk7CitKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgU2xvd1BhdGhSZXR1cm5U
eXBlLCAoVk0qLCB1aW50MzJfdCkpOwogI2VuZGlmCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvblB1dEdldHRlckJ5SWQsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCos
IFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSk7CiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFNldHRlckJ5SWQsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBK
U0NlbGwqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBsYW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQbGFuLmNwcAppbmRleCA5NmZjYjIz
MTBiYmQ5ZmRkZmE4ODE0MmRjNDQ0OTk4OTlkMWNmYWU0Li5mMDQ4ODMzOTc4N2E0NzBmOTg3OGQy
ZTRhMDViNzJkMjA1N2Y2MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUGxhbi5jcHAK
QEAgLTc3LDYgKzc3LDcgQEAgYXV0byBKSVRQbGFuOjp0aWVyKCkgY29uc3QgLT4gVGllcgogICAg
IGNhc2UgSklUQ29tcGlsYXRpb25Nb2RlOjpCYXNlbGluZToKICAgICAgICAgcmV0dXJuIFRpZXI6
OkJhc2VsaW5lOwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2RlOjpERkc6CisgICAgY2FzZSBK
SVRDb21waWxhdGlvbk1vZGU6OlVubGlua2VkREZHOgogICAgICAgICByZXR1cm4gVGllcjo6REZH
OwogICAgIGNhc2UgSklUQ29tcGlsYXRpb25Nb2RlOjpGVEw6CiAgICAgY2FzZSBKSVRDb21waWxh
dGlvbk1vZGU6OkZUTEZvck9TUkVudHJ5OgpAQCAtMTQ1LDcgKzE0Niw3IEBAIGJvb2wgSklUUGxh
bjo6cmVwb3J0Q29tcGlsZVRpbWVzKCkgY29uc3QKIHsKICAgICByZXR1cm4gT3B0aW9uczo6cmVw
b3J0Q29tcGlsZVRpbWVzKCkKICAgICAgICAgfHwgKE9wdGlvbnM6OnJlcG9ydEJhc2VsaW5lQ29t
cGlsZVRpbWVzKCkgJiYgbV9tb2RlID09IEpJVENvbXBpbGF0aW9uTW9kZTo6QmFzZWxpbmUpCi0g
ICAgICAgIHx8IChPcHRpb25zOjpyZXBvcnRERkdDb21waWxlVGltZXMoKSAmJiBtX21vZGUgPT0g
SklUQ29tcGlsYXRpb25Nb2RlOjpERkcpCisgICAgICAgIHx8IChPcHRpb25zOjpyZXBvcnRERkdD
b21waWxlVGltZXMoKSAmJiBpc0RGRygpKQogICAgICAgICB8fCAoT3B0aW9uczo6cmVwb3J0RlRM
Q29tcGlsZVRpbWVzKCkgJiYgaXNGVEwoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
bGFuLmgKaW5kZXggOWE4ZGY0YTc0OTYwYjlkZDA4N2JmMzdiNTMxYjAyNGZhMWExM2I0NS4uZTJi
MDRmN2EyZWY5ZTc2ZWY1OTNlOGJkMTk0Y2ZjYjcwNDFjNjEyOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQbGFuLmgKQEAgLTU2LDcgKzU2LDkgQEAgY2xhc3MgSklUUGxhbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxKSVRQbGFuPiB7CiAgICAgSklUQ29tcGlsYXRpb25Nb2RlIG1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX21vZGU7IH0KIAogICAgIEpJVFBsYW5TdGFnZSBzdGFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhZ2U7IH0KKyAgICBib29sIGlzREZHKCkgY29uc3QgeyByZXR1
cm4gOjpKU0M6OmlzREZHKG1fbW9kZSk7IH0KICAgICBib29sIGlzRlRMKCkgY29uc3QgeyByZXR1
cm4gOjpKU0M6OmlzRlRMKG1fbW9kZSk7IH0KKyAgICBib29sIGlzVW5saW5rZWQoKSBjb25zdCB7
IHJldHVybiA6OkpTQzo6aXNVbmxpbmtlZChtX21vZGUpOyB9CiAKICAgICBlbnVtIGNsYXNzIFRp
ZXIgeyBCYXNlbGluZSA9IDAsIERGRyA9IDEsIEZUTCA9IDIsIENvdW50ID0gMyB9OwogICAgIFRp
ZXIgdGllcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNw
cAppbmRleCAzOGM2Nzk0OWZkZGYwNzNhODhmYTU1ODI5NzJjOTI1YzE2MWNkZWQ0Li4xYzMxMjc1
NGQwYzM5YTIxYWI2MDBkNzZlYTVjOTVkNTllY2RjNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcApAQCAtMjAwLDE2ICsyMDAsMTggQEAgUmVnaXN0ZXJTZXQg
UmVnaXN0ZXJTZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICNlbGlmIENQ
VShYODZfNjQpCiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzEpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MyID09IEdQUkluZm86OmNvbnN0
YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdD
UzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpy
ZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAj
ZWxzZQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIp
OworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENlbGxN
YXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwg
IiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIsICIiKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwogI2VuZGlmCkBAIC0yMTgsOSArMjIwLDEw
IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lz
dGVycygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwogI2VsaWYgQ1BVKEFSTTY0
KSB8fCBDUFUoUklTQ1Y2NCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzcgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0
ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
Nyk7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbHNlCkBAIC0y
MzYsMTcgKzIzOSwyMCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJl
Z2lzdGVycygpCiAjZWxpZiBDUFUoWDg2XzY0KQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MwKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzIpOwogI2lmICFPUyhXSU5ET1dTKQotICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
ciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MyID09IEdQUkluZm86OmNv
bnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpy
ZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CisgICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0g
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZv
Ojpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzUpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRpZgpAQCAtMjU0LDgg
KzI2MCwxMCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVy
cygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwogICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MxKTsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIs
ICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzcg
PT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5m
bzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbHNlCkBAIC0yNzIs
OCArMjgwLDggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3Rl
cnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
LCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1Mz
ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwog
I2VsaWYgQ1BVKEFSTTY0KQpAQCAtMjg2LDggKzI5NCw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVy
U2V0OjpmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNSk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M3KTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5m
bzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7
CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1Mw
KTsKQEAgLTMwNyw4ICszMTUsOCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
Nyk7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19h
c3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTOSk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEwKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjMDMzM2QzNDJiMDliMDMwNDAxMGY0NDYy
ODQzZmMwODk0ODI5ZWU0Li4xNTExNWVlMDdkMjRmMTRiZWU2ZGJhZmU2MjI2MmM2ODAyNDUwMjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0zOTUsMTMgKzM5
NSwxMyBAQCBzdHJ1Y3QgUmVnaXN0ZXJzIHsKIAogI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5E
T1dTKQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJ
bmZvOjpyZWdDUzE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZv
OjpyZWdDUzI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpj
b25zdGFudHNSZWdpc3RlcjsKICNlbGlmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJlZ0NT
MzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NTNDsK
KyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OmNvbnN0YW50c1Jl
Z2lzdGVyOwogI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1M2OwotICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1M3OworICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXI7CiAj
ZWxpZiBDUFUoTUlQUykgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgbWV0YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJlZ0NTMDsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NTMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBhOGU3Yzcz
OTlkNTgxYTU5NjBkMGFhN2FhNzI0MzM1ZGIwMzU0Yzc1Li4xM2IxNzhjZmNkNzM2YjA4ZjY0Yzkx
ODI0ZDAyYTAyN2EwMzkwY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNjI1LDcgKzI2MjUsNyBAQCBpZiBKSVQK
ICAgICBtYWNybyBsb2FkQmFzZWxpbmVKSVRDb25zdGFudFBvb2woKQogICAgICAgICAjIEJhc2Vs
aW5lIHVzZXMgTExJbnQncyBQQiByZWdpc3RlciBmb3IgaXRzIEpJVCBjb25zdGFudCBwb29sLgog
ICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKLSAgICAgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2Jhc2VsaW5lSklURGF0YVtQQl0sIFBCCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9q
aXREYXRhW1BCXSwgUEIKICAgICBlbmQKIAogICAgIG1hY3JvIHNldHVwUmV0dXJuVG9CYXNlbGlu
ZUFmdGVyQ2hlY2twb2ludEV4aXRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNwcAppbmRleCAz
ZmJlMjUxOTI1YWRiMzgzYjc4YmU1YTFlZDFlMmNlNDViYjg4MzM5Li4xZjI2N2M5MjYzY2M2OGJi
NGQyM2EwMmE3ZmJiNzExZmMxZTRhYjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAKQEAgLTQyLDYg
KzQyLDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6UHJvZmls
ZXI6OkNvbXBpbGF0aW9uS2luZCBraW5kKQogICAgIGNhc2UgSlNDOjpQcm9maWxlcjo6REZHOgog
ICAgICAgICBvdXQucHJpbnQoIkRGRyIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6
OlByb2ZpbGVyOjpVbmxpbmtlZERGRzoKKyAgICAgICAgb3V0LnByaW50KCJVbmxpbmtlZERGRyIp
OworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBKU0M6OlByb2ZpbGVyOjpGVEw6CiAgICAgICAg
IG91dC5wcmludCgiRlRMIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uS2luZC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgKaW5kZXgg
YWFlZmQ0YjQ2ZmE4MzY4NDY3NzZhNzZmMmNiMmMyMzRkNzhjNDNkZi4uMjEwNGFiMDVjZjI2M2Yx
MmVkOWM3Y2Y5ZTEyNjliY2RkOTg2OTQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmgKQEAgLTMxLDggKzMx
LDkgQEAgZW51bSBDb21waWxhdGlvbktpbmQgewogICAgIExMSW50LAogICAgIEJhc2VsaW5lLAog
ICAgIERGRywKKyAgICBVbmxpbmtlZERGRywKICAgICBGVEwsCi0gICAgRlRMRm9yT1NSRW50cnkK
KyAgICBGVExGb3JPU1JFbnRyeSwKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggYjQ2
OTNmOTFjNjA3ZDhkMDc0NTk0NjQ2ZThkYzQzNzJlOWJjOTllNi4uN2I5Y2EyODEyMTA4YjEwY2M3
ODU2M2E1NWI4MTdhMGEyOTRlZjgzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5oCkBAIC04OCw2ICs4OCw3IEBAIGNsYXNzIEFycmF5QnVmZmVyQ29udGVu
dHMgewogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiAhIW1fZGF0YTsgfQog
ICAgIAogICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0TWF5QmVOdWxs
KHNpemVJbkJ5dGVzKCkpOyB9CisgICAgdm9pZCogZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmdldFVuc2FmZSgpOyB9CiAgICAgc2l6ZV90IHNpemVJbkJ5
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9zaXplSW5CeXRlczsgfQogICAgIAogICAgIGJvb2wgaXNT
aGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZDsgfQpAQCAtMTM2LDYgKzEzNyw5IEBAIGNs
YXNzIEFycmF5QnVmZmVyIDogcHVibGljIEdDSW5jb21pbmdSZWZDb3VudGVkPEFycmF5QnVmZmVy
PiB7CiAgICAgaW5saW5lIHZvaWQqIGRhdGEoKTsKICAgICBpbmxpbmUgY29uc3Qgdm9pZCogZGF0
YSgpIGNvbnN0OwogICAgIGlubGluZSBzaXplX3QgYnl0ZUxlbmd0aCgpIGNvbnN0OworCisgICAg
aW5saW5lIHZvaWQqIGRhdGFXaXRob3V0UEFDVmFsaWRhdGlvbigpOworICAgIGlubGluZSBjb25z
dCB2b2lkKiBkYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKSBjb25zdDsKICAgICAKICAgICB2b2lk
IG1ha2VTaGFyZWQoKTsKICAgICB2b2lkIHNldFNoYXJpbmdNb2RlKEFycmF5QnVmZmVyU2hhcmlu
Z01vZGUpOwpAQCAtMjAxLDYgKzIwNSwxNiBAQCBjb25zdCB2b2lkKiBBcnJheUJ1ZmZlcjo6ZGF0
YSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGVudHMuZGF0YSgpOwogfQogCit2b2lkKiBBcnJh
eUJ1ZmZlcjo6ZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9jb250
ZW50cy5kYXRhV2l0aG91dFBBQ1ZhbGlkYXRpb24oKTsKK30KKworY29uc3Qgdm9pZCogQXJyYXlC
dWZmZXI6OmRhdGFXaXRob3V0UEFDVmFsaWRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
Y29udGVudHMuZGF0YVdpdGhvdXRQQUNWYWxpZGF0aW9uKCk7Cit9CisKIHNpemVfdCBBcnJheUJ1
ZmZlcjo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29udGVudHMuc2l6ZUlu
Qnl0ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKaW5kZXggZDg1YjMyODMwNzYyYTkwODIwMWNiOWM0NWM5
MjkxNjlhMWMxNTU2NS4uZmUzZjVjYzNhNWNkMTNlMTU4OTdjN2E5YjJlZjUxYjZhMjM4Nzg3YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXdJbmxpbmVzLmgKQEAgLTk3LDcgKzk3LDcgQEAgaW5saW5lIFJlc3VsdFR5cGUgSlNB
cnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXRJbXBsKCkKICAgICB9CiAKICAgICBwdHJkaWZmX3Qg
ZGVsdGEgPQotICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3RvcldpdGhvdXRQQUNW
YWxpZGF0aW9uKCkpIC0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKTsKKyAg
ICAgICAgYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih2ZWN0b3JXaXRob3V0UEFDVmFsaWRhdGlvbigp
KSAtIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXItPmRhdGFXaXRob3V0UEFDVmFsaWRhdGlv
bigpKTsKIAogICAgIHNpemVfdCByZXN1bHQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGRlbHRhKTsK
ICAgICBpZiAocmVxdWVzdGVyID09IE11dGF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkOWRhMWU0NjZiOWM5ODdkNzYzMTBhMmE2
NzM5ODM3NTY3MTRkMzExLi5mNDcwMGQ2NmVhMDhkNzZlNDYwZGEzNGY1ZTdlZjU1NTU5YmFhMGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
QEAgLTkyMSw2ICs5MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBHbG9iYWxEYXRhJiByZWdFeHBHbG9iYWxE
YXRhKCkgeyByZXR1cm4gbV9yZWdFeHBHbG9iYWxEYXRhOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCByZWdFeHBHbG9iYWxEYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xv
YmFsT2JqZWN0LCBtX3JlZ0V4cEdsb2JhbERhdGEpOyB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90
IG9mZnNldE9mR2xvYmFsVGhpcygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9i
amVjdCwgbV9nbG9iYWxUaGlzKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV92bSk7IH0KICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2dsb2JhbExleGljYWxFbnZpcm9u
bWVudCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9i
YWxMZXhpY2FsQmluZGluZ0Vwb2NoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454802</attachid>
            <date>2022-03-15 22:56:35 -0700</date>
            <delta_ts>2022-03-17 16:51:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220315225634.patch</filename>
            <type>text/plain</type>
            <size>235422</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MjkwNjkzZjA2YzUzMGI1MzlmODg4YzE3OGZjZTA0ZjQ0OTY5NzY0Li4wYzdiODI1M2RmYWE0ZThm
NDZjY2Y4MDQ5ZTc4NzY4ZjBlNjRlNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjAgQEAKKzIwMjItMDMtMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6dHJhbnNmZXJQdHIpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6dHJhbnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0
cmFuc2ZlclB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
SklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01h
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldERGR0pJ
VERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudCk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om1hdGVyaWFsaXplKToK
KyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6cG9rZSk6
CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklU
Q29tcGlsZXI6OmJyYW5jaFdlYWtQdHIpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRG
aW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUp
OgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjph
ZGRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpmaW5hbGl6ZUpJ
VERhdGEpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmg6CisgICAgICAgICogZGZnL0RGR1NhbmVT
dHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdl
dENhbGxlZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNQcml2YXRlKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nU2xpY2UpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Mb3dlckNhc2UpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHJhcHMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJp
bmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJD
b2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZy
YW1lUm9sbGJhY2tPbkV4Y2VwdGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhU
aGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVw
aG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJp
Y0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ29tcGFyZUVxUHRyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUmVnRXhwVGVzdElubGluZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRDb2RlQmxvY2tU
b0ZyYW1lSW5Qcm9sb2d1ZSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAg
ICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpw
b2tlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1l
bnRzSW1wbCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6R1BSSW5m
bzo6dG9SZWdpc3Rlcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0ZXJp
YWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkpJ
VDo6Y29tcGlsZUFuZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0L0pJVC5o
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2NhdGNoKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdp
c3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlND
OjpSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJl
Z2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBsbGludC9MTElu
dERhdGEuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpvZmZzZXRPZkdsb2JhbFRoaXMpOgorCiAyMDIyLTAzLTE1ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIFVubGlua2VkREZHIGNvbXBp
bGF0aW9uIG1vZGUgZW51bQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCA2MzM3NzNhZWVjOWQxYzk2N2ZhOThhNWFj
YjJhMTI0NTJlYjI1MDdjLi5jOGQ3ZTdkZGRhMzY0MmM0MGVlNGY1NDU4Yjk4ZmJlZDkwNzlkMjc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtMTk2MCw2ICsxOTYwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAg
ICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lk
IHRyYW5zZmVyNjQoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxv
YWQ2NChzcmMsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgIHN0b3JlNjQoZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQor
CiAgICAgRGF0YUxhYmVsMzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGxhYmVs
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclJJU0NWNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJSSVNDVjY0LmgKaW5kZXggMzY0Njg2ZGZmNjg5OTRkZWFhMDRlOTU2NjM2YWQ2
MmYwMmVjMTE1NS4uYjNiZjZlYmY5NzAyMTUzNjgyOGQyOGQwMWFkNDgwYzM1OGNiOWYyMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJ
U0NWNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyUklTQ1Y2NC5oCkBAIC0xMTcxLDYgKzExNzEsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJS
SVNDVjY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnNkSW5zbih0ZW1wLm1lbW9yeSgpLCBpbW1SZWdpc3RlciwgSW1tOjpT
PDA+KCkpOwogICAgIH0KIAorICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YT4oKTsKKyAgICAg
ICAgbG9hZDY0KHNyYywgdGVtcC5kYXRhKCkpOworICAgICAgICBzdG9yZTY0KHRlbXAuZGF0YSgp
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQor
CiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwg
ZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRleCBiMmU5MTFhYTEzNjYzYTI1
MDk4NDBhMDU2ODg0MTJmMjkyOGVmNDYzLi4xYmVjOWU4NTViZmNhODFiMDkxNDQ4YWRhY2Q1MmY4
ZmYxZTU3NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCkBAIC0xMDI2LDYgKzEwMjYsMTcgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAg
ICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZxX3JtKHNjcmF0Y2hSZWdpc3RlcigpLCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNlLCBh
ZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVy
NjQoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMs
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgc3RvcmU2NChzY3JhdGNoUmVnaXN0ZXIoKSwg
ZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB0cmFuc2ZlclB0cihBZGRyZXNzIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgdHJhbnNmZXI2NChzcmMsIGRlc3QpOworICAgIH0KICAg
ICAKICAgICBEYXRhTGFiZWwzMiBzdG9yZTY0V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3Rl
cklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMDk4YWVkOTM1YTY4ZjdkNjY4N2JkMzUyMzI1
MzA3N2YzMWVkMTlmMi4uMjU5NmY4MzQ5MDZiM2Q4MWRjM2M3MzQzN2ViMTIxMzZkMDJlZDFhYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTc4
Nyw5ICs3ODcsOSBAQCB2b2lkIENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNv
ZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4gaml0Q29kZSkKIAogICAgIHsKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICBBU1NFUlQoIW1fYmFzZWxpbmVK
SVREYXRhKTsKLSAgICAgICAgbV9iYXNlbGluZUpJVERhdGEgPSBCYXNlbGluZUpJVERhdGE6OmNy
ZWF0ZShqaXRDb2RlLT5tX2NvbnN0YW50UG9vbC5zaXplKCkpOwotICAgICAgICBtX2Jhc2VsaW5l
SklURGF0YS0+bV9zdHViSW5mb3MgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0
Q29kZS0+bV91bmxpbmtlZFN0dWJJbmZvcy5zaXplKCkpOworICAgICAgICBBU1NFUlQoIW1faml0
RGF0YSk7CisgICAgICAgIGF1dG8gYmFzZWxpbmVKSVREYXRhID0gQmFzZWxpbmVKSVREYXRhOjpj
cmVhdGUoaml0Q29kZS0+bV9jb25zdGFudFBvb2wuc2l6ZSgpKTsKKyAgICAgICAgYmFzZWxpbmVK
SVREYXRhLT5tX3N0dWJJbmZvcyA9IEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPihqaXRD
b2RlLT5tX3VubGlua2VkU3R1YkluZm9zLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYgdW5s
aW5rZWRDYWxsTGlua0luZm8gOiBqaXRDb2RlLT5tX3VubGlua2VkQ2FsbHMpIHsKICAgICAgICAg
ICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gZ2V0Q2FsbExpbmtJbmZvRm9yQnl0ZWNv
ZGVJbmRleChsb2NrZXIsIHVubGlua2VkQ2FsbExpbmtJbmZvLmJ5dGVjb2RlSW5kZXgpOwogICAg
ICAgICAgICAgQVNTRVJUKGNhbGxMaW5rSW5mbyk7CkBAIC04MDAsMjggKzgwMCwyOSBAQCB2b2lk
IENvZGVCbG9jazo6c2V0dXBXaXRoVW5saW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklU
Q29kZT4gaml0Q29kZSkKICAgICAgICAgICAgIGF1dG8gZW50cnkgPSBqaXRDb2RlLT5tX2NvbnN0
YW50UG9vbC5hdChpKTsKICAgICAgICAgICAgIHN3aXRjaCAoZW50cnkudHlwZSgpKSB7CiAgICAg
ICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6R2xvYmFsT2JqZWN0OgotICAgICAg
ICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgp
OworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBtX2dsb2JhbE9iamVj
dC5nZXQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgSklUQ29u
c3RhbnRQb29sOjpUeXBlOjpTdHJ1Y3R1cmVTdHViSW5mbzogewogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsK
ICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvJiB1bmxpbmtlZFN0dWJJ
bmZvID0gaml0Q29kZS0+bV91bmxpbmtlZFN0dWJJbmZvc1tpbmRleF07Ci0gICAgICAgICAgICAg
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gbV9iYXNlbGluZUpJVERhdGEtPm1fc3R1
YkluZm9zW2luZGV4XTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1Yklu
Zm8gPSBiYXNlbGluZUpJVERhdGEtPm1fc3R1YkluZm9zW2luZGV4XTsKICAgICAgICAgICAgICAg
ICBzdHViSW5mby5pbml0aWFsaXplRnJvbVVubGlua2VkU3RydWN0dXJlU3R1YkluZm8odGhpcywg
dW5saW5rZWRTdHViSW5mbyk7Ci0gICAgICAgICAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPmF0
KGkpID0gJnN0dWJJbmZvOworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkg
PSAmc3R1YkluZm87CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6RnVuY3Rpb25EZWNsOiB7CiAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRy
eS5wb2ludGVyKCkpOwotICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9
IGZ1bmN0aW9uRGVjbChpbmRleCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5h
dChpKSA9IGZ1bmN0aW9uRGVjbChpbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6RnVuY3Rp
b25FeHByOiB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihlbnRyeS5wb2ludGVyKCkpOwotICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVK
SVREYXRhLT5hdChpKSA9IGZ1bmN0aW9uRXhwcihpbmRleCk7CisgICAgICAgICAgICAgICAgYmFz
ZWxpbmVKSVREYXRhLT5hdChpKSA9IGZ1bmN0aW9uRXhwcihpbmRleCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAg
ICAgbV9qaXREYXRhID0gYmFzZWxpbmVKSVREYXRhLnJlbGVhc2UoKTsKICAgICB9CiAKICAgICBz
d2l0Y2ggKGNvZGVUeXBlKCkpIHsKQEAgLTkwNiwyMCArOTA3LDI0IEBAIENvZGVCbG9jazo6fkNv
ZGVCbG9jaygpCiAgICAgLy8gZGVzdHJ1Y3RvcnMuCiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBz
dHViSW5mby5hYm91dFRvRGllKCk7Ci0gICAgICAgICAgICBzdHViSW5mby5kZXJlZigpOwotICAg
ICAgICB9Ci0gICAgfQotI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBm
b3IgKGF1dG8qIHN0dWJJbmZvIDogaml0Q29kZSgpLT5kZmdDb21tb24oKS0+bV9zdHViSW5mb3Mp
IHsKICAgICAgICAgICAgIHN0dWJJbmZvLT5hYm91dFRvRGllKCk7CiAgICAgICAgICAgICBzdHVi
SW5mby0+ZGVyZWYoKTsKICAgICAgICAgfQotICAgIH0KKyAgICAgICAgaWYgKG1faml0RGF0YSkK
KyAgICAgICAgICAgIGRlbGV0ZSBiaXR3aXNlX2Nhc3Q8REZHOjpERkdKSVREYXRhKj4obV9qaXRE
YXRhKTsKICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0g
YmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBq
aXREYXRhLT5tX3N0dWJJbmZvcykgeworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmFib3V0VG9E
aWUoKTsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5kZXJlZigpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZGVsZXRlIGppdERhdGE7CisgICAgICAgIH0KKyAgICB9CiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIH0KIApAQCAtMTI0OCwxOCArMTI1MywxNyBAQCB2b2lkIENvZGVCbG9jazo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgVmlzaXRvciYg
dmlzaXRvcgogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKEpJVENvZGU6OmlzSklU
KGppdFR5cGUoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklU
RGF0YS5nZXQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEt
Pm1fc3R1YkluZm9zKQotICAgICAgICAgICAgICAgIHN0dWJJbmZvLnByb3BhZ2F0ZVRyYW5zaXRp
b25zKHZpc2l0b3IpOwotICAgICAgICB9Ci0gICAgfQotI2lmIEVOQUJMRShERkdfSklUKQogICAg
IGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShE
RkdfSklUKQogICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogaml0Q29kZSgpLT5kZmdDb21t
b24oKS0+bV9zdHViSW5mb3MpCiAgICAgICAgICAgICBzdHViSW5mby0+cHJvcGFnYXRlVHJhbnNp
dGlvbnModmlzaXRvcik7Ci0gICAgfQogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYg
KGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgZm9yIChh
dXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQorICAgICAgICAgICAgICAgIHN0
dWJJbmZvLnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOworICAgICAgICB9CisgICAgfQog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xNTg1
LDE1ICsxNTg5LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMo
KQogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVKSVRJbmxpbmVDYWNo
ZXMoKQogewotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkp
IHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7
Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNl
c3NhcnkpOwotICAgICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcyhsb2NrZXIs
IHRoaXMpOwotICAgICAgICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYg
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdD
b21tb24oKTsKICAgICAgICAgZm9yIChhdXRvKiBjYWxsTGlua0luZm8gOiBkZmdDb21tb24tPm1f
Y2FsbExpbmtJbmZvcykKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+dmlzaXRXZWFrKHZtKCkp
OwpAQCAtMTYwMSw4ICsxNTk4LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUpJVElubGlu
ZUNhY2hlcygpCiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xv
Y2tpbmdOZWNlc3NhcnkpOwogICAgICAgICAgICAgc3R1YkluZm8tPnZpc2l0V2Vha1JlZmVyZW5j
ZXMobG9ja2VyLCB0aGlzKTsKICAgICAgICAgfQotICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgeworICAg
ICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlckJhc2UgbG9ja2VyKE5vTG9ja2luZ05lY2Vz
c2FyeSk7CisgICAgICAgICAgICAgICAgc3R1YkluZm8udmlzaXRXZWFrUmVmZXJlbmNlcyhsb2Nr
ZXIsIHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogfQogI2VuZGlmCiAK
QEAgLTE2ODksMTIgKzE2OTMsOCBAQCB2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCkKICAgICB9CiAjaWYg
RU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAg
ICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVy
YXRvci0+dmFsdWUuc3R1YkluZm8gPSAmc3R1YkluZm87Ci0gICAgICAgIH0KLSNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkp
KSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRm
Z0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8q
IHN0dWJJbmZvIDogZGZnQ29tbW9uLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgICAgICByZXN1
bHQuYWRkKHN0dWJJbmZvLT5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
c3R1YkluZm8gPSBzdHViSW5mbzsKQEAgLTE3MTAsOCArMTcxMCwxMyBAQCB2b2lkIENvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAm
IHJlc3VsdCkKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVz
KCkpLml0ZXJhdG9yLT52YWx1ZS5pblN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwogICAgICAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmRlbGV0
ZXMpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5p
dGVyYXRvci0+dmFsdWUuZGVsZXRlU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7Ci0gICAgICAg
IH0KICNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGF1dG8qIGppdERh
dGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0
LmFkZChzdHViSW5mby5jb2RlT3JpZ2luLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuc3R1
YkluZm8gPSAmc3R1YkluZm87CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwpAQCAtMTcyOCwyMSArMTczMywyMSBAQCB2b2lk
IENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIFN0cnVjdHVy
ZVN0dWJJbmZvKiBDb2RlQmxvY2s6OmZpbmRTdHViSW5mbyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
CiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChhdXRv
KiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRv
JiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICBpZiAoc3R1
YkluZm8uY29kZU9yaWdpbiA9PSBjb2RlT3JpZ2luKQotICAgICAgICAgICAgICAgIHJldHVybiAm
c3R1YkluZm87Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBp
ZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUoKS0+ZGZnQ29tbW9u
KCktPm1fc3R1YkluZm9zKSB7CiAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvZGVPcmlnaW4g
PT0gY29kZU9yaWdpbikKICAgICAgICAgICAgICAgICByZXR1cm4gc3R1YkluZm87CiAgICAgICAg
IH0KLSAgICB9CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0
YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZv
IDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8u
Y29kZU9yaWdpbiA9PSBjb2RlT3JpZ2luKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJnN0
dWJJbmZvOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBudWxs
cHRyOwogfQogCkBAIC0xNzgxLDcgKzE3ODYsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRCYXNl
bGluZUpJVERhdGEoKQogICAgIFJFTEVBU0VfQVNTRVJUKCFKSVRDb2RlOjppc0pJVChqaXRUeXBl
KCkpKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgCi0gICAg
aWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgeworICAgIGlmIChh
dXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKICAgICAgICAgLy8gV2UgY2FuIGNs
ZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRv
IGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgICAgIC8vIGxpbmsgaW5mb3MsIG9yIGJ5IHZhbCBp
bmZvcyBpZiB3ZSBkb24ndCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVyeSB0aGVzZSBk
YXRhCiAgICAgICAgIC8vIHN0cnVjdHVyZXMgdXNpbmcgdGhlIGNvbmN1cnJlbnQgQVBJIChnZXRJ
Q1N0YXR1c01hcCBhbmQgZnJpZW5kcykgd2lsbCByZXR1cm4gbm90aGluZyBpZiB3ZQpAQCAtMTgw
Miw3ICsxODA3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKICAg
ICAgICAgLy8gV2UgY2FuIGNsZWFyIHRoaXMgYmVjYXVzZSB0aGUgREZHJ3MgcXVlcmllcyB0byB0
aGVzZSBkYXRhIHN0cnVjdHVyZXMgYXJlIGd1YXJkZWQgYnkgd2hldGhlcgogICAgICAgICAvLyB0
aGVyZSBpcyBKSVQgY29kZS4KIAotICAgICAgICBtX2Jhc2VsaW5lSklURGF0YSA9IG51bGxwdHI7
CisgICAgICAgIG1faml0RGF0YSA9IG51bGxwdHI7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xODQ4
LDE5ICsxODUzLDE5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJl
bmNlcyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tlciwKICAgICB9KTsKIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQo
KSkgewotICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3Mp
Ci0gICAgICAgICAgICBzdHViSW5mby52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKLSAgICB9Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBERkc6OkNv
bW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgIGZv
ciAoYXV0byogc3R1YkluZm8gOiBkZmdDb21tb24tPm1fc3R1YkluZm9zKQogICAgICAgICAgICAg
c3R1YkluZm8tPnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAgICBkZmdDb21tb24tPnJl
Y29yZGVkU3RhdHVzZXMudmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgICAgIHZpc2l0T1NS
RXhpdFRhcmdldHMobG9ja2VyLCB2aXNpdG9yKTsKKyNlbmRpZgorICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAg
IGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKKyAgICAgICAgfQogICAgIH0K
ICNlbmRpZgogfQpAQCAtMzQ3NywyMSArMzQ4MiwyMiBAQCBzdGQ6Om9wdGlvbmFsPENvZGVPcmln
aW4+IENvZGVCbG9jazo6ZmluZFBDKHZvaWQqIHBjKQogCiAgICAgewogICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0g
bV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc3R1Yklu
Zm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgICAgIGlmIChzdHViSW5m
by5jb250YWluc1BDKHBjKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJbmZvLmNv
ZGVPcmlnaW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9
IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZv
IDogZGZnQ29tbW9uLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAgICAgIGlmIChzdHViSW5m
by0+Y29udGFpbnNQQyhwYykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHViSW5mby0+
Y29kZU9yaWdpbjsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQogI2VuZGlmCisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgp
KSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1
YkluZm9zKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jb250YWluc1BDKHBj
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHViSW5mby5jb2RlT3JpZ2luOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAg
IHJldHVybiBtX2ppdENvZGUtPmZpbmRQQyh0aGlzLCBwYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggNDY5NjNkNzNkZTIzZTAxZmQxNTI1NDUxYTgz
NDdiNmM3NzVjMTgyNi4uNDU3OWFlZDc0MDA4ODhlOTBhYjgxMjYzYWZkZmE1YzA1MGM0MGEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNzksNiAr
NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogI2lmIEVOQUJMRShERkdfSklUKQogbmFtZXNwYWNl
IERGRyB7CitjbGFzcyBERkdKSVREYXRhOwogc3RydWN0IE9TUkV4aXRTdGF0ZTsKIH0gLy8gbmFt
ZXNwYWNlIERGRwogI2VuZGlmCkBAIC0yNDcsNyArMjQ4LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAKICAgICBzdGQ6Om9wdGlvbmFsPEJ5dGVjb2RlSW5kZXg+IGJ5dGVj
b2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4KTsKIAotICAgIC8vIEJlY2F1
c2Ugd2UgbWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2Vs
aW5lIEpJVCBkYXRhIChtX2Jhc2VsaW5lSklURGF0YSksCisgICAgLy8gQmVjYXVzZSB3ZSBtaWdo
dCB0aHJvdyBvdXQgYmFzZWxpbmUgSklUIGNvZGUgYW5kIGFsbCBpdHMgYmFzZWxpbmUgSklUIGRh
dGEgKG1faml0RGF0YSksCiAgICAgLy8geW91IG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCB0aGUg
bGlmZXRpbWUgb2Ygd2hlbiB5b3UgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcyBmdW5jdGlv
bi4KICAgICAvLyBUaGUgcmV0dXJuIHZhbHVlIG1heSBoYXZlIHJhdyBwb2ludGVycyBpbnRvIHRo
aXMgZGF0YSBzdHJ1Y3R1cmUgdGhhdCBnZXRzIHRocm93biBhd2F5LgogICAgIC8vIFNwZWNpZmlj
YWxseSwgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgbm8gR0MgY2FuIGJlIGZpbmFsaXplZCAodHlw
aWNhbGx5IHRoYXQgbWVhbnMgbm8KQEAgLTI1OCw3ICsyNTksNyBAQCBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICNpZiBFTkFCTEUoSklUKQogICAgIHZvaWQgc2V0dXBXaXRoVW5s
aW5rZWRCYXNlbGluZUNvZGUoUmVmPEJhc2VsaW5lSklUQ29kZT4pOwogCi0gICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihDb2RlQmxvY2ssIG1fYmFzZWxpbmVKSVREYXRhKTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qg
b2Zmc2V0T2ZKSVREYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9q
aXREYXRhKTsgfQogCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIGFkZE9wdGltaXppbmdTdHViSW5m
byhBY2Nlc3NUeXBlLCBDb2RlT3JpZ2luKTsKIApAQCAtNTM0LDkgKzUzNSwyNSBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGJhc2VsaW5l
U3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KTsKICAgICBCYXNlbGluZUpJVERh
dGEqIGJhc2VsaW5lSklURGF0YSgpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChqaXRU
eXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwotICAgICAgICByZXR1cm4gbV9iYXNlbGlu
ZUpJVERhdGEuZ2V0KCk7CisgICAgICAgIGlmICghSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGpp
dFR5cGUoKSkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEJhc2VsaW5lSklURGF0
YSo+KG1faml0RGF0YSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKworI2lmIEVO
QUJMRShERkdfSklUKQorICAgIHZvaWQgc2V0REZHSklURGF0YShzdGQ6OnVuaXF1ZV9wdHI8REZH
OjpERkdKSVREYXRhPiYmIGppdERhdGEpCisgICAgeworICAgICAgICBBU1NFUlQoIW1faml0RGF0
YSk7CisgICAgICAgIG1faml0RGF0YSA9IGppdERhdGEucmVsZWFzZSgpOworICAgIH0KKworICAg
IERGRzo6REZHSklURGF0YSogZGZnSklURGF0YSgpCisgICAgeworICAgICAgICBpZiAoSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpCisgICAgICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PERGRzo6REZHSklURGF0YSo+KG1faml0RGF0YSk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyNlbmRpZgogI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRT
d2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9m
VW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCk7IH0KICAgICBjb25zdCBVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZSYgdW5saW5rZWRTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgcmV0dXJu
IG1fdW5saW5rZWRDb2RlLT51bmxpbmtlZFN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsgfQpA
QCAtOTM3LDcgKzk1NCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKIHB1YmxpYzoKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QmFzZWxpbmVKSVREYXRhPiBtX2Jhc2VsaW5lSklURGF0YTsKKyAg
ICB2b2lkKiBtX2ppdERhdGEgeyBudWxscHRyIH07CiBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5B
QkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
bGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggMjNm
ZDQ1NDdjNTliOTJhOTM0Mzc0MmE1ODRmN2RkY2RmMjkxZjllYi4uNGUwM2FhM2VkZTQyODllMDhj
MjU4ODgyOTA4YjU0YjYzZjM5YWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0
b3IuaApAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFi
bGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZwogcHVibGljOgog
ICAgIENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcigK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZyb20sIFNwZWN1bGF0aXZlSklUKiBq
aXQsIFBfSklUT3BlcmF0aW9uX0dTdFpCIGZ1bmN0aW9uLAotICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVk
U3RydWN0dXJlIGNvbnRpZ3VvdXNTdHJ1Y3R1cmUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlT
dG9yYWdlU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCisgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50IGdsb2Jh
bE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJlLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIsIEdQUlJl
ZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0
aW9uKQogICAgICAgICAsIG1fY29udGlndW91c1N0cnVjdHVyZShjb250aWd1b3VzU3RydWN0dXJl
KQpAQCAtMTE1LDcgKzExNSw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJs
ZVNpemVTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKdW1waW5nCiAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmU7CiAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBtX2FycmF5U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZTsKICAgICBHUFJSZWcgbV9y
ZXN1bHRHUFI7Ci0gICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0
OworICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAg
IEdQUlJlZyBtX3NpemVHUFI7CiAgICAgR1BSUmVnIG1fc3RvcmFnZUdQUjsKICAgICBWZWN0b3I8
U2lsZW50UmVnaXN0ZXJTYXZlUGxhbiwgMj4gbV9wbGFuczsKQEAgLTEyNSw3ICsxMjUsNyBAQCBj
bGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVT
bG93UGF0aEdlbmVyYXRvciBmaW5hbAogcHVibGljOgogICAgIENhbGxBcnJheUFsbG9jYXRvcldp
dGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgUF9K
SVRPcGVyYXRpb25fR1N0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBnbG9iYWxPYmplY3QsIEdQUlJlZyBzdHJ1Y3R1cmVH
UFIsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgZ2xvYmFsT2JqZWN0LCBHUFJS
ZWcgc3RydWN0dXJlR1BSLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCiAgICAg
ICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4o
ZnJvbSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9y
ZXN1bHRHUFIocmVzdWx0R1BSKQpAQCAtMTUyLDcgKzE1Miw3IEBAIGNsYXNzIENhbGxBcnJheUFs
bG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9y
IGZpbmFsCiAKICAgICBQX0pJVE9wZXJhdGlvbl9HU3RaQiBtX2Z1bmN0aW9uOwogICAgIEdQUlJl
ZyBtX3Jlc3VsdEdQUjsKLSAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgbV9nbG9iYWxP
YmplY3Q7CisgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgbV9nbG9iYWxPYmplY3Q7
CiAgICAgR1BSUmVnIG1fc3RydWN0dXJlR1BSOwogICAgIEdQUlJlZyBtX3NpemVHUFI7CiAgICAg
R1BSUmVnIG1fc3RvcmFnZUdQUjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgK
aW5kZXggNDUzYzNkY2RhZWQxZjNjM2MyYWYxNGI4MTJiOGEyM2E1NmQxMWNhMi4uNDA1ODdlOWFk
NWVkOTA1MWQxYzIxMGJjYTFkZmViOGJiNWVkMTI0YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb2RlLmgKQEAgLTQ5LDYgKzQ5LDIzIEBAIG5hbWVzcGFjZSBERkcgewogCiBjbGFz
cyBKSVRDb21waWxlcjsKIAorY2xhc3MgREZHSklURGF0YSBmaW5hbCA6IHB1YmxpYyBUcmFpbGlu
Z0FycmF5PERGR0pJVERhdGEsIHZvaWQqPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKK3B1YmxpYzoKKyAgICB1
c2luZyBCYXNlID0gVHJhaWxpbmdBcnJheTxERkdKSVREYXRhLCB2b2lkKj47CisKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPERGR0pJVERhdGE+IGNyZWF0ZSh1bnNpZ25lZCBwb29sU2l6ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8REZHSklURGF0YT4geyBuZXcg
KE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUocG9vbFNpemUpKSkgREZH
SklURGF0YShwb29sU2l6ZSkgfTsKKyAgICB9CisKKyAgICBleHBsaWNpdCBERkdKSVREYXRhKHVu
c2lnbmVkIHNpemUpCisgICAgICAgIDogQmFzZShzaXplKQorICAgIHsKKyAgICB9Cit9OworCiBj
bGFzcyBKSVRDb2RlIGZpbmFsIDogcHVibGljIERpcmVjdEpJVENvZGUgewogcHVibGljOgogICAg
IEpJVENvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKaW5kZXggNDVmMzQzZjBkZDA1OTA3ZjA5OTE3ZGIwM2ExZjQxNGRkNjgwMTRjYi4uMTE0MzEx
OTc4YTQ1ZjIzMzIzMDIwYTAyOTEzMTAxY2MzOTRkMWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRl
ICJNYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbC5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4
dC5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgogI2luY2x1ZGUgIlZNLmgiCiAKQEAg
LTExMCwxMyArMTExLDI0IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSgpCiAgICAg
Ly8gY2hlY2spIHdoaWNoIHdpbGwgYmUgZGVwZW5kZW50IG9uIHN0YWNrIGxheW91dC4gKFdlJ2Qg
bmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGluCiAgICAgLy8gYm90aCBub3JtYWwgcmV0dXJuIGNv
ZGUgYW5kIHdoZW4ganVtcGluZyB0byBhbiBleGNlcHRpb24gaGFuZGxlcikuCiAgICAgZW1pdEZ1
bmN0aW9uUHJvbG9ndWUoKTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxv
Y2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisgICAgaWYgKG1fY29kZUJsb2NrLT5jb2Rl
VHlwZSgpID09IEZ1bmN0aW9uQ29kZSkKKyAgICAgICAgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJ
blByb2xvZ3VlKEdQUkluZm86OnJlZ1QwLCBtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKTsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHByb2JlRGVidWcoWz1dKFByb2JlOjpDb250ZXh0JiBj
dHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4o
KS0+Y29kZUJsb2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1p
emluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIH0pOworI2VuZGlmCiB9CiAKIHZv
aWQgSklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAgICBl
bWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAgZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3Rl
cnMoKTsgICAgCisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmNvbnN0YW50c1JlZ2lz
dGVyKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7
CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5RXhlY3V0aW9uRmxh
ZygpCkBAIC0zNDAsNyArMzUyLDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZSgpCiAgICAg
aWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFj
a092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09u
RXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOwogCiAgICAgLy8gR2VuZXJhdGUgc2xvdyBwYXRoIGNvZGUuCiAgICAgbV9zcGVj
dWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmlnaW5NYXBCdWlsZGVy
KTsKQEAgLTQxMyw3ICs0MjYsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24o
KQogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAgICAgYWRkUHRy
KFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JTbG93
UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgbV9zcGVjdWxhdGl2ZS0+
Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRo
cm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CisgICAgZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICAKICAgICAvLyBUaGUgZmFzdCBlbnRyeSBwb2ludCBpbnRv
IGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50
cwogICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIGNhbGwgKHdlIG9ubHkgdXNlIHRoZSBm
YXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0aWNhbGx5CkBAIC00MzIsNyArNDQ2LDkg
QEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAgICAgZW1pdFN0b3Jl
Q29kZU9yaWdpbihDb2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkpKTsKICAgICAgICAgaWYgKG1h
eEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJ
bW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwp
KSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPmlzQ29u
c3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25DYWxs
QXJpdHlDaGVjaywgR1BSSW5mbzo6cmVnVDAsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSk7
CisgICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jaywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNz
KEdQUkluZm86OmFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkdsb2JhbE9iamVjdCgp
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9w
ZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29kZUJsb2NrLT5pc0Nv
bnN0cnVjdG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2Fs
bEFyaXR5Q2hlY2ssIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOwogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAg
ICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSwg
c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBicmFuY2hUZXN0MzIoWmVybywgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhpcyk7CkBAIC02NDMs
NiArNjU5LDQ0IEBAIHZvaWQgSklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVudHJ5QnVmZmVyKCkK
ICAgICB9CiB9CiAKK3ZvaWQgSklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0YW50KFVubGlu
a2VkQ29uc3RhbnQgY29uc3RhbnQsIEdQUlJlZyBkZXN0KQoreworICAgIGNvbnN0YW50Lm1hdGVy
aWFsaXplKCp0aGlzLCBkZXN0KTsKK30KKwordm9pZCBKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtl
ZENvbnN0YW50KFVubGlua2VkQ29uc3RhbnQgY29uc3RhbnQsIEFkZHJlc3MgZGVzdCkKK3sKKyAg
ICBjb25zdGFudC5wb2tlKCp0aGlzLCBkZXN0KTsKK30KKworSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQ6OlVubGlua2VkQ29uc3RhbnQoR3JhcGgmIGdyYXBoLCBKU0NlbGwqIGNlbGwpCisg
ICAgOiBtX2luZGV4KGdyYXBoLm1fcGxhbi5hZGRVbmxpbmtlZENvbnN0YW50KFNwZWN1bGF0aXZl
SklUOjpUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihncmFwaCwgY2VsbCkpKQorICAgICwgbV9w
b2ludGVyKGdyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkgPyBudWxscHRyIDogY2VsbCkKK3sKK30K
KworSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6OlVubGlua2VkQ29uc3RhbnQoR3JhcGgm
IGdyYXBoLCB2b2lkKiBwb2ludGVyLCBOb25DZWxsVGFnKQorICAgIDogbV9pbmRleChncmFwaC5t
X3BsYW4uYWRkVW5saW5rZWRDb25zdGFudChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIocG9p
bnRlcikpKQorICAgICwgbV9wb2ludGVyKGdyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkgPyBudWxs
cHRyIDogcG9pbnRlcikKK3sKK30KKwordm9pZCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dDo6bWF0ZXJpYWxpemUoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyByZXN1bHRHUFIpCit7Cisg
ICAgaWYgKG1fcG9pbnRlcikKKyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX3BvaW50
ZXIpLCByZXN1bHRHUFIpOworICAgIGVsc2UKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyLCBERkdKSVREYXRhOjpvZmZz
ZXRPZkRhdGEoKSArIHNpemVvZih2b2lkKikgKiBtX2luZGV4KSwgcmVzdWx0R1BSKTsKK30KKwor
dm9pZCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6cG9rZShDQ2FsbEhlbHBlcnMmIGpp
dCwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCit7CisgICAgaWYgKG1fcG9pbnRlcikK
KyAgICAgICAgaml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobV9wb2ludGVyKSwgYWRkcmVzcyk7
CisgICAgZWxzZQorICAgICAgICBqaXQudHJhbnNmZXJQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyLCBERkdKSVREYXRhOjpvZmZzZXRPZkRhdGEoKSAr
IHNpemVvZih2b2lkKikgKiBtX2luZGV4KSwgYWRkcmVzcyk7Cit9CisKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDk4NDI3NjgzOGQzZTg5MGM1MTEzNmUw
YTNkMThlZTBiOTcyNDZjMTcuLmNiODc3YmEzNmNmMjI0MjBlNGFkNmFiZDRkODU3MzU0YTM4Mzkz
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTI1
NSwxNCArMjU1LDYgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsK
ICAgICAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uoc3RydWN0dXJlU2V0W2ldKTsKICAgICB9CiAg
ICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtQdHIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIEpTQ2VsbCogd2Vha1B0cikKLSAgICB7Ci0g
ICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW1QdHIo
d2Vha1B0cikpOwotICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHdlYWtQdHIpOwotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgSnVt
cCBicmFuY2hXZWFrU3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBS
ZWdpc3RlcmVkU3RydWN0dXJlIHdlYWtTdHJ1Y3R1cmUpCiAgICAgewpAQCAtMzEyLDYgKzMwNCwz
NiBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBl
bWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpKTsKICAgICB9CiAKKyAgICBjbGFzcyBVbmxpbmtlZENvbnN0YW50IGZpbmFs
IDogcHVibGljIENDYWxsSGVscGVyczo6Q29uc3RhbnRNYXRlcmlhbGl6ZXIgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgZW51bSBOb25DZWxsVGFnIHsgTm9uQ2VsbCB9OworICAgICAgICBVbmxpbmtl
ZENvbnN0YW50KEdyYXBoJiwgSlNDZWxsKik7CisKKyAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZShD
Q2FsbEhlbHBlcnMmLCBHUFJSZWcpOworICAgICAgICB2b2lkIHBva2UoQ0NhbGxIZWxwZXJzJiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgICAgICBzdGF0aWMgVW5saW5rZWRDb25zdGFudCBub25DZWxsUHRyKEdyYXBoJiBncmFwaCwg
VCogcG9pbnRlcikKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjpp
c19iYXNlX29mX3Y8SlNDZWxsLCBUPik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRDb25z
dGFudChncmFwaCwgcG9pbnRlciwgTm9uQ2VsbCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0
aWMgVW5saW5rZWRDb25zdGFudCBzdHJ1Y3R1cmUoR3JhcGgmIGdyYXBoLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFVubGlua2Vk
Q29uc3RhbnQoZ3JhcGgsIHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIFVubGlua2VkQ29uc3RhbnQoR3JhcGgmLCB2b2lkKiwgTm9uQ2VsbFRhZyk7
CisKKyAgICAgICAgdW5zaWduZWQgbV9pbmRleCB7IDAgfTsKKyAgICAgICAgdm9pZCogbV9wb2lu
dGVyIHsgbnVsbHB0ciB9OworICAgIH07CisKKyAgICB2b2lkIGxvYWRVbmxpbmtlZENvbnN0YW50
KFVubGlua2VkQ29uc3RhbnQsIEdQUlJlZyk7CisgICAgdm9pZCBzdG9yZVVubGlua2VkQ29uc3Rh
bnQoVW5saW5rZWRDb25zdGFudCwgQWRkcmVzcyk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIE9TUkV4aXRKdW1wUGxhY2Vob2xkZXI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKaW5kZXggZDYzNjEzMjk3YzI3ZjM4ODE1ODZiY2Fh
NzdlM2FjY2ZmNGUyNjRjNy4uNWVjZTQ1Njc1NTBkYTMxNmI0MjY5M2FhNTViZjY2ZWFlNzcyZTUx
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcApA
QCAtNjQsNiArNjQsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9wbGFuLmNvZGVCbG9jaygpOwogCiAgICAgY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKG1faml0Q29kZS5jb3B5UmVmKCkpOworICAgIGNvZGVCbG9jay0+c2V0REZHSklU
RGF0YShtX3BsYW4uZmluYWxpemVKSVREYXRhKCkpOwogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAg
ICAgbV9qaXRDb2RlLT5vcHRpbWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBmODYzNWFlNjg4MmEyNTE1YWI5YzMxMTRlNjY3
YTFiNzgyY2I3MzJiLi5hZDFjNjgyNzkwYjZiOWY1NDY5ZjUzYjkzYzIxODY3N2VkNGFlNDVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTY4MSw2ICs2ODEsMjEgQEAg
dm9pZCBQbGFuOjpjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpCiAgICAgfQogfQog
Cit1bnNpZ25lZCBQbGFuOjphZGRVbmxpbmtlZENvbnN0YW50KENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0ciBwdHIpCit7CisgICAgcmV0dXJuIG1fY29uc3RhbnRQb29sLmFkZChiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHB0ci5hc0ludHB0cigpKSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKS5pdGVyYXRv
ci0+dmFsdWU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBQbGFuOjpmaW5hbGl6
ZUpJVERhdGEoKQoreworICAgIGlmIChtX2NvbnN0YW50UG9vbC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGF1dG8gaml0RGF0YSA9IERGR0pJVERhdGE6OmNyZWF0ZSht
X2NvbnN0YW50UG9vbC5zaXplKCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29uc3RhbnRQ
b29sKQorICAgICAgICBqaXREYXRhLT5hdChwYWlyLnZhbHVlKSA9IHBhaXIua2V5OworICAgIHJl
dHVybiBqaXREYXRhOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXggNDA4
MDMyOTZhNmRiZTBlNDdlYTM4MzNkYmJmMjRhNmMyOTAzYjZlMi4uZGFlZTFlMDcxODc0NjJkZWQz
NGJhNGY4MGY3MGQwNGM3ZmMxMTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ29kZUJsb2NrOwogbmFtZXNwYWNlIERGRyB7CiAKIGNs
YXNzIFRocmVhZERhdGE7CitjbGFzcyBERkdKSVREYXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKQEAgLTEwMSw2ICsxMDIsOSBAQCBjbGFzcyBQbGFuIGZpbmFsIDogcHVibGljIEpJVFBsYW4g
ewogICAgIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjayogY2FsbGJhY2soKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDYWxsYmFjayhSZWY8RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsgfQogCisgICAgdW5zaWduZWQgYWRkVW5saW5rZWRDb25zdGFudChDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBm
aW5hbGl6ZUpJVERhdGEoKTsKKwogcHJpdmF0ZToKICAgICBDb21waWxhdGlvblBhdGggY29tcGls
ZUluVGhyZWFkSW1wbCgpIG92ZXJyaWRlOwogICAgIApAQCAtMTM0LDYgKzEzOCw3IEBAIGNsYXNz
IFBsYW4gZmluYWwgOiBwdWJsaWMgSklUUGxhbiB7CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+
IG1fdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBSZWZQdHI8RGVmZXJyZWRDb21w
aWxhdGlvbkNhbGxiYWNrPiBtX2NhbGxiYWNrOworICAgIEhhc2hNYXA8dm9pZCosIHVuc2lnbmVk
PiBtX2NvbnN0YW50UG9vbDsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xv
d1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCBmYWJjZTAxODJkZTkwMDI1M2YwZGYz
ZjBiZjJlOTMwMTg3YzBmZjE0Li42NDNiZDI1YzA5YzJhMzIwMjI0NTdhMTVkNjE2OTQ2MTkxMTIz
YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdH
ZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0zNyw3ICszNyw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIFNhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEp1bXBpbmdTbG93UGF0aEdlbmVy
YXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4gewogcHVibGljOgogICAgIFNhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIGdsb2JhbE9iamVjdCwgR1BSUmVnIGJhc2VSZWcsIEdQ
UlJlZyBwcm9wZXJ0eVJlZykKKyAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZy
b20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50IGdsb2JhbE9iamVjdCwgR1BSUmVnIGJhc2VSZWcsIEdQUlJl
ZyBwcm9wZXJ0eVJlZykKICAgICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9B
c3NlbWJsZXI6Okp1bXA+KGZyb20sIGppdCkKICAgICAgICAgLCBtX3Jlc3VsdFJlZ3MocmVzdWx0
UmVncykKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCkBAIC03OSw3ICs3
OSw3IEBAIGNsYXNzIFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDog
cHVibGljIEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvCiAgICAgfQogCiAgICAgSlNWYWx1ZVJlZ3Mg
bV9yZXN1bHRSZWdzOwotICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9i
amVjdDsKKyAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCBtX2dsb2JhbE9iamVjdDsK
ICAgICBHUFJSZWcgbV9iYXNlUmVnOwogICAgIEdQUlJlZyBtX3Byb3BlcnR5UmVnOwogICAgIFZl
Y3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzNjBlMTgxODNlY2Jh
MWUwY2MwNWQ3NmM3MmNkZjEyMTllY2NiMTZkLi43ZjcyYzVjNzc3NmVmYTczOWUxMjA1MjI3ZWZh
YmMzN2RhNWMxMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oIgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMTElu
dFRodW5rcy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlZ0V4cE9i
amVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlR5cGVQcm9m
aWxlckxvZy5oIgpAQCAtMjA1LDExICsyMDYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
R2V0Q2FsbGVlKENvZGVPcmlnaW4gb3JpZ2luLCBHUFJSZWcgY2FsbGVlR1BSKQogICAgICAgICAg
ICAgbV9qaXQubG9hZFB0cigKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cihpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKICAg
ICAgICAgICAgICAgICBjYWxsZWVHUFIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCku
YXNDZWxsKCkpLAotICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7Ci0gICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBpbmxpbmVDYWxsRnJhbWUtPmNh
bGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLCBjYWxsZWVHUFIpOwogICAgIH0gZWxz
ZQogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSksIGNhbGxlZUdQUik7CiB9CkBAIC02ODYsNyArNjg0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuJiBw
bGFuKQogICAgICAgICBicmVhazsKICAgICBjYXNlIFNldENlbGxDb25zdGFudDoKICAgICAgICAg
QVNTRVJUKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKLSAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpKSwgcGxh
bi5ncHIoKSk7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHBsYW4ubm9kZSgpLT5jb25zdGFudCgpLT52YWx1
ZSgpLmFzQ2VsbCgpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgY2FzZSBTZXRUcnVzdGVkSlNDb25zdGFudDoKQEAgLTExOTEsMjIgKzExODks
MjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkK
ICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAg
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRp
b24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIp
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6
ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVC
eUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTEyMjcsNyAr
MTIyNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5v
ZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEyNzcsMjIgKzEy
NzUsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewog
ICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAg
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFz
ZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
KyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNt
YU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVn
cywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1
ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQ
YXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlW
YWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTMxNCw3ICsxMzEy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUp
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0z
Mihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21h
TW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5i
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTM1MiwxMiArMTM1MCwx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRp
b25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCiAg
ICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tO
ZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxl
SWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAgICAgfQogCiAg
ICAgbV9qaXQuYWRkSW5CeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTQwMiwxMiArMTQw
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQog
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uSW5CeVZhbE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4
Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25JbkJ5VmFsT3B0aW1pemUsCiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkSW5CeVZhbChn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTE0NTYsMTIgKzE0NTQsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUhhc1ByaXZhdGUoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSB0eXBlKQog
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZh
dGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwKICAgICAg
ICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRl
ZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgdHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlv
bkhhc1ByaXZhdGVOYW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6
ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpD
aGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKKyAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRH
UFIpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwpAQCAtMTQ5NSw3ICsxNDkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hX
aXRoU2NvcGUoTm9kZSogbm9kZSkKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG9iamVjdEVkZ2Us
IG9iamVjdEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdEdQUik7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RHUFIp
OwogICAgICAgICAvLyBObyBleGNlcHRpb24gY2hlY2sgaGVyZSBhcyB3ZSBkaWQgbm90IGhhdmUg
dG8gY2FsbCB0b09iamVjdCgpLgogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChvYmplY3RF
ZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTE1MDMsNyArMTUwMSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3BlKE5vZGUqIG5vZGUpCiAgICAgICAg
IEpTVmFsdWVSZWdzIG9iamVjdFJlZ3MgPSBvYmplY3QuanNWYWx1ZVJlZ3MoKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hX
aXRoU2NvcGUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJlbnRT
Y29wZUdQUiwgb2JqZWN0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVz
aFdpdGhTY29wZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY3Vy
cmVudFNjb3BlR1BSLCBvYmplY3RSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICB9CiAgICAgCkBAIC0xOTIyLDEyICsxOTIwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVTdHJpbmdTbGljZShOb2RlKiBub2RlKQogCiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKGJpZ0NoYXJhY3RlciwgdGhpcywgb3BlcmF0aW9uU2luZ2xlQ2hh
cmFjdGVyU3RyaW5nLCB0ZW1wR1BSLCAmdm0sIHRlbXBHUFIpKTsKIAotICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1N1
YnN0ciwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3Rh
cnRJbmRleEdQUiwgdGVtcEdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1N1YnN0ciwgdGVtcEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRJbmRleEdQUiwgdGVt
cEdQUikpOwogCiAgICAgaWYgKGVuZEdQUikKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCAqZW5kR1BS
KSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRo
aXMsIG9wZXJhdGlvblN0cmluZ1NsaWNlLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEdQUiwgKmVuZEdQUikpOwogICAgIGVsc2UKLSAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0
aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJp
bmdHUFIsIHN0YXJ0R1BSLCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWF4KCkpKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChp
c1JvcGUsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1NsaWNlLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEdQUiwgVHJ1c3RlZEltbTMyKHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSkpOwogCiAgICAgZG9uZUNhc2VzLmxpbmso
Jm1faml0KTsKICAgICBjZWxsUmVzdWx0KHRlbXBHUFIsIG5vZGUpOwpAQCAtMTk3NCw3ICsxOTcy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJDYXNlKE5vZGUqIG5vZGUp
CiAgICAgCiAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKGxlbmd0aEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0xvd2VyQ2Fz
ZSwgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBpbmRl
eEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0xvd2VyQ2FzZSwgbGVuZ3RoR1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBpbmRleEdQUik7CiAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtMjE5MywxMCArMjE5MSwyMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICB9CiAKICAgICBp
ZiAobV9ibG9jay0+aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gRm9yIGNhdGNoIGVu
dHJ5IHBvaW50LCBPU1IgZW50cnkgc2V0cyBhIG5ldyBDb2RlQmxvY2sgcG9pbnRlci4KICAgICAg
ICAgbV9qaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQuZ3JhcGgo
KS5mcmFtZVJlZ2lzdGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAgICAgbV9qaXQuZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0TWF0
ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIobV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7
CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgbV9qaXQucHJvYmVEZWJ1ZyhbPV0oUHJvYmU6
OkNvbnRleHQmIGN0eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHgu
ZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICAg
ICAgfSk7CisjZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5lbWl0R2V0
RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86
OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENvZGVCbG9jazo6b2Zmc2V0T2ZK
SVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9CiAK
ICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwpAQCAt
MjQ3Nyw3ICsyNDg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHJhcHMo
Tm9kZSogbm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhtX2ppdC52
bSgpLnRyYXBzKCkudHJhcEJpdHNBZGRyZXNzKCkpLAogICAgICAgICBUcnVzdGVkSW1tMzIoVk1U
cmFwczo6QXN5bmNFdmVudHMpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChuZWVkVHJhcEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRpb25IYW5kbGVUcmFwcywgdW51c2Vk
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChuZWVkVHJhcEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRpb25IYW5kbGVU
cmFwcywgdW51c2VkR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCkBAIC0yNTQyLDcgKzI1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgICAgIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpIDoK
ICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKLSAgICAgICAgICAgIE5vUmVzdWx0LCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVn
cykpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7CiAgICAgfQogCiAgICAgbm9SZXN1
bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTI2MTcsNyArMjYyNSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbChOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/CiAgICAgICAg
ICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0
RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERv
dWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAgICAg
KG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERp
cmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxC
ZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCi0gICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcp
KTsKKyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgIH0KIAogICAgIG5vUmVz
dWx0KG1fY3VycmVudE5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0yNjc1
LDkgKzI2ODMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSog
bm9kZSkKIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RT
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CisgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3Ry
aWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVn
cywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOworICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0
QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CiAgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgICAgICBub1Jlc3VsdChu
b2RlKTsKQEAgLTI3MzAsMTEgKzI3MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklU
VHlwZTo6REZHSklUKSkgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgK
ICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb24sCi0gICAgICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVS
ZWdzLCBzdHViSW5mb0dQUiwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgTm9SZXN1bHQsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBzdHVi
SW5mb0dQUiwgbnVsbHB0cik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbiwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVn
cywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKKyAg
ICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJv
cGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKICAgICAgICAg
fQogCiAgICAgICAgIG1faml0LmFkZFB1dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAt
MjgyNSw3ICsyODMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8K
ICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0
QnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgICAgICAobm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25k
QXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRz
Tm9uU3RyaWN0KSwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZ3MpKTsKKyAgICAgICAgICAg
ICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHBy
b3BlcnR5UmVnLCB2YWx1ZVJlZ3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0yOTUyLDEyICsyOTYwLDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUs
IGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0cnVjdHVyZSk7
CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8U2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAotICAgICAgICAgICAgICAgIG91dE9mQm91bmRz
LCB0aGlzLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBn
bG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIG91
dE9mQm91bmRzLCB0aGlzLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBvdXRPZkJvdW5kcywgdGhp
cywgb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQsCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGJh
c2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbV9jdXJyZW50Tm9kZSk7CkBAIC0yOTgxLDcgKzI5ODksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hh
ckNvZGVVbnR5cGVkLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3By
UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2Rl
VW50eXBlZCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wclJl
Z3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTMwMDEsNyArMzAwOSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJpbmdzUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwgc2NyYXRjaFJlZyk7CiAK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6
WmVybywgc2NyYXRjaFJlZykpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSwgc2NyYXRjaFJl
ZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3BlcnR5UmVnKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU3Ry
aW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgcHJvcGVydHlSZWcpKTsKICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY3VycmVudE5v
ZGUpOwogfQogCkBAIC0zOTI1LDkgKzM5MzMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlCiAg
ICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KSA6CiAgICAgICAg
ICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdE5vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KSwKICNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsKKyAgICAgICAgICAgIE5vUmVz
dWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcs
IHZhbHVlR1BSKSk7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIE5v
UmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVJlZyksIEpT
VmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKKyAgICAgICAgICAgIE5vUmVzdWx0
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVJlZyksIEpTVmFs
dWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICNlbmRpZgogICAgIH0KIApAQCAtNDAz
NSw3ICs0MDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsRm9yT2Jq
ZWN0V2l0aFN0cmluZyhOb2RlKiBub2RlLCBjb25zdCBTY29wZWQKICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CiAgICAgZWxzZQogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BS
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3RyaW5nLCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7
CiAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKICAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC00MDYy
LDcgKzQwNzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmpl
Y3RXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbCwg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTeW1ib2wsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsK
ICAgICBpZiAoY2FuVXNlRmx1c2ggPT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICBzaWxlbnRG
aWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQxMzAs
MTIgKzQxMzgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByaXZhdGVOYW1l
QnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAgaWYgKEpJVENv
ZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICByZXR1cm4gc2xv
d1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1Yklu
Zm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0UHJp
dmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHQucmVncygpLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCiAgICAgICAgICAgICAgICAgYmFzZSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAgIHJlc3VsdC5y
ZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCisgICAgICAgICAgICByZXN1
bHQucmVncygpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLAogICAgICAgICAg
ICAgYmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7
CiAgICAgfTsKIApAQCAtNDIxNSw3ICs0MjIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5
VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0KSA6CiAgICAgICAgICAgICAobm9kZS0+b3Ao
KSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05v
blN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCksCi0gICAgICAg
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7
CisgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BS
LCBhcmczUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0
KG5vZGUpOwpAQCAtNDIzOCw3ICs0MjQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0KQogICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCksCi0gICAgICAgIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7Cisg
ICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBh
cmczUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5v
ZGUpOwpAQCAtNDI1Niw3ICs0MjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1ZhbHVlUmVncywgc3Vic2NyaXB0UmVncyk7
CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CkBAIC00MjgyLDcgKzQyOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQo
KS5pc0RlZmluZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5lcmlj
IDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRHZW5lcmljOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdz
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3Rl
ZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
Z3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVz
dGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQzMjYs
MTEgKzQzMzQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1l
KE5vZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQp
KSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0
aW9uKCkpLCBvcGVyYXRpb24sCi0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVl
UmVncywgc3R1YkluZm9HUFIsIG51bGxwdHIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b24sCi0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIp
LCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKKyAgICAgICAgICAgIE5vUmVz
dWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgZ2VuLnN0
dWJJbmZvKCksIG51bGxwdHIpOwogICAgIH0KIAogICAgIG1faml0LmFkZFB1dEJ5VmFsKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwpAQCAtNDQwMCwxMSArNDQwOCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICBpZiAoSklUQ29k
ZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkNoZWNrUHJpdmF0
ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgICAg
ICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQ
UikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQ
YXRoLmdldCgpKTsKQEAgLTQ0NDgsMTEgKzQ0NTYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0
aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYnJhbmRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRQ
cml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NDg4LDcgKzQ0OTYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QYXJzZUludEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MsIHJhZGl4R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUGFyc2VJbnRHZW5lcmljLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgdmFsdWVSZWdzLCByYWRpeEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTQ1MDEsNyArNDUwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmcsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUdQUiwgcmFkaXhHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblBhcnNlSW50U3RyaW5nLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIsIHJhZGl4R1BSKTsKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDUxNCw3ICs0NTIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmljLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmljLCByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDUyNyw3ICs0NTM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blBhcnNlSW50U3RyaW5nTm9SYWRpeCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHZhbHVlR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50U3Ry
aW5nTm9SYWRpeCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC00NTUwLDExICs0NTU4LDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2RlKQogICAgIC8v
IHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKICAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWVOb2Rl
LT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uICE9IGhhc0lu
c3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewogICAgICAgICBKU1ZhbHVlUmVncyBoYXNJbnN0
YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgcmVzdWx0R1BSKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5ncHIoKSwgVHJ1
c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOworICAgICAgICBub3REZWZhdWx0LmFw
cGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5j
ZVZhbHVlUmVncy5ncHIoKSwgcmVzdWx0R1BSKSk7CiAjZWxzZQogICAgICAgICBub3REZWZhdWx0
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoaGFzSW5zdGFuY2VWYWx1ZVJlZ3MpKTsKLSAg
ICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRy
KG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgcmVzdWx0R1BSKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTQ1ODgsMTAg
KzQ1OTcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JDZWxs
cyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAot
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJ
bmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0
cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluc3Rh
bmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
c3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7
CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6
ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZv
KCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFk
ZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NzAxLDcgKzQ3MTAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkJpdE5vdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIApAQCAtNDcxNiw3ICs0NzI1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUp
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQml0Tm90LCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZFJlZ3MpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcGVyYW5kUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00NzU2LDcgKzQ3NjUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSog
bm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0
aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJl
Z3MsIHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVu
Y3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNDgyMSw3ICs0ODMwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqIG5v
ZGUpCiAgICAgICAgIG1faml0Lm1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwgcmln
aHRSZWdzKTsKICAgICB9CiAKLSAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0
aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJp
Z2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJl
Z3MpOwogCiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CkBAIC00ODg0LDEzICs0ODkzLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogCiAgICAgICAgIHN3aXRjaCAob3ApIHsK
ICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRYb3JIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRYb3JIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0T3JIZWFw
QmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBC
aWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00OTc0LDcgKzQ5ODMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9w
KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0
U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93
UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUwNDAsNyArNTA0
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0
Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFz
SlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24oc25pcHBl
dFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0
aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTUwNjksNyArNTA3OCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNTA5Niw3ICs1MTA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKQEAgLTUxODQsNyArNTE5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7CiAgICAgICAgIC8vIEZJWE1FOiBjYWxsIGEgbW9yZSBzcGVjaWFsaXplZCBmdW5j
dGlvbgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyLCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVn
cyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRS
ZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTIwNSw3ICs1MjE0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKQEAgLTUyMjEsNyArNTIzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZUFkZChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwpAQCAtNTI4NCw3ICs1MjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
U3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZVN1YiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVl
U3ViLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUzMDUsNyArNTMxNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogICAgICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TdWJIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTU0MTIsOSAr
NTQyMSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwg
SklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmIChhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNoKQot
ICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRy
KG1hdGhJQykpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdz
LCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzKTsKKyAgICAgICAgICAgICAgICBhZGRJ
Q0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihub25SZXBhdGNo
aW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBp
bm5lckxlZnRSZWdzLCBpbm5lclJpZ2h0UmVncyk7CiAKICAgICAgICAgICAgIHNpbGVudEZpbGwo
c2F2ZVBsYW5zKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC01NDQz
LDcgKzU0NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5v
ZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9CiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5n
RnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rp
b24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywg
cmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICB9CiAKQEAg
LTU0NzYsNyArNTQ4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
Q3VzdG9tKE5vZGUqIG5vZGUpCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93Q2FzZSA9
IG1faml0Lmp1bXAoKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChz
bG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvckdQUiwgaGFzSW5z
dGFuY2VSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0
YW5jZVJlZ3MpKTsKIAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKIH0KQEAgLTU1NzUsOSArNTU4NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVU
b09iamVjdE9yQ2FsbE9iamVjdENvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiBlcnJvck1lc3NhZ2UgPSBudWxscHRyOwogICAgICAgICBpZiAobm9kZS0+
aWRlbnRpZmllck51bWJlcigpICE9IFVJTlQzMl9NQVgpCiAgICAgICAgICAgICBlcnJvck1lc3Nh
Z2UgPSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7Ci0gICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
blRvT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJl
Z3MsIGVycm9yTWVzc2FnZSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub09iamVjdCwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBlcnJvck1lc3NhZ2UpKTsKICAg
ICB9IGVsc2UKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVlUmVncykpOworICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25DYWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgdmFsdWVSZWdz
KSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC01NzIxLDcgKzU3
MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhBYnMoTm9kZSogbm9kZSkK
ICAgICAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQWJzLCByZXN1bHQuZnByKCksIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Bcml0aEFicywgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTU3
NDUsNyArNTc1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aENsejMyKE5v
ZGUqIG5vZGUpCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVz
dWx0UmVnID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Bcml0aENsejMyLCByZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQ2x6
MzIsIHJlc3VsdFJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0
UmVnLCBub2RlKTsKIH0KQEAgLTU3NjksNyArNTc3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBcml0aERvdWJsZVVuYXJ5T3AoTm9kZSogbm9kZSwgZG91YmxlICgqZG91YmxlRnVu
Y3RpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdC5mcHIoKSwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CkBA
IC01ODg2LDcgKzU4OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5jT3JEZWMo
Tm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBhdXRv
IG9wZXJhdGlvbiA9IG5vZGUtPm9wKCkgPT0gSW5jID8gb3BlcmF0aW9uSW5jIDogb3BlcmF0aW9u
RGVjOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24s
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiB9CkBAIC02MDI1LDkgKzYwMzQsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQwog
ICAgICAgICAgICAgc2lsZW50U3BpbGwoc2F2ZVBsYW5zKTsKIAogICAgICAgICAgICAgaWYgKGlj
R2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICAgICAg
aWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVwYXRjaGlu
Z0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRS
ZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAgIGljR2VuZXJhdGlv
blN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncywgVHJ1
c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBp
Y0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihub25SZXBhdGNo
aW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGls
ZFJlZ3MpOworICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwg
PSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CiAKICAgICAgICAgICAgIHNpbGVu
dEZpbGwoc2F2ZVBsYW5zKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBA
IC02MDQ4LDcgKzYwNTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5v
ZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQwogICAgICAgICB9KTsK
ICAgICB9IGVsc2UgewogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9uUmVwYXRj
aGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
Y2hpbGRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICB9CiAKQEAg
LTYxMTMsNyArNjEyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bChO
b2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKQEAgLTYxMzEsNyArNjE0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVmFsdWVNdWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25WYWx1ZU11bCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02MzEzLDcgKzYzMjIs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAg
ICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGl2SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02
MzMxLDcgKzYzNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9k
ZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZh
bHVlRGl2LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYsIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRS
ZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNjQxNSw3ICs2NDI0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lm1v
dmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwgcmlnaHRSZWdzKTsKICAgICB9CiAKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogCiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVy
cygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02NTc5LDcgKzY1ODgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhGUm91bmQoTm9kZSogbm9kZSkKICAgICBK
U1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJpdGhGUm91bmQsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhGUm91bmQsIHJl
c3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwg
bm9kZSk7CiB9CkBAIC02NjA0LDcgKzY2MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9kSGVhcEJpZ0lu
dCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02NjIxLDcgKzY2MzAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlTW9k
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywgb3Ay
UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzAxOCw3ICs3MDI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gQXJpdGhUcnVuYyk7CiAgICAgICAgIG9wZXJhdGlvbiA9IG9wZXJhdGlvbkFy
aXRoVHJ1bmM7CiAgICAgfQotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZ3VtZW50UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzA1MSw3ICs3MDYwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydChOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
MVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhTcXJ0LCByZXN1bHQuZnBy
KCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwog
fQpAQCAtNzE3OSw3ICs3MTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
UG93KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hlYXBCaWdJbnQsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUpOwpAQCAtNzE5OCw3ICs3MjA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blZhbHVlUG93LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJl
Z3MsIHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZVBvdywgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJl
Z3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwpAQCAtNzkzNSw3ICs3OTQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBz
bG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCBsZWZ0VGVtcEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKSk7CisgICAgICAgICAg
ICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCBsZWZ0VGVtcEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKSk7CiAgICAg
CiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQobGVmdFRlbXBHUFIsIG5vZGUpOwogfQpAQCAtODA4
NSw3ICs4MDk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0NvbXBhcmUo
Tm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWwKICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3Bl
cmF0aW9uKGNvbXBhcmVGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24oY29tcGFyZUZ1bmN0
aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCBy
aWdodEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTgxODYsNyArODE5NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTYW1lVmFsdWUoTm9kZSogbm9kZSkKIAogICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTgyNzIsNyArODI4MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb25zdGFudFN0b3JhZ2VQb2ludGVyKE5vZGUqIG5v
ZGUpCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CiAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2Rl
LT5zdG9yYWdlUG9pbnRlcigpKSwgc3RvcmFnZUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2Vk
Q29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om5vbkNlbGxQdHIobV9ncmFw
aCwgbm9kZS0+c3RvcmFnZVBvaW50ZXIoKSksIHN0b3JhZ2VHUFIpOwogICAgIHN0b3JhZ2VSZXN1
bHQoc3RvcmFnZUdQUiwgbm9kZSk7CiB9CiAKQEAgLTgzMjUsNyArODMzNCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElmUm9wZVN0cmluZ0ltcGwoc3RvcmFnZVJl
ZyksCi0gICAgICAgICAgICAgICAgdGhpcywgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHN0b3JhZ2VS
ZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnKSk7CisgICAgICAgICAgICAg
ICAgdGhpcywgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHN0b3JhZ2VSZWcsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkp
LCBzdG9yYWdlUmVnKTsKICAgICAgICAgYnJlYWs7CkBAIC04NDM2LDcgKzg0NDUsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkRpcmVjdEFyZ3VtZW50cyhOb2RlKiBu
b2RlLCBjb25zdCBTY29wZWRMYQogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzLCB0aGlz
LCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICBleHRyYWN0UmVz
dWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJv
cGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAg
ICB9CiAgICAgCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTg1NDIs
OCArODU1MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRHbG9iYWxUaGlzKE5v
ZGUqIG5vZGUpCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgbV9q
aXQubG9hZFB0cihnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSwgcmVzdWx0R1BS
KTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTR2xvYmFsT2JqZWN0OjpvZmZzZXRPZkdsb2JhbFRoaXMo
KSksIHJlc3VsdEdQUik7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCkBA
IC04NzA1LDcgKzg3MTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rp
b25Db21tb24oR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdAogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xv
d1BhdGgsIHNpemUpOwogICAgIAogICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigp
KSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSk7CisgICAgbV9qaXQubG9h
ZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwgZXhlY3V0YWJsZSksIHNjcmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5zdG9yZVB0cihzY3Jh
dGNoMUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpKTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0o
KSk7CiB9CiAKQEAgLTg4MDAsNyArODgxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTZXRGdW5jdGlvbk5hbWUoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyBuYW1lVmFsdWVS
ZWdzID0gbmFtZVZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgZnVuY0dQUiwgbmFtZVZhbHVlUmVncyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBmdW5jR1BSLCBuYW1lVmFsdWVSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC04ODE3LDcgKzg4MjcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFyYXJnc0xlbmd0aChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgdW5sb2NrKEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKIAotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNSZWdzLCBkYXRhLT5vZmZzZXQp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZU9mVmFyYXJncywgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNSZWdz
LCBkYXRhLT5vZmZzZXQpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBsb2Nr
KEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKQEAgLTg4NTQsNyArODg2NCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2FkVmFyYXJncyhOb2RlKiBub2RlKQogCiAgICAgbV9qaXQu
c3RvcmUzMihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IoZGF0YS0+bWFjaGluZUNvdW50KSk7CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxv
YWRWYXJhcmdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZGF0YS0+bWFjaGluZVN0YXJ0
Lm9mZnNldCgpLCBhcmd1bWVudHNSZWdzLCBkYXRhLT5vZmZzZXQsIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkxvYWRWYXJhcmdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZGF0YS0+
bWFjaGluZVN0YXJ0Lm9mZnNldCgpLCBhcmd1bWVudHNSZWdzLCBkYXRhLT5vZmZzZXQsIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBkYXRhLT5tYW5kYXRvcnlNaW5pbXVtKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC04OTg1LDEwICs4
OTk1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9k
ZSogbm9kZSkKICAgICAvLyBEb24ndCBuZWVkIGEgbWVtb3J5IGJhcnJpZXJzIHNpbmNlIHdlIGp1
c3QgZmFzdC1jcmVhdGVkIHRoZSBhY3RpdmF0aW9uLCBzbyB0aGUKICAgICAvLyBhY3RpdmF0aW9u
IG11c3QgYmUgeW91bmcuCiAgICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpKTsKLSAgICBtX2pp
dC5zdG9yZVB0cigKLSAgICAgICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwK
LSAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0xleGljYWxFbnZpcm9u
bWVudDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSk7Ci0gICAgICAgIAorICAgIG1faml0LnN0b3Jl
VW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBu
b2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpKTsKKwogICAg
IC8vIE11c3QgaW5pdGlhbGl6ZSBhbGwgbWVtYmVycyB0byB1bmRlZmluZWQgb3IgdGhlIFREWiBl
bXB0eSB2YWx1ZS4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdGFibGUtPnNjb3BlU2l6
ZSgpOyArK2kpIHsKICAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoCkBAIC05MTE1LDEy
ICs5MTIzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3Vt
ZW50cyhOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KAogICAgICAgICAgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LnZp
cnR1YWxSZWdpc3RlcigpKSwKICAgICAgICAgICAgICAgICBzY3JhdGNoMUdQUik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgp
LCBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLAot
ICAgICAgICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3Zl
cnkuY29uc3RhbnQoKS5hc0NlbGwoKSksIHNjcmF0Y2gxR1BSKTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLCBzY3JhdGNoMUdQUik7CiAKQEAgLTkzNjAsNyArOTM2NCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVSZXN0KE5vZGUqIG5vZGUpCiAKICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVJlc3QsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1N0YXJ0R1BSLCBJbW0zMihub2Rl
LT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpKSwgYXJyYXlMZW5ndGhHUFIpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlUmVzdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYXJndW1lbnRzU3RhcnRHUFIsIEltbTMyKG5vZGUtPm51bWJlck9mQXJn
dW1lbnRzVG9Ta2lwKCkpLCBhcnJheUxlbmd0aEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTk0NTQsNyArOTQ1
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmd1bWVudCkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQpKTsKIAogICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZtKCkpOwpA
QCAtOTQ2NCw3ICs5NDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChO
b2RlKiBub2RlKQogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TcHJlYWRGYXN0QXJyYXksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZ3VtZW50KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TcHJlYWRGYXN0QXJyYXksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZ3VtZW50KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCkBA
IC05NDczLDcgKzk0NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblNwcmVhZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZ3VtZW50KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
cHJlYWRHZW5lcmljLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBh
cmd1bWVudCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICB9CkBAIC05NjEwLDcgKzk2MTQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXkoTm9kZSogbm9kZSkKICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAg
b3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihub2RlLT5pbmRleGluZ1R5cGUoKSkpLAorICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmpl
Y3QpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlw
ZSgpKSksCiAgICAgICAgIHN0YXRpY19jYXN0PHZvaWQqPihidWZmZXIpLCBzaXplX3Qobm9kZS0+
bnVtQ2hpbGRyZW4oKSkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTk3Njks
NyArOTc3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdBcnJheVdpdGhTcHJl
YWQoTm9kZSogbm9kZSkKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTmV3QXJyYXlXaXRoU3ByZWFkU2xvdywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBidWZmZXIsIG5vZGUtPm51bUNo
aWxkcmVuKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU3ByZWFk
U2xvdywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBn
bG9iYWxPYmplY3QpLCBidWZmZXIsIG5vZGUtPm51bUNoaWxkcmVuKCkpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC05
OTQ5LDcgKzk5NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShO
b2RlKiBub2RlKQogICAgICAgICB9CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFr
ZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNp
emVTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVz
dWx0R1BSKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgZ2xvYmFsT2JqZWN0KSwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7
CiAgICAgfQogCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXA0KHRoaXMpOwpAQCAtMTAxNjgsNyArMTAx
NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUqIG5v
ZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkFycmF5SW5kZXhPZlN0cmluZywgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudEdQUiwgaW5kZXhHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlN0cmluZywgbGVuZ3RoR1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVu
dEdQUiwgaW5kZXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAg
ICAgIHN0cmljdEludDMyUmVzdWx0KGxlbmd0aEdQUiwgbm9kZSk7CkBAIC0xMDE4MywxMSArMTAx
ODcsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5SW5kZXhPZihOb2RlKiBu
b2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlRG91YmxlLCBsZW5n
dGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVt
ZW50UmVncywgaW5kZXhHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25B
cnJheUluZGV4T2ZWYWx1ZURvdWJsZSwgbGVuZ3RoR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgY2FzZSBB
cnJheTo6Q29udGlndW91czoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJy
YXlJbmRleE9mVmFsdWVJbnQzMk9yQ29udGlndW91cywgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVJbnQz
Mk9yQ29udGlndW91cywgbGVuZ3RoR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
c3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTEwMjU2LDcgKzEwMjYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoc3Rv
cmFnZUxlbmd0aEdQUiwgcmVzdWx0UmVncyk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3Bl
cmF0aW9uQXJyYXlQdXNoLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
dmFsdWVSZWdzLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGJhc2VHUFIpKTsKIAogICAgICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEw
MzAyLDcgKzEwMzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChO
b2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVk
SW1tUHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1
ZmZlcigpKSkpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCht
X2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVk
SW1tMzIoZWxlbWVudENvdW50KSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZl
ckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKIAogICAgICAgICBiYXNlLnVzZSgp
OwogICAgICAgICBzdG9yYWdlLnVzZSgpOwpAQCAtMTAzMjcsNyArMTAzMzEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBt
X2ppdC5ib3hJbnQzMihzdG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKIAogICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUZQUiwgYmFzZUdQUikpOworICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91Ymxl
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVGUFIsIGJh
c2VHUFIpKTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMzcxLDcgKzEwMzc1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1Zh
bHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOwogCi0gICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFy
cmF5UHVzaERvdWJsZU11bHRpcGxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOwor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVtcCgpLCB0
aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZSwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMy
KGVsZW1lbnRDb3VudCkpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBzdG9yYWdl
LnVzZSgpOwpAQCAtMTA0MDQsNyArMTA0MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihzdG9y
YWdlTGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2
YWx1ZVJlZ3MsIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHZhbHVlUmVncywgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0
NDgsNyArMTA0NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5v
ZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVkSW1t
UHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZl
cigpKSkpOwogCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgc2xv
d1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJH
UFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CisgICAgICAgICAgICBzbG93UGF0aENh
bGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwg
VHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAg
ICAgICBzdG9yYWdlLnVzZSgpOwpAQCAtMTA1MDMsOCArMTA1MDcsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSXNPYmplY3QoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVR5cGVPZklzT2JqZWN0KE5vZGUqIG5vZGUpCiB7Ci0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgCiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVS
ZWdzKCk7CiAgICAgCkBAIC0xMDUzNiw3ICsxMDUzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUeXBlT2ZJc09iamVjdChOb2RlKiBub2RlKQogICAgIAogICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uVHlwZU9mSXNPYmplY3QsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LAor
ICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblR5cGVPZklzT2JqZWN0LCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAg
ICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSkpOwogICAgIAogICAgIGRvbmUubGluaygmbV9q
aXQpOwpAQCAtMTA1NDYsOCArMTA1NDgsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VHlwZU9mSXNPYmplY3QoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUlzQ2FsbGFibGUoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25fR0Mgc2xvd1BhdGhPcGVyYXRp
b24pCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgCiAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0xMDU3Myw3ICsxMDU3Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NhbGxhYmxlKE5vZGUqIG5vZGUsIFNf
SklUT3BlcmF0aW9uX0dDIHNsb3dQYXRoT3BlCiAgICAgCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBz
bG93UGF0aE9wZXJhdGlvbiwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICBz
bG93UGF0aCwgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5
bG9hZEdQUigpKSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xMDU4OSwxNCAr
MTA1ODksMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ29uc3RydWN0b3IoTm9k
ZSogbm9kZSkKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSXNDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
aW5wdXRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklzQ29uc3RydWN0b3IsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CiAgICAg
dW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVHlwZU9mKE5vZGUqIG5vZGUpCiB7Ci0gICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgCiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVS
ZWdzKCk7CiAgICAgCkBAIC0xMDYxOSw3ICsxMDYxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUeXBlT2YoTm9kZSogbm9kZSkKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uVHlwZU9mT2JqZWN0LCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgIHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICB2YWx1ZVJlZ3Mu
cGF5bG9hZEdQUigpKSk7CiAgICAgCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpA
QCAtMTA2NjgsNyArMTA2NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tJ
c0NvbnN0YW50KE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBDZWxsVXNlKSB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENvbnN0YW50VmFs
dWUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkpLCBub2RlLT5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIGNlbGwuZ3ByKCks
IG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZENvbnN0YW50VmFsdWUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwuZ3ByKCkp
LCBub2RlLT5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
Y2VsbC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbm9kZS0+Y2Vs
bE9wZXJhbmQoKS0+Y2VsbCgpKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghbm9k
ZS0+Y29uc3RhbnQoKS0+dmFsdWUoKS5pc0NlbGwoKSB8fCAhbm9kZS0+Y29uc3RhbnQoKS0+dmFs
dWUoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwpAQCAtMTA5MzksMTMgKzEwOTM3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDYWxsRE9NKE5vZGUqIG5vZGUpCiAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOwogICAgIHN3aXRjaCAoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUD4oZnVuY3Rpb24uZ2V0KCkpLCBl
eHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVn
c1swXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJh
dGlvbl9HUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgMjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3Bl
cmF0aW9uX0dQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVnc1sxXSk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUFA+KGZ1bmN0aW9u
LmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9H
UFBQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUFA+KGZ1bmN0
aW9uLmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAt
MTA5NjksOSArMTA5NjcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdl
dHRlcihOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGlm
IChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCi0gICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
czxKX0pJVE9wZXJhdGlvbl9HSklQPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXJVSUQobm9kZS0+Y2FsbERPTUdl
dHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlciksIGdldHRlci5leGVjdXRhYmxlQWRkcmVzcygp
KTsKKyAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKSVA+
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlm
aWVyTnVtYmVyKSwgZ2V0dGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSkk+KFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
aWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVy
KSk7CisgICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSkk+
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlm
aWVyTnVtYmVyKSk7CiAKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsICZ2bSgpLnRvcENhbGxGcmFtZSk7CiAgICAgICAgIG1faml0LmVtaXRTdG9yZUNv
ZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKQEAgLTExMTEyLDEwICsx
MTExMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJp
bmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cDFSZWdzKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9
PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
YWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIG9wMVJlZ3MpOwogICAgICAgICB9CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTExMTQyLDEyICsx
MTE0MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJp
bmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICAgICAgc2xvd1BhdGgy
LmxpbmsoJm1faml0KTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBUb1N0
cmluZykKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkg
PT0gU3RyaW5nVmFsdWVPZikKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3Ry
aW5nVmFsdWVPZiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVn
cyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1ZhbHVlT2YsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENhbGxTdHJpbmdDb25z
dHJ1Y3Rvcik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdD
b25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVn
cyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7
CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgaWYg
KGRvbmUuaXNTZXQoKSkKQEAgLTExMjE4LDEwICsxMTIxNiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVP
ZihOb2RlKgogICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3AxR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VG9TdHJpbmdPbkNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMUdQUik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkg
PT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBvcDFHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wMUdQUik7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAgLTExMjc0LDcgKzEx
MjcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9k
ZSogbm9kZSkKICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0Lmdw
cigpKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25GdW5jdGlvblRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jdGlvbi5ncHIoKSkpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkZ1bmN0aW9uVG9T
dHJpbmcsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmN0
aW9uLmdwcigpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CkBA
IC0xMTI4OCw3ICsxMTI4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJU
b1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSogbm9kZSwgaW50CiB7CiAgICAgYXV0
byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBh
dXRvIHZhbHVlUmVnKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICB9OwpAQCAtMTEz
MzMsNyArMTEzMzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXgoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gY2FsbFRvU3RyaW5nID0gWyZdIChh
dXRvIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgYXV0byB2YWx1ZVJlZywgR1BSUmVnIHJh
ZGl4R1BSKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZywgcmFkaXhHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWcsIHJhZGl4R1BSKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgIH07CkBAIC0xMTQzMSw3ICsxMTQyOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2woTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdTeW1ib2xXaXRoU3RyaW5nRGVzY3JpcHRpb24sIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE0NDIsNyArMTE0NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3U3ltYm9sKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJv
bFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
aW5wdXRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNj
cmlwdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRS
ZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KQEAgLTExNTY1LDcgKzExNTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlwZWRB
cnJheVQKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlw
ZSh0eXBlZEFycmF5VHlwZSksCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOworICAgICAgICByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJ1Y3R1cmUsIHNpemVHUFIs
IHN0b3JhZ2VHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAg
LTExNTkwLDEzICsxMTU4OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UmVn
ZXhwKE5vZGUqIG5vZGUpCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxw
dHIpOwogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PFJlZ0V4cE9iamVjdD4ocmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gy
R1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAgICAgVHJ1c3RlZElt
bVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFuZEZsYWdzKCkpKTsKKyAg
ICBtX2ppdC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFuZEZsYWdzKCkp
KTsKICAgICBtX2ppdC5zdG9yZVZhbHVlKGxhc3RJbmRleFJlZ3MsIENDYWxsSGVscGVyczo6QWRk
cmVzcyhyZXN1bHRHUFIsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkpOwogICAg
IG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3UmVnZXhwV2l0aExhc3RJbmRl
eCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnZXhwLCBsYXN0SW5k
ZXhSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRo
LCB0aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdleHAsIGxhc3RJbmRleFJlZ3MpKTsKIAogICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTEyNTIyLDcgKzEyNTE4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKE5vZGUqIG5vZGUs
IFN3aXRjaERhdGEqIGRhdGEsIEdQUlIKIHsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHZhbHVlLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaCk7
CiAgICAgYXV0byBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0Y2gp
OwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMsIG9w
ZXJhdGlvblJlc29sdmVSb3BlLCBzY3JhdGNoLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
dmFsdWUpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0
aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc2NyYXRjaCwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHZhbHVlKSk7CiAgICAgCiAgICAgYWRkQnJhbmNoKAogICAgICAgICBtX2ppdC5i
cmFuY2gzMigKQEAgLTEyNzY0LDcgKzEyNzYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZ09uU3RyaW5nKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEsIEdQUlIK
IAogICAgIGlmICghY2FuRG9CaW5hcnlTd2l0Y2ggfHwgdG90YWxMZW5ndGggPiBPcHRpb25zOjpt
YXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoVG90YWxMZW5ndGgoKSkgewogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywg
c3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihk
YXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmluZyk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRhYmxl
SW5kZXgpLCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgbV9qaXQuZmFySnVtcChzdHJpbmcsIEpTU3dpdGNoUHRyVGFnKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTI4MDEsNyArMTI3OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0
YSwgR1BSUgogICAgIAogICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRj
aFN0cmluZywgc3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmluZyk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YS0+c3dpdGNo
VGFibGVJbmRleCksICZ1bmxpbmtlZFRhYmxlLCBzdHJpbmcpOwogICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1faml0LmZhckp1
bXAoc3RyaW5nLCBKU1N3aXRjaFB0clRhZyk7CkBAIC0xMjk0OCw3ICsxMjk0NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQoTm9kZSogbm9kZSkKICAgICBH
UFJSZWcgYWNjZXNzb3JHUFIgPSBhY2Nlc3Nvci5ncHIoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IFB1dEdldHRlckJ5SWQgPyBvcGVy
YXRpb25QdXRHZXR0ZXJCeUlkIDogb3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51
bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGFjY2Vzc29yR1BSKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1dEdl
dHRlckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
LCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEyOTY2LDcgKzEyOTYy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEdldHRlclNldHRlckJ5SWQoTm9k
ZSogbm9kZSkKICAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0dGVyLmdwcigpOwogCiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRl
ciwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRl
ckdQUiwgc2V0dGVyR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNl
dHRlciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCks
IGdldHRlckdQUiwgc2V0dGVyR1BSKTsKICNlbHNlCiAgICAgLy8gVGhlc2UgSlNWYWx1ZXMgbWF5
IGJlIEpTVW5kZWZpbmVkIE9SIEpTRnVuY3Rpb24qLgogICAgIC8vIEF0IHRoYXQgdGltZSwKQEAg
LTEyOTc4LDcgKzEyOTc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEdldHRl
clNldHRlckJ5SWQoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyBzZXR0ZXJSZWdzID0gc2V0
dGVyLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2Rl
LT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyUmVncy5wYXlsb2FkR1BSKCksIHNldHRlclJl
Z3MucGF5bG9hZEdQUigpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNl
dHRlciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCks
IGdldHRlclJlZ3MucGF5bG9hZEdQUigpLCBzZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSk7CiAjZW5k
aWYKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0xMjk5Miw3ICsxMjk4OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGUoTm9kZSogbm9kZSkKICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZSwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xMzAwNCw3ICsxMzAwMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNE
ZWNsSW5FdmFsKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVl
UmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29s
dmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhv
aXN0aW5nRnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CiB9CkBAIC0xMzAzMiw3ICsxMzAyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkdldER5bmFtaWNWYXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
LCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0RHlu
YW1pY1ZhciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3Bl
R1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1
dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtMTMwNDYsNyArMTMwNDIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogICAgIEpTVmFsdWVS
ZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3Bl
cmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJp
Y3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7
CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50
aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAt
MTMxMTIsNyArMTMxMDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QWNjZXNz
b3JCeVZhbChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBhY2Nlc3NvckdQUiA9IGFjY2Vzc29yLmdw
cigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
biwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHN1YnNjcmlwdFJlZ3MsIG5v
ZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb24sIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBzdWJz
Y3JpcHRSZWdzLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEzMjg5
LDcgKzEzMjg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1JlcGxhY2Uo
Tm9kZSogbm9kZSkKIAogICAgICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVt
cHR5U3RyLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdH
UFIsIHJlZ0V4cEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
dHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIsIHJlc3VsdC5ncHIoKSwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSKTsKICAgICAgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlKQpAQCAt
MTMzMTAsNyArMTMzMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nUmVw
bGFjZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLCByZXN1bHQuZ3ByKCks
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUiwgcmVwbGFj
ZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVJlZ0V4cFN0cmluZywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RyaW5nR1BSLCByZWdFeHBHUFIsIHJlcGxhY2VHUFIpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CiAgICAgICAgIGlmIChzYW1wbGUpCkBAIC0xMzMzMiw3ICsxMzMyOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUqIG5vZGUpCiAKICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljLCByZXN1
bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdSZWdzLCBzZWFyY2hS
ZWdzLCByZXBsYWNlUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90
b0Z1bmNSZXBsYWNlR2VuZXJpYywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3RyaW5nUmVncywgc2VhcmNoUmVncywgcmVwbGFjZVJlZ3MpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwog
ICAgIGlmIChzYW1wbGUpCkBAIC0xMzM1Myw3ICsxMzM0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVSZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3koTm9kZSogbm9kZSkKICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBjYWxsT3BlcmF0aW9u
KAogICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3ksIHJlc3VsdFJl
Z3MsCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3Bl
cmFuZCgpKSwgYXJndW1lbnRHUFIpOworICAgICAgICBnbG9iYWxPYmplY3RHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwo
KSksIGFyZ3VtZW50R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTEzMzczLDcgKzEzMzY5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cE1hdGNoRmFzdEdsb2JhbChOb2RlKiBub2Rl
KQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGNhbGxP
cGVyYXRpb24oCiAgICAgICAgIG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdEdsb2JhbFN0cmluZywg
cmVzdWx0UmVncywKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBUcnVzdGVkSW1tUHRyKG5vZGUt
PmNlbGxPcGVyYW5kKCkpLCBhcmd1bWVudEdQUik7CisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQo
KS0+Y2VsbCgpKSwgYXJndW1lbnRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtMTM1NTcsNyArMTM1NTMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUq
IG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5
U3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEz
NTc0LDcgKzEzNTcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQ
cm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmlu
ZURhdGFQcm9wZXJ0eVN0cmluZ0lkZW50LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZUdQUiwgaWRlbnRHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudEdQUiwgdmFsdWVSZWdzLCBhdHRy
aWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMTM1ODYsNyArMTM1ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVu
KG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9s
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZh
bHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNTk3LDcgKzEzNTkzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAg
ICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBhdHRyaWJ1
dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVy
dHksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3Ms
IHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNjM4LDcgKzEzNjM0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkoTm9kZSogbm9kZSkK
ICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3Ry
aW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdl
dHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BS
LCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQpAQCAtMTM2NTUsNyArMTM2NTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1
c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50R1BSLCBnZXR0ZXJHUFIs
IHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRy
aWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMTM2NjcsNyArMTM2NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGls
ZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJH
UFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmlu
ZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC0xMzY3OCw3ICsxMzY3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZp
bmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIHByb3BlcnR5UmVncywgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVy
dHksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3Ms
IGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM4MTAsNyArMTM4MDYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0TWFwQnVja2V0TmV4dChOb2RlKiBu
b2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+YnVja2V0T3duZXJUeXBlKCkgPT0gQnVja2V0T3du
ZXJUeXBlOjpTZXQpOwogICAgICAgICBzZW50aW5lbCA9IHZtKCkuc2VudGluZWxTZXRCdWNrZXQo
KTsKICAgICB9Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBzZW50aW5lbCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2Vk
Q29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgc2Vu
dGluZWwpLCByZXN1bHRHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQpOwogCiAgICAgY2VsbFJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTM4NzIsNyArMTM4NjgsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVGhyb3coTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0g
dmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVGhyb3dERkcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dERkcsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTM4
ODQsNyArMTM4ODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVGhyb3dTdGF0aWNF
cnJvcihOb2RlKiBub2RlKQogICAgIEdQUlJlZyBtZXNzYWdlR1BSID0gbWVzc2FnZS5ncHIoKTsK
ICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG1lc3NhZ2VHUFIpOwogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YXRpY0Vy
cm9yLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWVzc2FnZUdQUiwgbm9kZS0+ZXJyb3JU
eXBlKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvciwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1lc3NhZ2VHUFIsIG5vZGUtPmVycm9yVHlwZSgp
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1faml0LmJyZWFrcG9pbnQoKTsK
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEzOTc0LDcgKzEzOTcwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlKE5vZGUqIG5v
ZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlSW5k
ZXhBbmRNb2RlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
Z3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BS
LCBlbnVtZXJhdG9yR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC0xNDA0NywxMiArMTQwNDMsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlO
YW1lKE5vZGUqIG5vZGUpCiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsK
IAogICAgICAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0oKS5zbWFsbFN0cmluZ3Muc2Vu
dGluZWxTdHJpbmcoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENv
bnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHZtKCkuc21hbGxT
dHJpbmdzLnNlbnRpbmVsU3RyaW5nKCkpLCByZXN1bHRHUFIpOwogICAgICAgICBkb25lQ2FzZXMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIG9wZXJhdGlvbkNhbGwubGluaygmbV9qaXQp
OwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRh
dGVQcm9wZXJ0eU5hbWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlu
ZGV4LCBtb2RlLCBlbnVtZXJhdG9yKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1l
cmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBpbmRleCwgbW9kZSwgZW51bWVyYXRvcik7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CkBAIC0xNDA5Niw5ICsx
NDA5Miw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9ySGFzUHJvcGVy
dHkoTm9kZSogbm9kZSwgU2xvd1BhdGhGdW5jdGlvblR5CiAgICAgICAgIG9wZXJhdGlvbkNhc2Vz
LmxpbmsoJm1faml0KTsKIAogICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxp
ZEdQUlJlZykKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBt
b2RlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BS
LCBtb2RlR1BSKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzbG93
UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZ3MsIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eU5hbWVSZWdzLCBpbmRleEdQUiwg
bW9kZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CkBAIC0xNDIwMCw3ICsxNDE5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSogbm9kZSkKIAogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMs
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3Ms
IHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAg
ICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZh
bHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTQyODEsNyAr
MTQyNzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJh
dG9yKE5vZGUqIG5vZGUpCiAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBDZWxsT3JPdGhlclVzZSkgewogICAgICAgICAgICAgYXV0byBub3RPdGhlciA9IG1faml0LmJy
YW5jaElmTm90T3RoZXIoYmFzZVJlZ3MsIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0oKS5lbXB0eVByb3Bl
cnR5TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAgICAgIG1faml0Lmxv
YWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IHZtKCkuZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpLCBzY3JhdGNoMUdQUik7CiAgICAg
ICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBub3RP
dGhlci5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTE0MzM5LDcgKzE0MzM1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2Rl
KQogCiAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgc2NyYXRjaDFHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKQEAgLTE0MzU0LDcgKzE0MzUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9w
ZXJ0eUVudW1lcmF0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRv
ciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogfQpAQCAtMTQ0NDMsOSArMTQ0MzksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyQ2F0KE5vZGUqIG5vZGUpCiAKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMVJlZ3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMVJlZ3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOwogICAgIGVsc2UKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cDFSZWdzLCBvcDJSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2Vs
bFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMTQ1MTUsNyArMTQ1MTEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAg
IGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1f
aml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkp
LCBzdHJ1Y3R1cmVHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0cik7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiB9CkBAIC0xNDU0Myw3ICsxNDUzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlw
ZWRBcnJheVdpdGhPbmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0g
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVy
ZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7Cisg
ICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2pp
dC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ1NzgsNyArMTQ1NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0
aW9uVG9UaGlzU3RyaWN0OwogICAgIGVsc2UKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25U
b1RoaXM7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgZnVuY3Rpb24sIHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhp
c1ZhbHVlUmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIGZ1bmN0aW9uLCB0ZW1wUmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHRoaXNWYWx1ZVJlZ3MpKTsKIAogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5v
ZGUpOwogfQpAQCAtMTQ2MjgsNyArMTQ2MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogCiAg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0J1dEFycmF5
QnVmZmVyQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHRHUFIsICZ2
bSgpLCBhcnJheVN0cnVjdHVyZSwgc2NyYXRjaDNHUFIpKTsKIAotICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9
PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVj
dEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9iamVjdEdQUikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8g
b3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5
TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9i
amVjdEdQUikpOwogCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTE0NjQzLDcgKzE0NjM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSog
bm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9w
ZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5h
bWVzT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9w
ZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5h
bWVzT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmpl
Y3RHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTE0NjU4LDcgKzE0NjU0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMo
Tm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5
cyA/IG9wZXJhdGlvbk9iamVjdEtleXMgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5h
bWVzLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RSZWdzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRp
b25PYmplY3RLZXlzIDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0UmVncyk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwpAQCAtMTQ2ODUsNyArMTQ2ODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0QXNzaWduKE5vZGUqIG5vZGUpCiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2Rl
LT5jaGlsZDIoKSwgc291cmNlR1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEFzc2lnbk9iamVjdCwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlR1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25PYmplY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB0YXJnZXRHUFIsIHNvdXJjZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDY5OCw3ICsxNDY5NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSogbm9kZSkK
ICAgICAgICAgSlNWYWx1ZVJlZ3Mgc291cmNlUmVncyA9IHNvdXJjZS5qc1ZhbHVlUmVncygpOwog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uT2JqZWN0QXNzaWduVW50eXBlZCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdl
dEdQUiwgc291cmNlUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0
QXNzaWduVW50eXBlZCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwg
c291cmNlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
bm9SZXN1bHQobm9kZSk7CkBAIC0xNDcyMyw3ICsxNDcxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgcHJvdG90eXBlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25PYmplY3RDcmVhdGVPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHByb3RvdHlwZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3MzgsNyArMTQ3MzQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGUsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZVJlZ3MpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3
OTAsNyArMTQ3ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyhO
b2RlKiBub2RlKQogICAgIG1faml0LmVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRH
UFIsIGlubGluZUNhcGFjaXR5R1BSKTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0oKSk7CiAK
LSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGNhbGxlZUdQUiwgbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2FsbGVlR1BSLCBub2Rl
LT5pbmxpbmVDYXBhY2l0eSgpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiB9CkBAIC0xNDgyNyw3ICsxNDgyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuZW1pdE5vbk51bGxEZWNvZGVTdHJ1
Y3R1cmVJRChzdHJ1Y3R1cmVHUFIsIHN0cnVjdHVyZUdQUik7CiAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBKU0ludGVybmFsUHJvbWlzZTo6
aW5mbygpIDogSlNQcm9taXNlOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFH
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQu
bG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQu
Z3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSkpOwogCiAgICAgZmFzdFByb21pc2VQYXRoLmxpbmsoJm1faml0KTsKQEAgLTE0
ODQwLDcgKzE0ODM2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21p
c2UoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgp
LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJ
bXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9t
aXNlOjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5j
ZShtX2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChz
bG93Q2FzZXMsIHRoaXMsIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25DcmVh
dGVJbnRlcm5hbFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9taXNlLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGNh
bGxlZUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25DcmVhdGVJbnRl
cm5hbFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9taXNlLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGNhbGxl
ZUdQUikpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTQ4NzYs
NyArMTQ4NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxG
aWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcgogICAgIG1faml0LmVtaXROb25O
dWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0NsYXNzOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVj
dHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7
CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNj
cmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVk
SW1tUHRyKG51bGxwdHIpOwpAQCAtMTQ4ODcsNyArMTQ4ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRp
b24gb3BlcgogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShpbml0aWFsVmFsdWVzW2lu
ZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAgICAgbV9qaXQubXV0
YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGNhbGxlZUdQUikp
OworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2pp
dC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1MDExLDcgKzE1MDA3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiAgICAgYWxyZWFkeVByaW1p
dGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3Ms
IHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5v
dFByaW1pdGl2ZSwgdGhpcywgb3BlcmF0aW9uVG9QcmltaXRpdmUsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlzLCBvcGVyYXRpb25Ub1ByaW1p
dGl2ZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50
UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CkBAIC0xNTAzNSw3ICsxNTAzMSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Byb3BlcnR5S2V5KE5vZGUqIG5vZGUp
CiAgICAgYWxyZWFkeVByb3BlcnR5S2V5LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFs
dWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uVG9Qcm9wZXJ0eUtleSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlLCBEYXRhRm9ybWF0SlNDZWxsLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
fQpAQCAtMTUwNjUsNyArMTUwNjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9O
dW1lcmljKE5vZGUqIG5vZGUpCiAgICAgaXNIZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBt
X2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25U
b051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVu
dFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKIH0KQEAgLTE1MTAwLDcgKzE1MDk2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxOdW1iZXJDb25zdHJ1Y3RvcihOb2RlKiBub2Rl
KQogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCB0ZW1wR1BSKSk7CiAg
ICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwotICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwog
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTE1MTQ3LDcgKzE1
MTQzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWls
KE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBzY29wZVJlZyA9IHNjb3BlLmdwcigpOwogCi0gICAgbV9q
aXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQoc2hhZG93UGFja2V0UmVnLCB0aGlzUmVncywg
c2NvcGVSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKSks
IGNhbGxTaXRlSW5kZXgpOworICAgIG1faml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgc2NyYXRjaDFSZWcpOworICAgIG1faml0LmxvZ1No
YWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tldFJlZywgdGhpc1JlZ3MsIHNjb3BlUmVn
LCBzY3JhdGNoMVJlZywgY2FsbFNpdGVJbmRleCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
QEAgLTE1MTY2LDcgKzE1MTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEFk
ZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFzaEdQUik7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFzaEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNTE4OCw3
ICsxNTE4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXBTZXQoTm9kZSogbm9k
ZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTWFwU2V0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIHZhbHVlUmVncywgaGFzaEdQUik7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25NYXBTZXQsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG1hcEdQUiwga2V5UmVncywgdmFsdWVSZWdzLCBoYXNoR1BSKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
QEAgLTE1NDA3LDcgKzE1NDA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
b3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90eXBlKHZtKCksIG9iamVjdEdQUiwg
cmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBlT2ZPYmplY3Qs
Ci0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2Jq
ZWN0R1BSKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU0MjQsNyArMTU0MjEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9kZSkKIAogICAgICAg
ICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCB2YWx1ZUdQUiwgcmVzdWx0UmVncywgc2xv
d0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsCi0gICAgICAgICAgICByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgICAg
ICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKSk7
CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTU1NTEsNyArMTU1NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKLSAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwKKyAgICAgICAgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwKICAgICAgICAg
c3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2Ug
PyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFn
ZSkpIDogc3RydWN0dXJlLAogICAgICAgICBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CkBAIC0xNTY4
NCw3ICsxNTY4MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25fR0NaIHNsCiAgICAgfQogICAgIH0KIAot
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIHNs
b3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBpbmRleEdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQUikpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdENhdGNoTG9jYWwoTm9kZSogbm9kZSkKQEAgLTE1
ODA0LDExICsxNTgwMSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJ
Q0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBO
b1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywKICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCiAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KIApA
QCAtMTU4MzcsNyArMTU4MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1
ZU5vblBlZXBob2xlQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcgogICAgICAgICBh
cmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVu
Y3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdz
LCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
dW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CkBAIC0xNTg1OCw3ICsxNTg1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1i
bGVyCiAgICAgbV9qaXQuY29tcGFyZTMyKGNvbmQsIGFyZzFSZWdzLnBheWxvYWRHUFIoKSwgYXJn
MlJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRHUFIpOwogCiAgICAgaWYgKCFpc0tub3duSW50ZWdl
cihub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8ICFpc0tub3duSW50ZWdlcihub2RlLT5jaGlsZDIo
KS5ub2RlKCkpKQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d1BhdGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBoZWxwZXJGdW5jdGlvbiwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKSk7
CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KQEAgLTE1ODk4LDcgKzE1ODk1LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVQZWVwaG9sZUJyYW5jaChOb2RlKiBub2RlLCBOb2Rl
KiBicmFuY2hOb2RlLAogICAgICAgICBhcmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKICAgICAgICAgYnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24s
IHJlc3VsdEdQUiwgdGFrZW4pOwpAQCAtMTU5MjIsNyArMTU5MTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpnZW5lcmljSlNWYWx1ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJy
YW5jaE5vZGUsCiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAKICAgICAgICAg
ICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbiho
ZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTE1OTYyLDcgKzE1
OTU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShO
b2RlKiBub2RlKQogICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZtX2ppdCk7CiAKICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAg
IGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTYxMTUsNyArMTYxMTIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gaXNOb25FbXB0
eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGFsbG9j
YXRvckdQUik7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
aml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcobV9qaXQuZ3JhcGgoKS5tX3ZtKSksIHJlc3VsdEdQ
Uik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyhtX2ppdC5ncmFwaCgpLm1fdm0p
KSwgcmVzdWx0R1BSKTsKIAogICAgIGlzTm9uRW1wdHlTdHJpbmcubGluaygmbV9qaXQpOwogICAg
IG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKQEAgLTE2MTIzLDExICsxNjEyMCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAgICBzd2l0Y2gg
KG51bU9wR1BScykgewogICAgIGNhc2UgMjoKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VS
b3BlMiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBv
cEdQUnNbMV0pKTsKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25NYWtlUm9w
ZTIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwg
b3BHUFJzWzFdKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMs
IG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSkpOworICAgICAgICAgICAgc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSkpOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTYxNDEsMTEgKzE2MTM4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgc3dpdGNoIChudW1PcEdQUnMpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25NYWtlUm9wZTMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wR1BSc1swXSwgb3BHUFJzWzFdLCBvcEdQUnNbMl0pOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xNjI0OCw5
ICsxNjI0NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlW
YWwoTm9kZSogbm9kZSkKIAogICAgICAgICBpZiAoIXJlY292ZXJHZW5lcmljQ2FzZS5lbXB0eSgp
KSB7CiAgICAgICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxpZEdQUlJlZykK
LSAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3Zl
ckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRC
eVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIGluZGV4R1BSLCBlbnVtZXJhdG9y
R1BSKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1l
QW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBpbmRleEdQUiwg
ZW51bWVyYXRvckdQUikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9w
ZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BS
KSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHJl
Y292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5k
R2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
UmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKICAgICAgICAgfQogCiAgICAgICAgIGRv
bmVDYXNlcy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKaW5kZXggNjk1MzQ1NTc5OWU1OGQ2MmU5YzlmZTNlNDY2NjNhOWVkYmRi
MmE0NC4uNmYzYmQ5MzFmOTMyYmI0MWY5OWViOWYxZGU0ZmEwMmE3YzI0ZTkyZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtOTc0LDE2ICs5
NzQsMTUgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBhcHBlbmRDYWxsKENDYWxs
SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCkpOwog
ICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1l
Um9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIENvZGVCbG9j
ayogY29kZUJsb2NrKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIEdQ
UlJlZyBjb2RlQmxvY2tHUFIpCiAgICAgewotICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29k
ZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4KLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8
Vl9KSVRPcGVyYXRpb25fQ2I+KFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8dm9pZCo+KGNvZGVC
bG9jaykpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Vl9KSVRPcGVyYXRpb25fQ2I+
KGNvZGVCbG9ja0dQUik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJv
bGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uKTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oWl9KSVRP
cGVyYXRpb25fRyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKFpfSklUT3BlcmF0aW9uX0cgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHM8Wl9KSVRPcGVyYXRpb25fRz4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPFpf
SklUT3BlcmF0aW9uX0c+KGdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGE5MTJlYjU5OGI5ODIyYTM1OTZhMWMxOGNlMWU2
MjNlOGFhYTY4MTEuLmMyNzI5ZDlkMDA1ZGE0YTc2ZjliZjg3ZDhiOGIwMmVmMGM3ZDIyMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cApAQCAtMTc4LDEyICsxNzgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGFwcHJv
cHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKICAgICAgICAgICAgIHNwaWxs
TW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSks
CiAgICAgICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNr
TmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4s
IHNsb3dQYXRoLmdldCgpKTsKQEAgLTIxNSwxMiArMjE1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWRXaXRoVGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBi
YXNlR1BSCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKICAgICAgICAgICAg
IERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIs
IHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRp
Zmllci5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNPcHRpbWl6ZSwKICAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1
aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0K
ICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW4KIAogICAgICAgICBH
UFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5n
cHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5s
b2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5n
cmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5lbWl0
TG9hZFN0cnVjdHVyZSh2bSgpLCBhcmdHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9i
amVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29t
cGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGxPclVuZGVmaW5lZChF
ZGdlIG9wZXJhbmQsIE4KIAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBs
b2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVj
dEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxP
YmplY3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmpl
Y3RHUFIpOwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBhcmdHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9i
YWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgdGFrZW4pOwpAQCAtNDUyLDcgKzQ1
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RF
cShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIGJyYW5jaDY0KEpJVENvbXBp
bGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7
CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIApAQCAtNTAzLDcgKzUwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hO
b2RlCiAKICAgICAgICAganVtcChpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuLCBGb3JjZUp1bXAp
OwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENh
c2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpKTsKKyAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29t
cGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAg
ICAgfQogCkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pT
VmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAg
ICBub3RFcXVhbENhc2UubGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCkBAIC01OTcs
NyArNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogCiAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoMCksIHJlc3VsdEdQUik7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3Mp
KTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywg
dGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwogCkBAIC03MzQsNyArNzM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNl
KHZtKCksIG1faml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3Jh
dGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nh
c2UpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
ICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCkpOwogICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJl
YXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgo
KSwgbm9kZSwgaXNGbHVzaGVkKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSaWdo
dCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxl
IGlzIGZsdXNoZWQuCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFt
ZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJndW1lbnRzR1BSLCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJB
cmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVG
b3JWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZ3VtZW50c0dQUiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFy
QXJnT2Zmc2V0KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0
aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCkBA
IC03NzMsNyArNzczLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUobV9qaXQsIEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCBmYWxzZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAg
IG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9m
KHZvaWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0
dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RWYXJBcmdP
ZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwg
ZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIo
VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICB9CkBA
IC05MTAsNyArOTEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZSkKICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICBtX2ppdC5zdWJQdHIo
VHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwp
PihKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJu
YWxDYWxsKCk7CiAgICAgICAgIG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMTAwNSw3ICsxMDA1LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0
LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIg
d2UgbW92ZWQgY2FsbGVlR1BSIHRvIHJlZ1QwCiAgICAgfQogCisgICAgLy8gRklYTUUKICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVj
dCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxPYmplY3QgbmVlZHMgdG8gYmUgaW4gcmVn
VDMKKyAgICAvLyBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7IC8vIEpTR2xv
YmFsT2JqZWN0IG5lZWRzIHRvIGJlIGluIHJlZ1QzCiAgICAgY2FsbExpbmtJbmZvLT5lbWl0U2xv
d1BhdGgodm0oKSwgbV9qaXQpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xODkwLDcg
KzE4OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUq
IG5vZGUpCiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwg
cmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxs
KCkpLCByZXN1bHRHUFIpOwogICAgIG1faml0LmNvbXBhcmU2NChNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHZhbHVlR1BSLCByZXN1bHRHUFIsIHJlc3VsdEdQUik7CiAgICAgdW5ibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMjE3OSw4ICsyMTgxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2goRWRnZSBub2RlVXNlLCBCYXNpY0Jsb2Nr
KiB0YWtlbiwgQmFzaWNCbG8KICAgICAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCkgewogICAgICAgICAgICAgYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NP
ZmZzZXQoKSksIFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgdGFrZW4pOwog
ICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHRlbXAx
R1BSKTsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5n
cmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwot
ICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5n
cmFwaCgpLCBnbG9iYWxPYmplY3QpLCB0ZW1wMkdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2Fk
VW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFw
aCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgdGVtcDJHUFIpOwogICAgICAgICAgICAgYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcDFHUFIsIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCB0ZW1wMkdQUiwgdGFrZW4pOwogICAgICAgICAgICAg
anVtcChub3RUYWtlbiwgRm9yY2VKdW1wKTsKICAgICAgICAgfSBlbHNlCkBAIC0yMzc4LDcgKzIz
NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwg
Y29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgICAgIHNpbGVudFNw
aWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25H
ZXRCeVZhbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHByb3BlcnR5R1BSKTsKICAgICAgICAgICAgIGlmIChjYW5Vc2VGbHVzaCA9PSBDYW5Vc2VG
bHVzaDo6Tm8pCiAgICAgICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTI0MzQsMTEgKzI0MzUsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNj
b3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUs
Ci0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlR1BSLCBw
cm9wZXJ0eUdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdl
dEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgICAgIH0KIAogICAgICAgICBt
X2ppdC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1MTMsNyArMjUxNCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcs
IHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0K
IAogCkBAIC0yNjA1LDcgKzI2MDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFs
T2JqZWN0SW50LAotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLmdwcigpLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0UmVncy5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MuZ3ByKCksIG5vZGUpOwogICAgICAgICB9CiAKQEAgLTI2NjMsNyArMjY2NCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29w
ZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHRSZWcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
UmVnLCBwcm9wZXJ0eVJlZykpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVnLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yNzkyLDggKzI3OTMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZShOb2RlKiBub2RlKQogI2lmIENQVShYODZf
NjQpCiAgICAgICAgIGlmIChpbmxpbmVDb2RlU3RhdHM4Qml0Lm5lZWRzVGVtcDIoKSkgewogICAg
ICAgICAgICAgLy8gU2luY2Ugd2UgcmV1c2VkIGdsb2JhbE9iamVjdEdQUiBmb3IgdGVtcDIsIGxl
dCdzIHJlc3RvcmUgdGhlIGdsb2JhbCBvYmplY3QuCi0gICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0Q29uc3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihub2RlLT5jZWxs
T3BlcmFuZCgpLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdENvbnN0KSwgZ2xvYmFsT2JqZWN0R1BSKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgfQogI2VuZGlmCiAK
QEAgLTM1NDgsNyArMzU0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKIAogICAgICAgICBpZiAoIXN0b3JhZ2VFZGdlKSB7CiAgICAgICAgICAgICBhdXRvIGNh
bGxTbG93UGF0aCA9IFsmXSAoKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBnbG9iYWxPYmplY3RJ
bW1QdHIgPSBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGdsb2JhbE9iamVjdEltbVB0ciA9IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOwogICAg
ICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2Ug
QXRvbWljc0FkZDoKICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25B
dG9taWNzQWRkLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhH
UFIsIGFyZ0dQUnNbMF0pOwpAQCAtMzc1Nyw3ICszNzU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkF0b21pY3NJc0xvY2tGcmVlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXRvbWljc0lzTG9ja0ZyZWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9wZXJhbmRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzg5OSw3ICszODk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHZhbHVlR1BSKSk7CiAg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJh
eVBvcEFuZFJlY292ZXJMZW5ndGgsIHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUikpOworICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0
aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoLCB2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2Ug
Y2FuJ3Qga25vdyBmb3Igc3VyZSB0aGF0IHRoZSByZXN1bHQgaXMgYW4gaW50IGJlY2F1c2Ugb2Yg
dGhlIHNsb3cgcGF0aHMuIDotLwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1ZUdQUiwg
bm9kZSk7CkBAIC0zOTMyLDcgKzM5MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
CiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wLCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25BcnJheVBvcCwgdmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVHUFIs
IG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MDU4LDcgKzQwNTgsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIEluc3RlYWQgb2Yg
dGhlIHNsb3cgcGF0aCBnZW5lcmF0b3IsIHdlIGVtaXQgY2FsbE9wZXJhdGlvbiBoZXJlLgogICAg
ICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNC
eXRlY29kZU51bWJlcikpIHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90
TnVtYmVyID0gbV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRHUFIpOwpAQCAtNDA2Nyw3
ICs0MDY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAg
ICAgICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOwogICAgICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVG9OdW1iZXIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
Z3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIs
IHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsK
ICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTQ1NDMsNyArNDU0Myw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFs
dWUuZ3ByKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhU
aGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVy
YXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJv
cGVydHlHUFIsIHZhbHVlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQ2ODEsNyArNDY4MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxP
YmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9i
YWxPYmplY3RHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZS5ncHIoKSwgcmVz
dWx0LmdwcigpKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSKTsgCiAgICAgICAgICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBp
bGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwg
cmVzdWx0LmdwcigpKTsKQEAgLTQ4ODYsNyArNDg4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgc2xvd1BhdGgubGluaygmbV9qaXQp
OwogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKICAgICAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKQEAgLTQ5MzEsNyArNDkzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKIAogICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
SlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25N
YXBIYXNoLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVl
UmVncyhpbnB1dEdQUikpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTUwNzksOSArNTA3OSw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRo
Q2FzZXMubGluaygmbV9qaXQpOwogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMo
aW5kZXhHUFIpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBN
YXBPYmplY3RVc2UpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01h
cEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQ
Uiwga2V5R1BSLCBoYXNoR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkpTTWFwRmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7
CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQs
IHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5R1BS
LCBoYXNoR1BSKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBkb25lLmFwcGVuZCht
X2ppdC5qdW1wKCkpOwpAQCAtNTM5NCw3ICs1Mzk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAg
ICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBrZXlHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkhhc093blByb3BlcnR5LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvYmplY3RHUFIsIGtleUdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IDBjNGQxOTVkOTE0ODU3MjI5Mzg0ZTk4NDhk
MTc5OTRkYTM5NDEyNmQuLmIwMTk5OWE1ZWFlYTk5MjE2MDkyMTI1NzU1NTUyNjhhNzdhODFhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIApAQCAtMTQxLDYgKzE0Miw3IEBAIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYg
dm0pCiAgICAgcHRyZGlmZl90IG9mZnNldE9mRnJhbWVTaXplID0gMDsgLy8gVGhpcyBpcyB0aGUg
REZHIGZyYW1lIGNvdW50LgogICAgIHB0cmRpZmZfdCBvZmZzZXRPZlRhcmdldFBDID0gb2Zmc2V0
T2ZGcmFtZVNpemUgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwogICAgIHB0cmRpZmZfdCBvZmZz
ZXRPZlBheWxvYWQgPSBvZmZzZXRPZlRhcmdldFBDICsgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsK
KyAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZDb2RlQmxvY2sgPSBvZmZzZXRPZlBheWxvYWQgKyBzaXpl
b2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrOwogICAgIHB0cmRpZmZfdCBv
ZmZzZXRPZkxvY2FscyA9IG9mZnNldE9mUGF5bG9hZCArIHNpemVvZihSZWdpc3RlcikgKiBDYWxs
RnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVyczsKICAgICAKICAgICBqaXQubW92ZShHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUjIsIEdQUkluZm86OnJlZ1QwKTsKQEAgLTE2Miw4ICsxNjQsMjEgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJh
dG9yKFZNJiB2bSkKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVu
dHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZDb2Rl
QmxvY2spLCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRl
cihHUFJJbmZvOjpyZWdUMiwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIGppdC5wcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7Cisg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVC
bG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
Y29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgaml0LnJlc3Rv
cmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlG
cmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisjaWYg
VVNFKEpTVkFMVUU2NCkKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6cmVnVDIsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBHUFJJbmZvOjpjb25z
dGFudHNSZWdpc3Rlcik7CisjZW5kaWYKIAogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1Qx
LCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCAwMjRkZGYwYWY2NzcyYjg1Y2Y0NjQ5ZTli
YWIyNGZjNDg2NDBlNTk2Li4xYjY0MzM0YTE3ZWRlMjIwNmUxMWE1ZGYxMmM1MzY5MjQ2YWYzMjRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBA
IC0xMzc0LDYgKzEzNzQsMjIgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlT3JDb3B5
TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUIKICAgICBzcG9vbGVy
LmZpbmFsaXplR1BSKCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0Q29kZUJs
b2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCwgYm9vbCBpc0NvbnN0cnVjdG9yKQor
eworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZz
ZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCByZXN1bHQpOworICAgIGF1dG8gaGFzRXhlY3V0
YWJsZSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVzdWx0LCBUcnVzdGVkSW1tMzIoSlNGdW5jdGlv
bjo6cmFyZURhdGFUYWcpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvblJh
cmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSwg
cmVzdWx0KTsKKyAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7CisgICAgaWYgKGlzQ29uc3Ry
dWN0b3IpCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSksIHJlc3VsdCk7CisgICAgZWxzZQor
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNl
dE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0KTsKKworICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om9mZnNldE9mQ29kZUJsb2NrKCkpLCBy
ZXN1bHQpOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQsIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmlu
ZGV4IDI3ZGQ1OTc5MGI3MWY5OGEyMTdiMTI1ODc3Njc3MTY1YWM2OGVlMGMuLjM3NGJhN2NhMzYx
OTIwZWNjOGNjY2YyNjk1YzYxN2I3MmE3NzQ4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDA1LDYgKzQwNSw4IEBAIGNsYXNzIEFzc2VtYmx5
SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKICAgICB9CiAKKyAgICB2
b2lkIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0LCBib29s
IGlzQ29uc3RydWN0b3IpOworCiAjaWYgQ1BVKFg4Nl82NCkKICAgICBzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2ODdlZmRiMDBlYWM3ZDE4NTllNjk3MTUz
OWRmMGFhNWVkMzk4YTc1Li5hNjUyNWY2MGIzMDg1YzI2NzQ1ZmIyY2U3NTEzNzRmZTI1N2I5MmQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTY5LDYgKzY5
LDEwIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAg
ICAgICBHUFJSZWcgbV9ncHI7CiAgICAgfTsKIAorICAgIC8vIEJhc2UgY2xhc3MgZm9yIGNvbnN0
YW50IG1hdGVyaWFsaXplcnMuCisgICAgLy8gSXQgb2ZmZXJzIERlcml2ZWRDbGFzczo6bWF0ZXJp
YWxpemUgYW5kIHBva2UgZnVuY3Rpb25zLgorICAgIGNsYXNzIENvbnN0YW50TWF0ZXJpYWxpemVy
IHsgfTsKKwogICAgIC8vIFRoZSBtb3N0IGdlbmVyYWwgaGVscGVyIGZvciBzZXR0aW5nIGFyZ3Vt
ZW50cyB0aGF0IGZpdCBpbiBhIEdQUiwgaWYgeW91IGNhbiBjb21wdXRlIGVhY2gKICAgICAvLyBh
cmd1bWVudCB3aXRob3V0IHVzaW5nIGFueSBhcmd1bWVudCByZWdpc3RlcnMuIFlvdSB1c3VhbGx5
IHdhbnQgb25lIG9mIHRoZSBzZXR1cEFyZ3VtZW50cyooKQogICAgIC8vIG1ldGhvZHMgYmVsb3cg
aW5zdGVhZCBvZiB0aGlzLiBUaGlzIHRoaW5nIGlzIG1vc3QgdXNlZnVsIGlmIHlvdSBoYXZlICph
IGxvdCogb2YgYXJndW1lbnRzLgpAQCAtMzY1LDcgKzM2OSwxMCBAQCBjbGFzcyBDQ2FsbEhlbHBl
cnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9r
ZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVu
c2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNp
Z25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9r
ZSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zm
c2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJj
ZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZShh
cmcsIHBva2VPZmZzZXQpOworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92
PENvbnN0YW50TWF0ZXJpYWxpemVyLCBBcmdUeXBlPikKKyAgICAgICAgICAgIGFyZy5wb2tlKCp0
aGlzLCBhZGRyZXNzRm9yUG9rZShwb2tlT2Zmc2V0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3Vy
cmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJh
R1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQpAQCAtNjQ3
LDYgKzY1NCwyNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJz
IHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJl
Z3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWdu
ZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291
cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVu
c2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz
X2Jhc2Vfb2ZfdjxDb25zdGFudE1hdGVyaWFsaXplciwgQXJnPj4KKyAgICBzZXR1cEFyZ3VtZW50
c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdz
LCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BS
cywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAg
eworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PENVUlJFTlRf
QVJHVU1FTlRfVFlQRT46OnZhbHVlLCAiV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRz
L2RvdWJsZXMgaW4gc2V0dXBBcmd1bWVudHMiKTsKKyAgICAgICAgYXV0byBudW1BcmdSZWdpc3Rl
cnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworI2lmIE9TKFdJTkRPV1Mp
ICYmIENQVShYODZfNjQpCisgICAgICAgIGF1dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJn
cyArIG51bUZQUkFyZ3MgKyAoc3RkOjppc19zYW1lPFJFU1VMVF9UWVBFLCBTbG93UGF0aFJldHVy
blR5cGU+Ojp2YWx1ZSA/IDEgOiAwKTsKKyNlbHNlCisgICAgICAgIGF1dG8gY3VycmVudEFyZ0Nv
dW50ID0gbnVtR1BSQXJncyArIGV4dHJhR1BSQXJnczsKKyNlbmRpZgorICAgICAgICBpZiAoY3Vy
cmVudEFyZ0NvdW50IDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBzZXR1cEFyZ3Vt
ZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4u
Lik7CisgICAgICAgICAgICBhcmcubWF0ZXJpYWxpemUoKnRoaXMsIEdQUkluZm86OnRvQXJndW1l
bnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFy
Z3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2Up
OworICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVn
cy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CisgICAgfQorCiAjdW5kZWYgQ1VSUkVOVF9BUkdVTUVO
VF9UWVBFCiAjdW5kZWYgUkVTVUxUX1RZUEUKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAppbmRleCAwMDIyYmQ5Yjk4NTk1YTgzMGMxZWUwOTU2ZjgxMDgzZWQ0NzgxZTg2Li42N2U0N2Iz
YzZjNmY2MGZiMDE1OGZhYzhmMTllNzAyZWRhN2UxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaApAQCAtNDIwLDEzICs0MjAsMTQgQEAgY2xhc3MgR1BSSW5mbyB7CiBjbGFzcyBH
UFJJbmZvIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDExOworICAgIHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAxMDsKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTOwogCiAgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRo
ZSBiYXNlbGluZSBKSVQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVn
aXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBu
dW1iZXJUYWdSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OwogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG5vdENlbGxNYXNrUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBjb25zdGFudHNSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6
cjEzOwogCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNDUwLDE2ICs0NTEsMTYgQEAg
Y2xhc3MgR1BSSW5mbyB7CiAKICNpZiAhT1MoV0lORE9XUykKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzEgPSBYODZSZWdpc3RlcnM6OnIxMjsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsgLy8gY29uc3RhbnRzUmVnaXN0ZXIK
KyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxNDsg
Ly8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQg
PSBYODZSZWdpc3RlcnM6OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdpc3RlcgogI2Vsc2UKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBYODZSZWdpc3RlcnM6OmVzaTsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OmVkaTsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxMjsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxMzsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBYODZSZWdpc3RlcnM6OnIxNDsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxMzsgLy8gY29u
c3RhbnRzUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBYODZS
ZWdpc3RlcnM6OnIxNDsgLy8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzYgPSBYODZSZWdpc3RlcnM6OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdpc3Rl
cgogI2VuZGlmCiAKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9y
IHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgpA
QCAtNDk3LDkgKzQ5OCw5IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHsKICAgICAgICAgQVNTRVJU
KGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwogI2lmICFPUyhXSU5ET1dTKQotICAgICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0g
eyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcs
IHJlZ0NTMCwgcmVnQ1MxLCByZWdDUzIgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdU
MiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdDUzAsIHJlZ0NTMSB9Owog
I2Vsc2UKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJl
ck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdU
NSwgcmVnQ1MwLCByZWdDUzEsIHJlZ0NTMiwgcmVnQ1MzLCByZWdDUzQgfTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsg
cmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnQ1MwLCByZWdDUzEs
IHJlZ0NTMiwgcmVnQ1MzIH07CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5k
ZXhbaW5kZXhdOwogICAgIH0KQEAgLTYzNCw2ICs2MzUsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTTY0UmVnaXN0
ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9
IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90Q2Vs
bE1hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI2OwogICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIGRhdGFUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6
ZGF0YVRlbXBSZWdpc3RlcjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZW1vcnlUZW1w
UmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6bWVtb3J5VGVtcFJlZ2lzdGVyOwogICAgIC8vIFRl
bXBvcmFyeSByZWdpc3RlcnMuCkBAIC02NjAsNyArNjYyLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gQVJNNjRSZWdpc3RlcnM6OngyMzsg
Ly8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9
IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsgLy8gY29uc3Rh
bnRzCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0gQVJNNjRSZWdpc3RlcnM6
OngyNzsgLy8gbnVtYmVyVGFnCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M5ID0g
QVJNNjRSZWdpc3RlcnM6OngyODsgLy8gbm90Q2VsbE1hc2sKICAgICAvLyBUaGVzZSBjb25zdGFu
dHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiBy
ZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgpAQCAtNzc3LDcgKzc3OSw3IEBAIGNsYXNzIEdQUkluZm8g
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJl
Z1QyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMCA9IE1JUFNSZWdpc3RlcnM6
OnMwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9IE1JUFNSZWdpc3RlcnM6
OnMxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9IE1JUFNSZWdpc3RlcnM6
OnMxOyAvLyBjb25zdGFudHMKIAogICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25l
ZCBpbmRleCkKICAgICB7CkBAIC04MzIsNiArODM0LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBSSVNDVjY0UmVnaXN0
ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9
IFJJU0NWNjRSZWdpc3RlcnM6OngyNTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub3RD
ZWxsTWFza1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIGNvbnN0YW50c1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI0Owog
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDAgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4
MTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDEgPSBSSVNDVjY0UmVnaXN0ZXJz
Ojp4MTE7CkBAIC04NTQsNyArODU3LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDIxOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IFJJU0NWNjRSZWdpc3RlcnM6OngyMjsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjM7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI0
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IFJJU0NWNjRSZWdpc3RlcnM6
OngyNDsgLy8gY29uc3RhbnRzCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0g
UklTQ1Y2NFJlZ2lzdGVyczo6eDI1OyAvLyBudW1iZXJUYWcKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzkgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjY7IC8vIG5vdENlbGxNYXNrCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxMCA9IFJJU0NWNjRSZWdpc3RlcnM6Ongy
NzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlOWMwZWNjMzBlYWNjNjhjNTU5Zjhh
YzQ2M2UxMDYyMjMxZGRlYjZhLi5mZTZlMjY3OTBjZDc1OTQ5ZGQ0N2Y0MzViNGIzODk1YWYzOTQ3
NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDUsMTkgKzIwNSw3IEBAIHZv
aWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3Im
IGl0ZXIsIFNsb3dQYXRoRnVuY3RpCiB2b2lkIEpJVDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJ
blByb2xvZ3VlKEdQUlJlZyByZXN1bHQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtl
ZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwotICAgIGVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVzdWx0KTsKLSAgICBs
b2FkUHRyKEFkZHJlc3MocmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJh
cmVEYXRhKCkpLCByZXN1bHQpOwotICAgIGF1dG8gaGFzRXhlY3V0YWJsZSA9IGJyYW5jaFRlc3RQ
dHIoWmVybywgcmVzdWx0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpy
YXJlRGF0YVRhZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCByZXN1
bHQpOwotICAgIGhhc0V4ZWN1dGFibGUubGluayh0aGlzKTsKLSAgICBpZiAobV91bmxpbmtlZENv
ZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCBy
ZXN1bHQpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rp
b25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7Ci0KLSAg
ICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZz
ZXRPZkNvZGVCbG9jaygpKSwgcmVzdWx0KTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
cmVzdWx0LCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwotCisgICAgQXNzZW1ibHlIZWxwZXJz
OjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVzdWx0LCBtX3VubGlua2VkQ29k
ZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgcHJvYmVE
ZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CkBAIC0yNzQsNyArMjYy
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBpZiAob3Bj
b2RlSUQgIT0gb3BfY2F0Y2gpIHsKICAgICAgICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7CiAgICAgICAgICAgICBsb2FkUHRyKEFkZHJl
c3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCByZWdUMSk7Ci0g
ICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZCYXNl
bGluZUpJVERhdGEoKSksIHJlZ1QyKTsKKyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHJlZ1QyKTsKIAogICAgICAgICAgICAg
YXV0byBtZXRhZGF0YU9LID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwgc19tZXRhZGF0YUdQUik7
CiAgICAgICAgICAgICBicmVha3BvaW50KCk7CkBAIC02OTgsNyArNjg2LDcgQEAgdm9pZCBKSVQ6
OmVtaXRNYXRlcmlhbGl6ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29sUmVnaXN0ZXJzKCkKIHsKICAg
ICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwog
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk1ldGFkYXRhVGFi
bGUoKSksIHNfbWV0YWRhdGFHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJs
b2NrOjpvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpKSwgc19jb25zdGFudHNHUFIpOworICAgIGxv
YWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHNfY29u
c3RhbnRzR1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQpAQCAtNzY3
LDcgKzc1NSw3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJ
VENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7
CiAgICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2Rl
KQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICAgICAg
ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKHJlZ1QwKTsKIAogICAgIExhYmVsIGJl
Z2luTGFiZWwodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGI4ZmRhNWQxYjQz
MTVlOWY3ZDcwNGM0NmFhYTVhNWIxYmIwMzQ0ZmIuLmIxMzBlM2VjOTZmZjhiZWUzMTMxNGExYjBk
Yzg5NDFlMDEzMTA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjYyLDcgKzI2Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGxvYWRDb2RlQmxvY2tDb25zdGFudFRh
ZyhWaXJ0dWFsUmVnaXN0ZXIsIFJlZ2lzdGVySUQpOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBl
bWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCA9IHJlZ1QwKTsK
KyAgICAgICAgdm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJl
c3VsdCk7CiAKICAgICAgICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIp
CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IDViODVjN2FjNTE3YTcwMmRjZmQ3YTYyZWRmMDkyMTFhM2Q1ZDMzM2UuLjQ0YzEyZDhkNjkyNDI5
NGEwNTg4ZmM0NjJlZjU4MjkyNTJiODFkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0
Y2goY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNvIHdl
IHJlcGxlbmlzaCBpdCBoZXJlLgogICAgIHsKICAgICAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENh
bGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKCkpLCBzX2NvbnN0YW50
c0dQUik7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKICAgICB9CiAKICAgICBjYWxsT3BlcmF0aW9u
Tm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25SZXRyaWV2ZUFuZENsZWFyRXhjZXB0aW9uSWZDYXRj
aGFibGUsICZ2bSgpKTsKQEAgLTEwNDYsNiArMTA0Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Nh
dGNoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGNhbGxP
cGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZh
bHVlUHJvZmlsZSwgJnZtKCksIG1fYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSk7CiAgICAgYXV0byBz
a2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmV0dXJuVmFsdWVHUFIyLCBDYWxsRnJhbWVTbG90Ojpj
b2RlQmxvY2spOwogICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICBmYXJKdW1wKHJl
dHVyblZhbHVlR1BSLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKICAgICBza2lwT1NSRW50cnku
bGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CmluZGV4IGVmYzlhMGU4YmIwMmUyMjU4MTE4NDYyM2QxMDYwYTg5MzVjZGYyYTEuLjViNWRhNzhk
YmE3MTU2MjMxMmU5NzA2N2Y0NjdiNDU3MzkwODRhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjA1Niw3ICsyMDU2LDcgQEAgSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5cGUsIChW
TSogdm1Qb2ludGVyLAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7
CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0
Y2gsIGNoYXIqLCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpKQor
SlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZh
bHVlUHJvZmlsZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3Qg
Ynl0ZWNvZGVJbmRleEJpdHMpKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2NiwzNyAr
MjA2NiwxMyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJB
dENhdGNoLCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIHVpbgogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJl
cGxhY2VtZW50ID0gY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpOwogICAgIGlmIChVTkxJS0VMWSgh
b3B0aW1pemVkUmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHN3
aXRjaCAob3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSkgewotICAgIGNhc2UgSklUVHlw
ZTo6REZHSklUOgotICAgIGNhc2UgSklUVHlwZTo6RlRMSklUOiB7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBlbnRyeSA9IERGRzo6cHJlcGFy
ZUNhdGNoT1NSRW50cnkodm0sIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBvcHRpbWl6ZWRSZXBsYWNl
bWVudCwgYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIHJldHVybiBlbnRyeS5leGVjdXRhYmxlQWRk
cmVzczxjaGFyKj4oKTsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBjaGFyKiwgKFZNKiB2bVBv
aW50ZXIsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXhCaXRzKSkKLXsKLSAgICBWTSYgdm0gPSAqdm1Q
b2ludGVyOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZt
KTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNh
bGxGcmFtZSk7Ci0gICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRl
eDo6ZnJvbUJpdHMoYnl0ZWNvZGVJbmRleEJpdHMpOwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVw
bGFjZW1lbnQgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7Ci0gICAgaWYgKFVOTElLRUxZKCFv
cHRpbWl6ZWRSZXBsYWNlbWVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgc3dpdGNoIChvcHRp
bWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpKSB7CiAgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6
CiAgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGVudHJ5ID0gREZHOjpwcmVwYXJlQ2F0Y2hPU1JF
bnRyeSh2bSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRl
Y29kZUluZGV4KTsKLSAgICAgICAgcmV0dXJuIGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIq
PigpOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNz
PGNoYXIqPigpLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwpAQCAtMjEwOSw3ICsyMDg1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChW
TSoKICAgICAgICAgcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoY2FsbEZy
YW1lLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOwogICAgIH0pOwog
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBu
dWxscHRyKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCmluZGV4IDJhNTlmNjRlODg1YWQ1YTI1ZTE4NjcyZjk2YzNkZDViYjg2NWJkMGYuLmM1
Y2U1OGRlZmY5OGVlYjZhZmFjYzQ2Y2RiMWU4MzY4MTc2NGVlMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTksOCArMjU5LDcgQEAgSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvdywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0Kiwg
RW5jb2RlZEpTVmFsdWUKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVidWcs
IHZvaWQsIChWTSosIGludDMyX3QpKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKIEpTQ19ERUNMQVJF
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT3B0aW1pemUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKFZN
KiwgdWludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NS
RW50ZXJBdENhdGNoLCBjaGFyKiwgKFZNKiwgdWludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBjaGFy
KiwgKFZNKiwgdWludDMyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9u
VHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBTbG93UGF0aFJldHVyblR5cGUsIChW
TSosIHVpbnQzMl90KSk7CiAjZW5kaWYKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uUHV0R2V0dGVyQnlJZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgVW5pcXVl
ZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCop
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKaW5kZXggMzhjNjc5
NDlmZGRmMDczYTg4ZmE1NTgyOTcyYzkyNWMxNjFjZGVkNC4uMWMzMTI3NTRkMGMzOWEyMWFiNjAw
ZDc2ZWE1Yzk1ZDU5ZWNkYzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3Rl
clNldC5jcHAKQEAgLTIwMCwxNiArMjAwLDE4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojps
bGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAjZWxpZiBDUFUoWDg2XzY0KQogI2lm
ICFPUyhXSU5ET1dTKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMiA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7
CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsK
LSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwogI2Vsc2UKICAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdD
UzQgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
LCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRpZgpAQCAtMjE4LDkgKzIyMCwxMCBAQCBSZWdpc3RlclNl
dCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NW
NjQpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworICAgIHN0YXRpY19hc3NlcnQo
R1BSSW5mbzo6cmVnQ1M3ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7
CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAi
Iik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAjZWxzZQpAQCAtMjM2LDE3ICsyMzksMjAg
QEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQogI2Vs
aWYgQ1BVKFg4Nl82NCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1My
KTsKICNpZiAhT1MoV0lORE9XUykKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9
PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMiA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rl
cik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1My
KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzQpOwogI2Vsc2UKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5m
bzo6cmVnQ1M0ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0g
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAjZW5kaWYKQEAgLTI1NCw4ICsyNjAsMTAgQEAgUmVn
aXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7
CiAjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
ciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M3ID09IEdQUkluZm86OmNv
bnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpy
ZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzcpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAjZWxzZQpAQCAtMjcyLDggKzI4MCw4IEBAIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQ
UkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbGlmIENQVShBUk02
NCkKQEAgLTI4Niw4ICsyOTQsOCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
Nyk7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19h
c3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTOSk7CiAgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CkBAIC0zMDcsOCAr
MzE1LDggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMo
KQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTNik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAi
Iik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09
IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86
OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTOCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmgKaW5kZXggYzAzMzNkMzQyYjA5YjAzMDQwMTBmNDQ2Mjg0M2ZjMDg5NDgyOWVl
NC4uMTUxMTVlZTA3ZDI0ZjE0YmVlNmRiYWZlNjIyNjJjNjgwMjQ1MDI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtMzk1LDEzICszOTUsMTMgQEAgc3RydWN0
IFJlZ2lzdGVycyB7CiAKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1MxOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1MyOworICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0
ZXI7CiAjZWxpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzM7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzQ7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlcjsKICNlbGlm
IENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
bWV0YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJlZ0NTNjsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NTNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBwYkdQUiA9IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyOwogI2VsaWYgQ1BVKE1JUFMp
IHx8IENQVShBUk1fVEhVTUIyKQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRh
VGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cGJHUFIgPSBHUFJJbmZvOjpyZWdDUzE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYThlN2M3Mzk5ZDU4MWE1OTYwZDBh
YTdhYTcyNDMzNWRiMDM1NGM3NS4uMTNiMTc4Y2ZjZDczNmIwOGY2NGM5MTgyNGQwMmEwMjdhMDM5
MGNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMjYyNSw3ICsyNjI1LDcgQEAgaWYgSklUCiAgICAgbWFjcm8gbG9h
ZEJhc2VsaW5lSklUQ29uc3RhbnRQb29sKCkKICAgICAgICAgIyBCYXNlbGluZSB1c2VzIExMSW50
J3MgUEIgcmVnaXN0ZXIgZm9yIGl0cyBKSVQgY29uc3RhbnQgcG9vbC4KICAgICAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9iYXNlbGluZUpJ
VERhdGFbUEJdLCBQQgorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faml0RGF0YVtQQl0sIFBC
CiAgICAgZW5kCiAKICAgICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxpbmVBZnRlckNoZWNrcG9p
bnRFeGl0SWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKaW5kZXggZDlkYTFlNDY2YjljOTg3ZDc2MzEwYTJhNjczOTgzNzU2NzE0ZDMx
MS4uZjQ3MDBkNjZlYTA4ZDc2ZTQ2MGRhMzRmNWU3ZWY1NTU1OWJhYTBiMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC05MjEsNiArOTIx
LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAgICAgUmVnRXhwR2xvYmFsRGF0YSYgcmVnRXhwR2xvYmFsRGF0YSgpIHsgcmV0dXJu
IG1fcmVnRXhwR2xvYmFsRGF0YTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgcmVnRXhwR2xvYmFs
RGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9y
ZWdFeHBHbG9iYWxEYXRhKTsgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2Jh
bFRoaXMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFs
VGhpcyk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0oKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fdm0pOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpOyB9CiAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455044</attachid>
            <date>2022-03-17 16:51:21 -0700</date>
            <delta_ts>2022-03-18 00:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220317165120.patch</filename>
            <type>text/plain</type>
            <size>265476</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZmI5ZDM3ZDg1YWQ3OGQxMzI4YWYzY2FlNzUyZDE0OWRkMDM0ODg5Li5hOTlkNmU4NTRiNjA3MTM4
OGMxNTdjZjg0Mjk5YWFhNDkxZTc1OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMjItMDMtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJSSVNDVjY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVND
VjY0Ojp0cmFuc2ZlclB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6
YnJhbmNoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmJyYW5jaFB0
cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRyYW5zZmVyUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmJyYW5jaFB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmFsaXplSklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dERGR0pJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVu
dHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om1hdGVyaWFs
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6
cG9rZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmJyYW5jaFVubGlua2VkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6YWRkVW5saW5rZWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Zmlu
YWxpemVKSVREYXRhKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9E
RkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRHZXRDYWxsZWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxl
bnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3BlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJDYXNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jayk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1RyYXBzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnRpZ3VvdXNQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZy
b21DaGFyQ29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpicmFuY2hVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxs
T3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcik6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6Omds
b2JhbE9iamVjdEZvcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKiBqaXQvR1BS
SW5mby5oOgorICAgICAgICAoSlNDOjpHUFJJbmZvOjp0b1JlZ2lzdGVyKToKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUlu
UHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRlcmlhbGl6ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29s
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5h
bGl6aW5nKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZl
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdp
c3RlcnMpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om9mZnNldE9mR2xvYmFsVGhpcyk6CisK
IDIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI5MDcyMCk6IERlYnVnZ2VyOiBTdGVwIG5leHQg
c2hvdWxkIG5vdCBiZWhhdmUgdGhlIHNhbWUgYXMgU3RlcCBpbnRvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDYz
Mzc3M2FlZWM5ZDFjOTY3ZmE5OGE1YWNiMmExMjQ1MmViMjUwN2MuLjliNzc5YzkzNjYxZTlhMGYx
ZmZmOTYyOGNmYjVkZmI2ODNlYTNkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xOTYwLDYgKzE5NjAsMTcg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlcj4gewogICAgICAgICBzdG9yZTY0KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MpOwogICAgIH0KIAorICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNyYywgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0KHNyYywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgc3RvcmU2NChnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCksIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdHJhbnNm
ZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHRyYW5zZmVy
NjQoc3JjLCBkZXN0KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWwzMiBzdG9yZTY0V2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsMzIgbGFiZWwodGhpcyk7CkBAIC0zMzQ0LDYgKzMzNTUsMTkgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCByaWdodCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7CisgICAgICAgIC8v
IGxvYWQ2NCBjbG9iYmVycyBtZW1vcnlUZW1wUmVnaXN0ZXIsIHRodXMgd2Ugc2hvdWxkIGZpcnN0
IHVzZSBkYXRhVGVtcFJlZ2lzdGVyIGhlcmUuCisgICAgICAgIGxvYWQ2NChsZWZ0LCBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAvLyBBbmQgYnJh
bmNoNjQgd2lsbCB1c2UgbWVtb3J5VGVtcFJlZ2lzdGVyIHRvIGxvYWQgcmlnaHQgdG8gYSByZWdp
c3Rlci4KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJp
Z2h0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hQdHIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdo
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UklTQ1Y2NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clJJU0NWNjQuaAppbmRleCAzNjQ2ODZkZmY2ODk5NGRlYWEwNGU5NTY2MzZhZDYyZjAyZWMxMTU1
Li5kY2UzYTBlMzU2ZGJkNTg5YTA0ODlmYmRmYjY5MTZhY2ZlNDE0MWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0
LmgKQEAgLTExNzEsNiArMTE3MSwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuc2RJbnNuKHRlbXAubWVtb3J5KCksIGltbVJlZ2lzdGVyLCBJbW06OlM8MD4oKSk7CiAg
ICAgfQogCisgICAgdm9pZCB0cmFuc2ZlcjY0KEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxEYXRhPigpOworICAgICAgICBsb2FkNjQo
c3JjLCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIHN0b3JlNjQodGVtcC5kYXRhKCksIGRlc3QpOwor
ICAgIH0KKworICAgIHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkK
KyAgICB7CisgICAgICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0LCBUcnVz
dGVkSW1tMzIoMCkpOwpAQCAtMjE1NCw2ICsyMTY2LDE2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
UklTQ1Y2NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAg
ICAgICByZXR1cm4gbWFrZUJyYW5jaChjb25kLCB0ZW1wLmRhdGEoKSwgcmhzKTsKICAgICB9CiAK
KyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBBZGRyZXNzIHJpZ2h0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YSwg
TWVtb3J5PigpOworICAgICAgICBhdXRvIGxlZnRSZXNvbHV0aW9uID0gcmVzb2x2ZUFkZHJlc3Mo
bGVmdCwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkSW5zbih0ZW1wLmRh
dGEoKSwgbGVmdFJlc29sdXRpb24uYmFzZSwgSW1tOjpJKGxlZnRSZXNvbHV0aW9uLm9mZnNldCkp
OworICAgICAgICBhdXRvIHJpZ2h0UmVzb2x1dGlvbiA9IHJlc29sdmVBZGRyZXNzKHJpZ2h0LCB0
ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRJbnNuKHRlbXAubWVtb3J5KCks
IHJpZ2h0UmVzb2x1dGlvbi5iYXNlLCBJbW06OkkocmlnaHRSZXNvbHV0aW9uLm9mZnNldCkpOwor
ICAgICAgICByZXR1cm4gbWFrZUJyYW5jaChjb25kLCB0ZW1wLmRhdGEoKSwgdGVtcC5tZW1vcnko
KSk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIGlt
bSkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzLCBpbW0pOwpA
QCAtMjY0NSw2ICsyNjY3LDExIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyUklTQ1Y2NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gYnJh
bmNoNjQoY29uZCwgYWRkcmVzcywgcmhzKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQor
CiAgICAgRGF0YUxhYmVsMzIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBSSVNDVjY0QXNzZW1ibGVyOjpJbW1lZGlhdGVMb2Fk
ZXIgaW1tbChSSVNDVjY0QXNzZW1ibGVyOjpJbW1lZGlhdGVMb2FkZXI6OlBsYWNlaG9sZGVyLCBp
bW0ubV92YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYjJlOTExYWExMzY2M2EyNTA5ODQwYTA1Njg4
NDEyZjI5MjhlZjQ2My4uYzdmZTYyNzk2ZDA0MTY5YmRkNGIwYjQ0MWQ1N2RjYTc3OGVjMDBjOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaApAQCAtMTAyNiw2ICsxMDI2LDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
WDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICAgICAgbW92ZShp
bW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9ybShzY3Jh
dGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQorCisgICAgdm9pZCB0cmFuc2ZlcjY0KEFkZHJlc3Mg
c3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBsb2FkNjQoc3JjLCBzY3JhdGNoUmVn
aXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyKCksIGRlc3QpOworICAg
IH0KKworICAgIHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsKKyAgICB9CiAgICAgCiAgICAgRGF0
YUxhYmVsMzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7CkBAIC0xMTM0LDYgKzExNDUsMTIgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAg
ICBtX2Fzc2VtYmxlci5jbXBxX3JtKHJpZ2h0LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KKworICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIEFkZHJlc3Mgcmln
aHQpCisgICAgeworICAgICAgICBsb2FkNjQocmlnaHQsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAg
ICB9CiAgICAgCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKQEAgLTExNTIsNiAr
MTE2OSwxMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbiB7CiAgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisKICAgICBKdW1w
IGJyYW5jaFRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lz
dGVySUQgbWFzaykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKHJlZywgbWFz
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4
IDA5OGFlZDkzNWE2OGY3ZDY2ODdiZDM1MjMyNTMwNzdmMzFlZDE5ZjIuLjI1OTZmODM0OTA2YjNk
ODFkYzNjNzM0MzdlYjEyMTM2ZDAyZWQxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC03ODcsOSArNzg3LDkgQEAgdm9pZCBDb2RlQmxvY2s6
OnNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENv
ZGUpCiAKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsK
LSAgICAgICAgQVNTRVJUKCFtX2Jhc2VsaW5lSklURGF0YSk7Ci0gICAgICAgIG1fYmFzZWxpbmVK
SVREYXRhID0gQmFzZWxpbmVKSVREYXRhOjpjcmVhdGUoaml0Q29kZS0+bV9jb25zdGFudFBvb2wu
c2l6ZSgpKTsKLSAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPm1fc3R1YkluZm9zID0gRml4ZWRW
ZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+KGppdENvZGUtPm1fdW5saW5rZWRTdHViSW5mb3Muc2l6
ZSgpKTsKKyAgICAgICAgQVNTRVJUKCFtX2ppdERhdGEpOworICAgICAgICBhdXRvIGJhc2VsaW5l
SklURGF0YSA9IEJhc2VsaW5lSklURGF0YTo6Y3JlYXRlKGppdENvZGUtPm1fY29uc3RhbnRQb29s
LnNpemUoKSk7CisgICAgICAgIGJhc2VsaW5lSklURGF0YS0+bV9zdHViSW5mb3MgPSBGaXhlZFZl
Y3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0Q29kZS0+bV91bmxpbmtlZFN0dWJJbmZvcy5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIHVubGlua2VkQ2FsbExpbmtJbmZvIDogaml0Q29kZS0+
bV91bmxpbmtlZENhbGxzKSB7CiAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IGdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCB1bmxpbmtlZENhbGxM
aW5rSW5mby5ieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm8p
OwpAQCAtODAwLDI4ICs4MDAsMjkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVwV2l0aFVubGlua2Vk
QmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAgICAgICAgICAgICBh
dXRvIGVudHJ5ID0gaml0Q29kZS0+bV9jb25zdGFudFBvb2wuYXQoaSk7CiAgICAgICAgICAgICBz
d2l0Y2ggKGVudHJ5LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6
OlR5cGU6Okdsb2JhbE9iamVjdDoKLSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+
YXQoaSkgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZUpJ
VERhdGEtPmF0KGkpID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6U3RydWN0dXJlU3R1
YkluZm86IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGVudHJ5LnBvaW50ZXIoKSk7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJ1
Y3R1cmVTdHViSW5mbyYgdW5saW5rZWRTdHViSW5mbyA9IGppdENvZGUtPm1fdW5saW5rZWRTdHVi
SW5mb3NbaW5kZXhdOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9IG1fYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJbmZvc1tpbmRleF07CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJ
bmZvc1tpbmRleF07CiAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdGlhbGl6ZUZyb21Vbmxp
bmtlZFN0cnVjdHVyZVN0dWJJbmZvKHRoaXMsIHVubGlua2VkU3R1YkluZm8pOwotICAgICAgICAg
ICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9ICZzdHViSW5mbzsKKyAgICAgICAgICAg
ICAgICBiYXNlbGluZUpJVERhdGEtPmF0KGkpID0gJnN0dWJJbmZvOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6
OlR5cGU6OkZ1bmN0aW9uRGVjbDogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKLSAgICAgICAgICAgICAg
ICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkRlY2woaW5kZXgpOworICAgICAg
ICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkRlY2woaW5kZXgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBK
SVRDb25zdGFudFBvb2w6OlR5cGU6OkZ1bmN0aW9uRXhwcjogewogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsK
LSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkV4cHIo
aW5kZXgpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlv
bkV4cHIoaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIG1faml0RGF0YSA9IGJhc2VsaW5lSklURGF0
YS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7CkBAIC05MDYs
MjAgKzkwNywyNCBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIC8vIGRlc3RydWN0b3Jz
LgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVK
SVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5t
X3N0dWJJbmZvcykgewotICAgICAgICAgICAgc3R1YkluZm8uYWJvdXRUb0RpZSgpOwotICAgICAg
ICAgICAgc3R1YkluZm8uZGVyZWYoKTsKLSAgICAgICAgfQotICAgIH0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9zKSB7CiAgICAgICAgICAgICBzdHViSW5mby0+YWJv
dXRUb0RpZSgpOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0KLSAg
ICB9CisgICAgICAgIGlmIChtX2ppdERhdGEpCisgICAgICAgICAgICBkZWxldGUgYml0d2lzZV9j
YXN0PERGRzo6REZHSklURGF0YSo+KG1faml0RGF0YSk7CiAjZW5kaWYKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5hYm91dFRvRGllKCk7CisgICAgICAgICAgICAgICAgc3R1Yklu
Zm8uZGVyZWYoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBqaXREYXRhOwor
ICAgICAgICB9CisgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKQEAgLTEyNDgsMTgg
KzEyNTMsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImIHZpc2l0b3IKICAgICB9CiAKICNpZiBFTkFCTEUo
SklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKLSAgICAgICAgICAgICAg
ICBzdHViSW5mby5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAgICAgICAgfQotICAg
IH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgZm9yIChhdXRvKiBz
dHViSW5mbyA6IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9zKQogICAgICAgICAg
ICAgc3R1YkluZm8tPnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwotICAgIH0KICNlbmRp
ZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVRE
YXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0
dWJJbmZvcykKKyAgICAgICAgICAgICAgICBzdHViSW5mby5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2
aXNpdG9yKTsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAog
I2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTU4NSwxNSArMTU4OSw4IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICNpZiBFTkFCTEUoSklUKQogdm9pZCBDb2Rl
QmxvY2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKCkKIHsKLSAgICBpZiAoYXV0byogaml0RGF0
YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1Yklu
Zm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKLSAgICAgICAgICAgIHN0dWJJbmZv
LnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlzKTsKLSAgICAgICAgfQotICAgIH0KLQot
I2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBERkc6OkNvbW1vbkRhdGEq
IGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgIGZvciAoYXV0byog
Y2FsbExpbmtJbmZvIDogZGZnQ29tbW9uLT5tX2NhbGxMaW5rSW5mb3MpCiAgICAgICAgICAgICBj
YWxsTGlua0luZm8tPnZpc2l0V2Vhayh2bSgpKTsKQEAgLTE2MDEsOCArMTU5OCwxNSBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVKSVRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICAgICAgICAg
IHN0dWJJbmZvLT52aXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdGhpcyk7CiAgICAgICAgIH0K
LSAgICB9CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9
IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDog
aml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KIH0KICNlbmRpZgogCkBAIC0xNjg5LDEyICsxNjkzLDggQEAgdm9pZCBD
b2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3Rh
dHVzTWFwJiByZXN1bHQpCiAgICAgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6
OmlzSklUKGppdFR5cGUoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2Vs
aW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGpp
dERhdGEtPm1fc3R1YkluZm9zKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8u
Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJ
bmZvOwotICAgICAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAg
ICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1v
bigpOwogICAgICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9zdHVi
SW5mb3MpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwg
SUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CkBAIC0xNzEw
LDggKzE3MTAsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuaW5TdGF0dXMg
PSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0Nv
bW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVzKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmRlbGV0ZVN0YXR1cyA9
IHBhaXIuc2Vjb25kLmdldCgpOwotICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3Mp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNT
dGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZvOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
QEAgLTE3MjgsMjEgKzE3MzMsMjEgQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKElD
U3RhdHVzTWFwJiByZXN1bHQpCiBTdHJ1Y3R1cmVTdHViSW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1
YkluZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9sb2NrKTsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRh
LmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJ
bmZvcykgewotICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvZGVPcmlnaW4gPT0gY29kZU9yaWdp
bikKLSAgICAgICAgICAgICAgICByZXR1cm4gJnN0dWJJbmZvOwotICAgICAgICB9Ci0gICAgfQot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChq
aXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGZvciAoYXV0byogc3R1
YkluZm8gOiBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3N0dWJJbmZvcykgewogICAgICAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0dWJJbmZvOwogICAgICAgICB9Ci0gICAgfQogI2VuZGlmCisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvZGVPcmlnaW4gPT0gY29kZU9yaWdpbikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICZzdHViSW5mbzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTc4MSw3ICsxNzg2LDcg
QEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKICAgICBSRUxFQVNFX0FT
U0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CiAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwogICAgIAotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGlu
ZUpJVERhdGEuZ2V0KCkpIHsKKyAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0
YSgpKSB7CiAgICAgICAgIC8vIFdlIGNhbiBjbGVhciB0aGVzZSBiZWNhdXNlIG5vIG90aGVyIHRo
cmVhZCB3aWxsIGhhdmUgcmVmZXJlbmNlcyB0byBhbnkgc3R1YiBpbmZvcywgY2FsbAogICAgICAg
ICAvLyBsaW5rIGluZm9zLCBvciBieSB2YWwgaW5mb3MgaWYgd2UgZG9uJ3QgaGF2ZSBKSVQgY29k
ZS4gQXR0ZW1wdHMgdG8gcXVlcnkgdGhlc2UgZGF0YQogICAgICAgICAvLyBzdHJ1Y3R1cmVzIHVz
aW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwg
cmV0dXJuIG5vdGhpbmcgaWYgd2UKQEAgLTE4MDIsNyArMTgwNyw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpyZXNldEJhc2VsaW5lSklURGF0YSgpCiAgICAgICAgIC8vIFdlIGNhbiBjbGVhciB0aGlzIGJl
Y2F1c2UgdGhlIERGRydzIHF1ZXJpZXMgdG8gdGhlc2UgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBndWFy
ZGVkIGJ5IHdoZXRoZXIKICAgICAgICAgLy8gdGhlcmUgaXMgSklUIGNvZGUuCiAKLSAgICAgICAg
bV9iYXNlbGluZUpJVERhdGEgPSBudWxscHRyOworICAgICAgICBtX2ppdERhdGEgPSBudWxscHRy
OwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTg0OCwxOSArMTg1MywxOSBAQCB2b2lkIENvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsCiAgICAgfSk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRvKiBqaXRE
YXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHVi
SW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQotICAgICAgICAgICAgc3R1YkluZm8udmlzaXRB
Z2dyZWdhdGUodmlzaXRvcik7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENv
ZGUtPmRmZ0NvbW1vbigpOwogICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogZGZnQ29tbW9u
LT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0dWJJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNp
dG9yKTsKICAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnZpc2l0QWdncmVnYXRl
KHZpc2l0b3IpOwogICAgICAgICB2aXNpdE9TUkV4aXRUYXJnZXRzKGxvY2tlciwgdmlzaXRvcik7
CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2Vs
aW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0
YS0+bV9zdHViSW5mb3MpCisgICAgICAgICAgICAgICAgc3R1YkluZm8udmlzaXRBZ2dyZWdhdGUo
dmlzaXRvcik7CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIH0KQEAgLTM0NzcsMjEgKzM0ODIs
MjIgQEAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBDb2RlQmxvY2s6OmZpbmRQQyh2b2lkKiBw
YykKIAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwot
ICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsK
LSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY29udGFpbnNQQyhwYykpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdHViSW5mby5jb2RlT3JpZ2luOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICAgICAg
REZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAg
ICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9zdHViSW5mb3MpIHsK
ICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnRhaW5zUEMocGMpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc3R1YkluZm8tPmNvZGVPcmlnaW47CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0KICNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGF1dG8q
IGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoc3R1YkluZm8uY29udGFpbnNQQyhwYykpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3R1YkluZm8uY29kZU9yaWdpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbV9qaXRDb2RlLT5maW5kUEModGhp
cywgcGMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4
IDQ2OTYzZDczZGUyM2UwMWZkMTUyNTQ1MWE4MzQ3YjZjNzc1YzE4MjYuLjQ1NzlhZWQ3NDAwODg4
ZTkwYWI4MTI2M2FmZGZhNWMwNTBjNDBhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTc5LDYgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKIG5hbWVzcGFjZSBERkcgeworY2xhc3MgREZHSklURGF0YTsKIHN0
cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgpAQCAtMjQ3LDcg
KzI0OCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RkOjpv
cHRpb25hbDxCeXRlY29kZUluZGV4PiBieXRlY29kZUluZGV4RnJvbUNhbGxTaXRlSW5kZXgoQ2Fs
bFNpdGVJbmRleCk7CiAKLSAgICAvLyBCZWNhdXNlIHdlIG1pZ2h0IHRocm93IG91dCBiYXNlbGlu
ZSBKSVQgY29kZSBhbmQgYWxsIGl0cyBiYXNlbGluZSBKSVQgZGF0YSAobV9iYXNlbGluZUpJVERh
dGEpLAorICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2Rl
IGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhIChtX2ppdERhdGEpLAogICAgIC8vIHlvdSBu
ZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhlIGxpZmV0aW1lIG9mIHdoZW4geW91IHVzZSB0aGUg
cmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBt
YXkgaGF2ZSByYXcgcG9pbnRlcnMgaW50byB0aGlzIGRhdGEgc3RydWN0dXJlIHRoYXQgZ2V0cyB0
aHJvd24gYXdheS4KICAgICAvLyBTcGVjaWZpY2FsbHksIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0
IG5vIEdDIGNhbiBiZSBmaW5hbGl6ZWQgKHR5cGljYWxseSB0aGF0IG1lYW5zIG5vCkBAIC0yNTgs
NyArMjU5LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAjaWYgRU5BQkxF
KEpJVCkKICAgICB2b2lkIHNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGlu
ZUpJVENvZGU+KTsKIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCYXNlbGluZUpJVERh
dGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2Jhc2VsaW5lSklURGF0
YSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklURGF0YSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1faml0RGF0YSk7IH0KIAogICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBhZGRPcHRpbWl6aW5nU3R1YkluZm8oQWNjZXNzVHlwZSwgQ29kZU9yaWdpbik7CiAK
QEAgLTUzNCw5ICs1MzUsMjUgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgU3RyaW5nSnVtcFRhYmxlJiBiYXNlbGluZVN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFi
bGVJbmRleCk7CiAgICAgQmFzZWxpbmVKSVREYXRhKiBiYXNlbGluZUpJVERhdGEoKQogICAgIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklU
KTsKLSAgICAgICAgcmV0dXJuIG1fYmFzZWxpbmVKSVREYXRhLmdldCgpOworICAgICAgICBpZiAo
IUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxCYXNlbGluZUpJVERhdGEqPihtX2ppdERhdGEpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICB2b2lkIHNldERG
R0pJVERhdGEoc3RkOjp1bmlxdWVfcHRyPERGRzo6REZHSklURGF0YT4mJiBqaXREYXRhKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFtX2ppdERhdGEpOworICAgICAgICBtX2ppdERhdGEgPSBqaXRE
YXRhLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBERkc6OkRGR0pJVERhdGEqIGRmZ0pJVERhdGEo
KQorICAgIHsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkp
KQorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxERkc6OkRGR0pJVERhdGEqPihtX2pp
dERhdGEpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKICNlbmRpZgog
ICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9
CiAgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRh
YmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dW5saW5rZWRTd2l0
Y2hKdW1wVGFibGUodGFibGVJbmRleCk7IH0KQEAgLTkzNyw3ICs5NTQsNyBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOwog
I2lmIEVOQUJMRShKSVQpCiBwdWJsaWM6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2VsaW5lSklU
RGF0YT4gbV9iYXNlbGluZUpJVERhdGE7CisgICAgdm9pZCogbV9qaXREYXRhIHsgbnVsbHB0ciB9
OwogcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDIzZmQ0NTQ3YzU5YjkyYTkzNDM3NDJhNTg0ZjdkZGNk
ZjI5MWY5ZWIuLjRlMDNhYTNlZGU0Mjg5ZTA4YzI1ODg4MjkwOGI1NGI2M2YzOWFkYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxB
cnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3Mg
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIEp1bXBpbmcKIHB1YmxpYzoKICAgICBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFy
aWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlvbl9HU3RaQiBmdW5j
dGlvbiwKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQorICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudCBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
Y29udGlndW91c1N0cnVjdHVyZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0b3JhZ2VTdHJ1
Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKICAgICAgICAgOiBKdW1w
aW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBqaXQp
CiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnRpZ3VvdXNT
dHJ1Y3R1cmUoY29udGlndW91c1N0cnVjdHVyZSkKQEAgLTExNSw3ICsxMTUsNyBAQCBjbGFzcyBD
YWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSnVtcGluZwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9jb250aWd1b3VzU3Ry
dWN0dXJlOwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3Vv
dXNTdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9iamVjdDsKKyAgICBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudCBtX2dsb2JhbE9iamVjdDsKICAgICBHUFJSZWcgbV9zaXplR1BSOwogICAgIEdQUlJl
ZyBtX3N0b3JhZ2VHUFI7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1f
cGxhbnM7CkBAIC0xMjUsNyArMTI1LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwKIHB1Ymxp
YzoKICAgICBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNp
emVTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZy
b20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFBfSklUT3BlcmF0aW9uX0dTdFpCIGZ1bmN0aW9uLAot
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgZ2xv
YmFsT2JqZWN0LCBHUFJSZWcgc3RydWN0dXJlR1BSLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0
b3JhZ2VHUFIpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50IGdsb2JhbE9iamVjdCwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRv
cjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKQEAgLTE1Miw3
ICsxNTIsNyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVW
YXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvciBmaW5hbAogCiAgICAgUF9KSVRPcGVyYXRpb25f
R1N0WkIgbV9mdW5jdGlvbjsKICAgICBHUFJSZWcgbV9yZXN1bHRHUFI7Ci0gICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX3N0cnVjdHVyZUdQUjsK
ICAgICBHUFJSZWcgbV9zaXplR1BSOwogICAgIEdQUlJlZyBtX3N0b3JhZ2VHUFI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCmluZGV4IDQ1M2MzZGNkYWVkMWYzYzNjMmFmMTRi
ODEyYjhhMjNhNTZkMTFjYTIuLjQwNTg3ZTlhZDVlZDkwNTFkMWMyMTBiY2ExZGZlYjhiYjVlZDEy
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC00OSw2ICs0OSwy
MyBAQCBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgSklUQ29tcGlsZXI7CiAKK2NsYXNzIERGR0pJ
VERhdGEgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdBcnJheTxERkdKSVREYXRhLCB2b2lkKj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJyYXk8REZH
SklURGF0YSwgdm9pZCo+OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRh
PiBjcmVhdGUodW5zaWduZWQgcG9vbFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPERGR0pJVERhdGE+IHsgbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFs
bG9jYXRpb25TaXplKHBvb2xTaXplKSkpIERGR0pJVERhdGEocG9vbFNpemUpIH07CisgICAgfQor
CisgICAgZXhwbGljaXQgREZHSklURGF0YSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uo
c2l6ZSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgSklUQ29kZSBmaW5hbCA6IHB1YmxpYyBE
aXJlY3RKSVRDb2RlIHsKIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDQ1ZjM0M2YwZGQwNTkwN2YwOTkx
N2RiMDNhMWY0MTRkZDY4MDE0Y2IuLmZhZTI2N2QyNTE5NzQwYzVhZGM5NTk1Zjk3MmJlMzJhNjVk
MzQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKICNpbmNsdWRlICJWTS5oIgogCkBAIC0xMTAsMTMgKzExMSwzMCBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVu
ZGVudCBvbiBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgog
ICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhj
ZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
OworICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAg
ICAgICAgaWYgKG1fZ3JhcGgubV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgICAgIGVtaXRQ
dXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJJbmZvOjpyZWdUMCwgbV9jb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAg
ICB9CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4
dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFt
ZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgogfQog
CiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpCiB7CiAg
ICAgZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVn
aXN0ZXJzKCk7ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG1fZ3JhcGgubV9wbGFu
LmlzVW5saW5rZWQoKSkgeworICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyLCBDb2RlQmxv
Y2s6Om9mZnNldE9mSklURGF0YSgpKSwgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAg
IH0KKyNlbmRpZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnlFeGVjdXRpb25G
bGFnKCkKQEAgLTM0MCw3ICszNTgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAg
ICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNr
T25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3Nw
ZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIpOwpAQCAtNDEzLDcgKzQzMiw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlv
bigpCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtX3NwZWN1bGF0aXZl
LT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKKyAgICBlbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVS
b2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwogICAgIAogICAgIC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGlu
dG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1l
bnRzCiAgICAgLy8gaGF2ZSBiZWVuIHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhl
IGZhc3QgZW50cnkgcG9pbnQgd2hlcmUgd2UgY2FuIHN0YXRpY2FsbHkKQEAgLTQzMiw3ICs0NTIs
OSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgICAgICBlbWl0U3Rv
cmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSkpOwogICAgICAgICBpZiAo
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+aXND
b25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNh
bGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZWdUMCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0
KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBtX3NwZWN1bGF0aXZlLT5jYWxs
T3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPmlz
Q29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25D
YWxsQXJpdHlDaGVjaywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAg
ICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwp
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKQEAgLTY0
Myw2ICs2NjUsNDkgQEAgdm9pZCBKSVRDb21waWxlcjo6bWFrZUNhdGNoT1NSRW50cnlCdWZmZXIo
KQogICAgIH0KIH0KIAordm9pZCBKSVRDb21waWxlcjo6bG9hZFVubGlua2VkQ29uc3RhbnQoVW5s
aW5rZWRDb25zdGFudCBjb25zdGFudCwgR1BSUmVnIGRlc3QpCit7CisgICAgY29uc3RhbnQubWF0
ZXJpYWxpemUoKnRoaXMsIGRlc3QpOworfQorCit2b2lkIEpJVENvbXBpbGVyOjpzdG9yZVVubGlu
a2VkQ29uc3RhbnQoVW5saW5rZWRDb25zdGFudCBjb25zdGFudCwgQWRkcmVzcyBkZXN0KQorewor
ICAgIGNvbnN0YW50LnBva2UoKnRoaXMsIGRlc3QpOworfQorCitKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudChHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBhdXRvIGltbSA9IFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihncmFwaCwgY2VsbCk7CisgICAgaWYgKGdyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpCisg
ICAgICAgIG1faW5kZXggPSBncmFwaC5tX3BsYW4uYWRkVW5saW5rZWRDb25zdGFudChpbW0pOwor
ICAgIGVsc2UKKyAgICAgICAgbV9wb2ludGVyID0gY2VsbDsKK30KKworSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQ6OlVubGlua2VkQ29uc3RhbnQoR3JhcGgmIGdyYXBoLCB2b2lkKiBwb2lu
dGVyLCBOb25DZWxsVGFnKQoreworICAgIGlmIChncmFwaC5tX3BsYW4uaXNVbmxpbmtlZCgpKQor
ICAgICAgICBtX2luZGV4ID0gZ3JhcGgubV9wbGFuLmFkZFVubGlua2VkQ29uc3RhbnQoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHBvaW50ZXIpKTsKKyAgICBlbHNlCisgICAgICAgIG1fcG9p
bnRlciA9IHBvaW50ZXI7Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6
Om1hdGVyaWFsaXplKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcmVzdWx0R1BSKQoreworICAg
IGlmIChpc1VubGlua2VkKCkpCisgICAgICAgIGppdC5sb2FkUHRyKHVubGlua2VkQWRkcmVzcygp
LCByZXN1bHRHUFIpOworICAgIGVsc2UKKyAgICAgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0ciht
X3BvaW50ZXIpLCByZXN1bHRHUFIpOworfQorCit2b2lkIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50Ojpwb2tlKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRk
cmVzcykKK3sKKyAgICBpZiAoaXNVbmxpbmtlZCgpKQorICAgICAgICBqaXQudHJhbnNmZXJQdHIo
dW5saW5rZWRBZGRyZXNzKCksIGFkZHJlc3MpOworICAgIGVsc2UKKyAgICAgICAgaml0LnN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIobV9wb2ludGVyKSwgYWRkcmVzcyk7Cit9CisKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCmluZGV4IDk4NDI3NjgzOGQzZTg5MGM1MTEz
NmUwYTNkMThlZTBiOTcyNDZjMTcuLjE1YzBhNWQwOTQ5Mzg5ZGEyMmFkMTI1NzIzMWViMzhlYjk4
MDdlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAg
LTI1NSwxNCArMjU1LDYgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJz
IHsKICAgICAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uoc3RydWN0dXJlU2V0W2ldKTsKICAgICB9
CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtQdHIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIEpTQ2VsbCogd2Vha1B0cikKLSAgICB7
Ci0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW1Q
dHIod2Vha1B0cikpOwotICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHdlYWtQdHIpOwotICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAg
SnVtcCBicmFuY2hXZWFrU3RydWN0dXJlKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHdlYWtTdHJ1Y3R1cmUpCiAgICAgewpAQCAtMzEyLDYgKzMw
NCw2MCBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAg
ICBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCZSZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVl
U2F2ZVJlZ2lzdGVycygpKTsKICAgICB9CiAKKyAgICBjbGFzcyBVbmxpbmtlZENvbnN0YW50IGZp
bmFsIDogcHVibGljIENDYWxsSGVscGVyczo6Q29uc3RhbnRNYXRlcmlhbGl6ZXIgeworICAgIHB1
YmxpYzoKKyAgICAgICAgZW51bSBOb25DZWxsVGFnIHsgTm9uQ2VsbCB9OworICAgICAgICBVbmxp
bmtlZENvbnN0YW50KEdyYXBoJiwgSlNDZWxsKik7CisKKyAgICAgICAgdm9pZCBtYXRlcmlhbGl6
ZShDQ2FsbEhlbHBlcnMmLCBHUFJSZWcpOworICAgICAgICB2b2lkIHBva2UoQ0NhbGxIZWxwZXJz
JiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgICAgICBzdGF0aWMgVW5saW5rZWRDb25zdGFudCBub25DZWxsUHRyKEdyYXBoJiBncmFw
aCwgVCogcG9pbnRlcikKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3Rk
Ojppc19iYXNlX29mX3Y8SlNDZWxsLCBUPik7CisgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRD
b25zdGFudChncmFwaCwgcG9pbnRlciwgTm9uQ2VsbCk7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgVW5saW5rZWRDb25zdGFudCBzdHJ1Y3R1cmUoR3JhcGgmIGdyYXBoLCBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFVubGlu
a2VkQ29uc3RhbnQoZ3JhcGgsIHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAg
ICBib29sIGlzVW5saW5rZWQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ICE9IFVJTlRfTUFYOyB9
CisKKyAgICAgICAgdm9pZCogcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlcjsgfQor
CisgICAgICAgIEFkZHJlc3MgdW5saW5rZWRBZGRyZXNzKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGlzVW5saW5rZWQoKSk7CisgICAgICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJ
bmZvOjpjb25zdGFudHNSZWdpc3RlciwgREZHSklURGF0YTo6b2Zmc2V0T2ZEYXRhKCkgKyBzaXpl
b2Yodm9pZCopICogbV9pbmRleCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IFVubGlua2VkQ29uc3RhbnQoR3JhcGgmLCB2b2lkKiwgTm9uQ2VsbFRhZyk7CisKKyAgICAgICAg
dW5zaWduZWQgbV9pbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHZvaWQqIG1fcG9pbnRlciB7
IG51bGxwdHIgfTsKKyAgICB9OworCisgICAgdm9pZCBsb2FkVW5saW5rZWRDb25zdGFudChVbmxp
bmtlZENvbnN0YW50LCBHUFJSZWcpOworICAgIHZvaWQgc3RvcmVVbmxpbmtlZENvbnN0YW50KFVu
bGlua2VkQ29uc3RhbnQsIEFkZHJlc3MpOworCisgICAgSnVtcCBicmFuY2hVbmxpbmtlZENvbnN0
YW50KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgR1BSUmVnIGxlZnQsIFVubGlua2VkQ29uc3Rh
bnQgY29uc3RhbnQpCisgICAgeworICAgICAgICBpZiAoY29uc3RhbnQuaXNVbmxpbmtlZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6YnJhbmNoUHRyKGNvbmQsIGxlZnQsIGNv
bnN0YW50LnVubGlua2VkQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6
YnJhbmNoUHRyKGNvbmQsIGxlZnQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb25zdGFu
dC5wb2ludGVyKCkpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFVubGlua2VkQ29uc3RhbnQo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFVubGlua2VkQ29uc3RhbnQg
Y29uc3RhbnQpCisgICAgeworICAgICAgICBpZiAoY29uc3RhbnQuaXNVbmxpbmtlZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6YnJhbmNoUHRyKGNvbmQsIGxlZnQsIGNvbnN0
YW50LnVubGlua2VkQWRkcmVzcygpKTsKKyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6YnJh
bmNoUHRyKGNvbmQsIGxlZnQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb25zdGFudC5w
b2ludGVyKCkpKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE9TUkV4aXRK
dW1wUGxhY2Vob2xkZXI7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVEZpbmFsaXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VEZpbmFsaXplci5jcHAKaW5kZXggZDYzNjEzMjk3YzI3ZjM4ODE1ODZiY2FhNzdlM2FjY2ZmNGUy
NjRjNy4uNWVjZTQ1Njc1NTBkYTMxNmI0MjY5M2FhNTViZjY2ZWFlNzcyZTUxYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcApAQCAtNjQsNiArNjQs
NyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gbV9wbGFuLmNvZGVCbG9jaygpOwogCiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKG1f
aml0Q29kZS5jb3B5UmVmKCkpOworICAgIGNvZGVCbG9jay0+c2V0REZHSklURGF0YShtX3BsYW4u
ZmluYWxpemVKSVREYXRhKCkpOwogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAgICAgbV9qaXRDb2Rl
LT5vcHRpbWl6ZUFmdGVyV2FybVVwKGNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcAppbmRleCBmODYzNWFlNjg4MmEyNTE1YWI5YzMxMTRlNjY3YTFiNzgyY2I3MzJi
Li5hZDFjNjgyNzkwYjZiOWY1NDY5ZjUzYjkzYzIxODY3N2VkNGFlNDVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTY4MSw2ICs2ODEsMjEgQEAgdm9pZCBQbGFuOjpj
bGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpCiAgICAgfQogfQogCit1bnNpZ25lZCBQ
bGFuOjphZGRVbmxpbmtlZENvbnN0YW50KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBwdHIp
Cit7CisgICAgcmV0dXJuIG1fY29uc3RhbnRQb29sLmFkZChiaXR3aXNlX2Nhc3Q8dm9pZCo+KHB0
ci5hc0ludHB0cigpKSwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKS5pdGVyYXRvci0+dmFsdWU7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBQbGFuOjpmaW5hbGl6ZUpJVERhdGEoKQor
eworICAgIGlmIChtX2NvbnN0YW50UG9vbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gaml0RGF0YSA9IERGR0pJVERhdGE6OmNyZWF0ZShtX2NvbnN0YW50UG9v
bC5zaXplKCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29uc3RhbnRQb29sKQorICAgICAg
ICBqaXREYXRhLT5hdChwYWlyLnZhbHVlKSA9IHBhaXIua2V5OworICAgIHJldHVybiBqaXREYXRh
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXggNDA4MDMyOTZhNmRiZTBl
NDdlYTM4MzNkYmJmMjRhNmMyOTAzYjZlMi4uZGFlZTFlMDcxODc0NjJkZWQzNGJhNGY4MGY3MGQw
NGM3ZmMxMTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKQEAgLTQ4LDYgKzQ4
LDcgQEAgY2xhc3MgQ29kZUJsb2NrOwogbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIFRocmVhZERh
dGE7CitjbGFzcyBERkdKSVREYXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKQEAgLTEwMSw2
ICsxMDIsOSBAQCBjbGFzcyBQbGFuIGZpbmFsIDogcHVibGljIEpJVFBsYW4gewogICAgIERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjayogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDYWxsYmFjayhSZWY8RGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrPiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsg
fQogCisgICAgdW5zaWduZWQgYWRkVW5saW5rZWRDb25zdGFudChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBmaW5hbGl6ZUpJVERh
dGEoKTsKKwogcHJpdmF0ZToKICAgICBDb21waWxhdGlvblBhdGggY29tcGlsZUluVGhyZWFkSW1w
bCgpIG92ZXJyaWRlOwogICAgIApAQCAtMTM0LDYgKzEzOCw3IEBAIGNsYXNzIFBsYW4gZmluYWwg
OiBwdWJsaWMgSklUUGxhbiB7CiAgICAgVmVjdG9yPEJ5dGVjb2RlSW5kZXg+IG1fdGllclVwQW5k
T1NSRW50ZXJCeXRlY29kZXM7CiAKICAgICBSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrPiBtX2NhbGxiYWNrOworICAgIEhhc2hNYXA8dm9pZCosIHVuc2lnbmVkPiBtX2NvbnN0YW50
UG9vbDsKIH07CiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xv
d1BhdGhHZW5lcmF0b3IuaAppbmRleCBmYWJjZTAxODJkZTkwMDI1M2YwZGYzZjBiZjJlOTMwMTg3
YzBmZjE0Li42NDNiZDI1YzA5YzJhMzIwMjI0NTdhMTVkNjE2OTQ2MTkxMTIzYWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQ
YXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3Ry
aW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRo
R2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fz
c2VtYmxlcjo6SnVtcD4gewogcHVibGljOgogICAgIFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRo
R2VuZXJhdG9yKAotICAgICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCYgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyIGdsb2JhbE9iamVjdCwgR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBwcm9wZXJ0
eVJlZykKKyAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZyb20sIFNwZWN1bGF0
aXZlSklUKiBqaXQsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50IGdsb2JhbE9iamVjdCwgR1BSUmVnIGJhc2VSZWcsIEdQUlJlZyBwcm9wZXJ0eVJl
ZykKICAgICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1
bXA+KGZyb20sIGppdCkKICAgICAgICAgLCBtX3Jlc3VsdFJlZ3MocmVzdWx0UmVncykKICAgICAg
ICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCkBAIC03OSw3ICs3OSw3IEBAIGNsYXNz
IFNhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEp1bXBp
bmdTbG93UGF0aEdlbmVyYXRvCiAgICAgfQogCiAgICAgSlNWYWx1ZVJlZ3MgbV9yZXN1bHRSZWdz
OwotICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9iamVjdDsKKyAgICBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCBtX2dsb2JhbE9iamVjdDsKICAgICBHUFJSZWcg
bV9iYXNlUmVnOwogICAgIEdQUlJlZyBtX3Byb3BlcnR5UmVnOwogICAgIFZlY3RvcjxTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzNjBlMTgxODNlY2JhMWUwY2MwNWQ3NmM3
MmNkZjEyMTllY2NiMTZkLi42MmJjZGMxZWZmNmI0MDgwZWFjYzFkOGUyYjM0M2U2ZDczODgxNzJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5o
IgogI2luY2x1ZGUgIkpTU2V0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMTEludFRodW5rcy5oIgor
I2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2lu
Y2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgpA
QCAtMjA1LDExICsyMDYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0R2V0Q2FsbGVlKENv
ZGVPcmlnaW4gb3JpZ2luLCBHUFJSZWcgY2FsbGVlR1BSKQogICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cigKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihpbmxpbmVDYWxs
RnJhbWUtPmNhbGxlZVJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKICAgICAgICAgICAgICAg
ICBjYWxsZWVHUFIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubW92ZSgK
LSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLAot
ICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5
LmNvbnN0YW50KCkuYXNDZWxsKCkpLCBjYWxsZWVHUFIpOwogICAgIH0gZWxzZQogICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSksIGNhbGxlZUdQUik7CiB9CkBAIC02ODYsNyArNjg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6c2lsZW50RmlsbChjb25zdCBTaWxlbnRSZWdpc3RlclNhdmVQbGFuJiBwbGFuKQogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFNldENlbGxDb25zdGFudDoKICAgICAgICAgQVNTRVJUKHBsYW4u
bm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKLSAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpKSwgcGxhbi5ncHIoKSk7Cisg
ICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIHBsYW4ubm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmFzQ2VsbCgp
KSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
Y2FzZSBTZXRUcnVzdGVkSlNDb25zdGFudDoKQEAgLTExOTEsMjIgKzExODksMjIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNo
ZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUo
KS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlk
T3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdl
bi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRp
ZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAg
ICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3
Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUs
Ci0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5m
bygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTEyMjcsNyArMTIyNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJh
d0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBub2RlLT5jYWNoZWFi
bGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52
YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEyNzcsMjIgKzEyNzUsMjIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJl
Z3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1
ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5
VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQ
UiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAg
ICAgICAgfQogI2Vsc2UKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9y
PiBzbG93UGF0aDsKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRP
ZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUsCi0gICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVj
bWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwK
LSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZv
KCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTMxNCw3ICsxMzEyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlbGV0ZUJ5VmFsR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21h
TW9kZSgpLnZhbHVlKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
R2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVsbHB0
ciwgYmFzZVJlZ3MsIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTM1MiwxMiArMTM1MCwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlkKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5
SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2Rl
LT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeUlkT3B0aW1pemUsCiAgICAgICAgICAgICBO
ZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAg
ICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRk
SW5CeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTQwMiwxMiArMTQwMCwxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeVZhbChOb2RlKiBub2RlKQogICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
SW5CeVZhbE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGtleVJlZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25JbkJ5VmFsT3B0
aW1pemUsCiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwga2V5UmVncyk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkSW5CeVZhbChnZW4sIHNsb3dQYXRo
LmdldCgpKTsKQEAgLTE0NTYsMTIgKzE0NTQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUhhc1ByaXZhdGUoTm9kZSogbm9kZSwgQWNjZXNzVHlwZSB0eXBlKQogICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgdHlwZSA9PSBB
Y2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVOYW1lT3B0aW1p
emUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRU
b1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9y
QnJhbmRHUFIpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpIYXNQcml2YXRlTmFtZSA/IG9wZXJhdGlvbkhhc1ByaXZhdGVO
YW1lT3B0aW1pemUgOiBvcGVyYXRpb25IYXNQcml2YXRlQnJhbmRPcHRpbWl6ZSwKICAgICAgICAg
ICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
LSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eU9yQnJhbmRHUFIpKTsKICAgICB9
CiAKICAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTQ5NSw3
ICsxNDkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9k
ZSogbm9kZSkKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG9iamVjdEVkZ2UsIG9iamVjdEdQUik7
CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RHUFIpOwogICAgICAgICAv
LyBObyBleGNlcHRpb24gY2hlY2sgaGVyZSBhcyB3ZSBkaWQgbm90IGhhdmUgdG8gY2FsbCB0b09i
amVjdCgpLgogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChvYmplY3RFZGdlLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKQEAgLTE1MDMsNyArMTUwMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3BlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdz
IG9iamVjdFJlZ3MgPSBvYmplY3QuanNWYWx1ZVJlZ3MoKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hXaXRoU2NvcGUsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJlbnRTY29wZUdQUiwgb2Jq
ZWN0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BS
LCBvYmplY3RSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICB9CiAg
ICAgCkBAIC0xODkwLDcgKzE4ODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
aW5nU2xpY2UoTm9kZSogbm9kZSkKIAogICAgIFZNJiB2bSA9IHRoaXMtPnZtKCk7CiAgICAgYXV0
byBub25FbXB0eUNhc2UgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHN0
YXJ0SW5kZXhHUFIsIHRlbXBHUFIpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyh2bSkpLCB0ZW1wR1BSKTsKKyAg
ICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKSksIHRlbXBHUFIpOwogICAgIGRvbmVD
YXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgIG5vbkVtcHR5Q2FzZS5saW5rKCZtX2pp
dCk7CkBAIC0xOTIyLDEyICsxOTIwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJpbmdTbGljZShOb2RlKiBub2RlKQogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKGJpZ0NoYXJhY3RlciwgdGhpcywgb3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5n
LCB0ZW1wR1BSLCAmdm0sIHRlbXBHUFIpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1N1YnN0ciwgdGVtcEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRJbmRleEdQUiwg
dGVtcEdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1N1YnN0ciwgdGVtcEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRJbmRleEdQUiwgdGVtcEdQUikpOwogCiAg
ICAgaWYgKGVuZEdQUikKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCAqZW5kR1BSKSk7CisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMsIG9wZXJhdGlv
blN0cmluZ1NsaWNlLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3Ry
aW5nR1BSLCBzdGFydEdQUiwgKmVuZEdQUikpOwogICAgIGVsc2UKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xp
Y2UsIHRlbXBHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0
R1BSLCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7
CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMs
IG9wZXJhdGlvblN0cmluZ1NsaWNlLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RyaW5nR1BSLCBzdGFydEdQUiwgVHJ1c3RlZEltbTMyKHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKSkpOwogCiAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsKICAg
ICBjZWxsUmVzdWx0KHRlbXBHUFIsIG5vZGUpOwpAQCAtMTk3NCw3ICsxOTcyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJDYXNlKE5vZGUqIG5vZGUpCiAgICAgCiAgICAg
c2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKGxlbmd0
aEdQUik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0xvd2VyQ2FzZSwgbGVuZ3RoR1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBpbmRleEdQUik7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0xvd2VyQ2FzZSwgbGVuZ3RoR1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBpbmRleEdQUik7CiAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgYXV0byBk
b25lID0gbV9qaXQuanVtcCgpOwpAQCAtMjE5MywxMCArMjE5MSwyMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICB9CiAKICAgICBpZiAobV9ibG9jay0+
aXNDYXRjaEVudHJ5cG9pbnQpIHsKKyAgICAgICAgLy8gRm9yIGNhdGNoIGVudHJ5IHBvaW50LCBP
U1IgZW50cnkgc2V0cyBhIG5ldyBDb2RlQmxvY2sgcG9pbnRlci4KICAgICAgICAgbV9qaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC0obV9qaXQuZ3JhcGgoKS5mcmFtZVJlZ2lz
dGVyQ291bnQoKSAqIHNpemVvZihSZWdpc3RlcikpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsICBDQ2FsbEhlbHBlcnM6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQu
ZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdD
aGVja1JlZ2lzdGVycygpOwotICAgICAgICBtX2ppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
bV9qaXQuY29kZUJsb2NrKCksIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgbV9qaXQucHJvYmVEZWJ1ZyhbPV0oUHJvYmU6OkNvbnRleHQmIGN0
eCkgeworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1l
Kj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICAgICAgfSk7CisjZW5k
aWYKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtX2ppdC5lbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmNvbnN0YW50c1Jl
Z2lzdGVyKTsKKyAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BS
SW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBH
UFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisjZW5kaWYKICAgICB9CiAKICAgICBtX3N0cmVh
bS0+YXBwZW5kQW5kTG9nKFZhcmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwpAQCAtMjQ3Nyw3ICsyNDg1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHJhcHMoTm9kZSogbm9kZSkK
ICAgICAgICAgSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcyhtX2ppdC52bSgpLnRyYXBzKCku
dHJhcEJpdHNBZGRyZXNzKCkpLAogICAgICAgICBUcnVzdGVkSW1tMzIoVk1UcmFwczo6QXN5bmNF
dmVudHMpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChuZWVkVHJh
cEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRpb25IYW5kbGVUcmFwcywgdW51c2VkR1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChuZWVkVHJhcEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRpb25IYW5kbGVUcmFwcywgdW51c2Vk
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogICAgIG5vUmVzdWx0KG5vZGUp
OwogfQogCkBAIC0yNTQyLDcgKzI1NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q29udGlndW91c1B1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpIDoKICAgICAgICAgICAg
ICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0KSwKLSAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykpOworICAgICAg
ICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBw
cm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7CiAgICAgfQogCiAgICAgbm9SZXN1bHQobm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTI2MTcsNyArMjYyNSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbChOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/CiAgICAgICAgICAgICAgICAgICAg
IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxE
aXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkg
PT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFy
cmF5Qm91bmRzTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCksCi0gICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKKyAgICAgICAg
ICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOwogICAgIH0KIAogICAgIG5vUmVzdWx0KG1fY3VycmVu
dE5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0yNjc1LDkgKzI2ODMsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKIAogICAg
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0KQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdE5vblN0cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdz
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
cywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3Qg
OiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CiAgICAgICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTI3
MzAsMTEgKzI3MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklU
KSkgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBzdHViSW5m
b0dQUiwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgbnVs
bHB0cik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKLSAgICAg
ICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJvcGVydHlS
ZWdzLCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAg
ICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2
YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKICAgICAgICAgfQogCiAgICAgICAg
IG1faml0LmFkZFB1dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMjgyNSw3ICsyODMz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAg
ICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRB
cnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQ
dXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNO
b25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwK
LSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZ3MpKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3Vs
dCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2
YWx1ZVJlZ3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0yOTM2LDcgKzI5NDQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlLCBjb25zdCBTY29wZWRM
YW1iZGE8c3RkOgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CiAjZW5kaWYKIAotICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBTdHJ1Y3R1
cmUqIHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+c3RyaW5nUHJvdG90
eXBlKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJvdG90eXBl
U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZt
KTsKICAgICAgICAgV1RGOjpkZXBlbmRlbnRMb2FkTG9hZEZlbmNlKCk7CkBAIC0yOTUyLDEyICsy
OTYwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiAgICAgICAgICAgICBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0
cnVjdHVyZSk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8
U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAotICAgICAgICAgICAgICAgIG91
dE9mQm91bmRzLCB0aGlzLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBnbG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAg
ICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBvdXRPZkJv
dW5kcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQsCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9i
amVjdCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbV9jdXJyZW50Tm9kZSk7CkBAIC0yOTgxLDcg
KzI5ODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJp
bmdGcm9tQ2hhckNvZGVVbnR5cGVkLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3ByUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nRnJv
bUNoYXJDb2RlVW50eXBlZCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wclJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTMwMDEsNyArMzAw
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9k
ZSkKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJp
bmdzUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwgc2NyYXRj
aFJlZyk7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgc2NyYXRjaFJlZykpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSwg
c2NyYXRjaFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3BlcnR5UmVnKSk7Cisg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgcHJvcGVydHlSZWcpKTsKICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1f
Y3VycmVudE5vZGUpOwogfQogCkBAIC0zOTI1LDkgKzM5MzMsOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJy
YXlUeXBlCiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KSA6
CiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdE5vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KSwK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsKKyAgICAgICAg
ICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJv
cGVydHlSZWcsIHZhbHVlR1BSKSk7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0
eVJlZyksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKKyAgICAgICAgICAg
IE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVJl
ZyksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICNlbmRpZgogICAgIH0K
IApAQCAtNDAzNSw3ICs0MDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsRm9yT2JqZWN0V2l0aFN0cmluZyhOb2RlKiBub2RlLCBjb25zdCBTY29wZWQKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CiAgICAgZWxzZQogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmpl
Y3RTdHJpbmcsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BS
LCBhcmcyR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3Ry
aW5nLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwg
YXJnMkdQUik7CiAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CkBAIC00MDYyLDcgKzQwNzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWxGb3JPYmplY3RXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN5bWJvbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTeW1i
b2wsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBh
cmcyR1BSKTsKICAgICBpZiAoY2FuVXNlRmx1c2ggPT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
QEAgLTQxMzAsMTIgKzQxMzgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
aXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBn
ZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHQucmVncygp
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHJlc3VsdC5y
ZWdzKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCiAgICAgICAgICAgICAgICAg
YmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAg
IHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCisgICAgICAg
ICAgICByZXN1bHQucmVncygpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLAog
ICAgICAgICAgICAgYmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9h
ZEdQUigpKSk7CiAgICAgfTsKIApAQCAtNDIxNSw3ICs0MjIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTdHJpbmcoTm9kZSogbm9kZSkKICAgICAg
ICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nU3RyaWN0KSA6CiAgICAgICAgICAgICAo
bm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2Vs
bFN0cmluZ05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCks
Ci0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBh
cmczUmVncyk7CisgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BS
LCBhcmcyR1BSLCBhcmczUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IG5vUmVzdWx0KG5vZGUpOwpAQCAtNDIzOCw3ICs0MjQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdpdGhTeW1ib2woTm9kZSogbm9kZSkKICAgICAgICAg
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpCiAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sU3RyaWN0KQogICAgICAgICAgICAgOiAobm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5
bWJvbE5vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCksCi0g
ICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmcz
UmVncyk7CisgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBh
cmcyR1BSLCBhcmczUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5v
UmVzdWx0KG5vZGUpOwpAQCAtNDI1Niw3ICs0MjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VSZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1ZhbHVlUmVncywgc3Vic2Ny
aXB0UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00MjgyLDcgKzQyOTAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPnByaXZhdGVGaWVs
ZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3BlcmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmll
bGRHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlWYWxTZXRQcml2YXRlRmllbGRHZW5lcmljOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVn
cywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVS
ZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsK
QEAgLTQzMjYsMTEgKzQzMzQsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFBy
aXZhdGVOYW1lKE5vZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb24sCi0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRy
KTsKKyAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQ
UiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIG51bGxwdHIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb24sCi0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJv
cGVydHlHUFIpLCB2YWx1ZVJlZ3MsIGdlbi5zdHViSW5mbygpLCBudWxscHRyKTsKKyAgICAgICAg
ICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVn
cywgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOwogICAgIH0KIAogICAgIG1faml0LmFkZFB1dEJ5
VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtNDQwMCwxMSArNDQwOCwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkNo
ZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJy
YW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBi
YXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0g
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlUmVncywgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShicmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2Vzcyhn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTQ0NDgsMTEgKzQ0NTYsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVNldFByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8o
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0
ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
U2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
R1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9CiAKICAgICBt
X2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NDg4
LDcgKzQ0OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBKU1ZhbHVl
UmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QYXJzZUludEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIHJhZGl4R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCByYWRpeEdQUik7CiAgICAgICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1MDEsNyArNDUwOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmcsIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUdQUiwgcmFkaXhHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50U3RyaW5nLCByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIsIHJhZGl4R1BSKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDUxNCw3ICs0NTIyLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmljLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmljLCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDUyNyw3ICs0NTM1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblBhcnNlSW50U3RyaW5nTm9SYWRpeCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHZhbHVlR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBh
cnNlSW50U3RyaW5nTm9SYWRpeCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHZhbHVlR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC00NTUwLDExICs0NTU4LDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2RlKiBub2Rl
KQogICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKICAgICBpZiAoIWhhc0luc3RhbmNl
VmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9u
ICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewogICAgICAgICBKU1ZhbHVlUmVn
cyBoYXNJbnN0YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJlZ3MoKTsK
KyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgcmVzdWx0R1BS
KTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5n
cHIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOworICAgICAgICBub3RE
ZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBo
YXNJbnN0YW5jZVZhbHVlUmVncy5ncHIoKSwgcmVzdWx0R1BSKSk7CiAjZWxzZQogICAgICAgICBu
b3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoaGFzSW5zdGFuY2VWYWx1ZVJl
Z3MpKTsKLSAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCBUcnVz
dGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBw
ZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNl
VmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0R1BSKSk7CiAjZW5kaWYKICAgICB9CiAKQEAg
LTQ1ODgsMTAgKzQ1OTcsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNl
T2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
SUNDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1
YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1
YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGlt
aXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwg
dmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90
eXBlUmVncyk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNl
T2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZ2Vu
LnN0dWJJbmZvKCksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CiAgICAgfQogICAgIAogICAg
IG1faml0LmFkZEluc3RhbmNlT2YoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NzAxLDcgKzQ3
MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9k
ZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkJpdE5vdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIApAQCAtNDcx
Niw3ICs0NzI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5v
ZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQml0Tm90LCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZFJlZ3MpOworICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00NzU2LDcg
KzQ3NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0
T3AoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBw
ZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNs
b3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNDgyMSw3ICs0
ODMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9w
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0Lm1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFs
dWUoKSwgcmlnaHRSZWdzKTsKICAgICB9CiAKLSAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93
UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5j
dGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdz
LCByaWdodFJlZ3MpOwogCiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC00ODg0LDEzICs0ODkzLDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdHdpc2VPcChOb2RlKiBub2RlKQogCiAgICAgICAgIHN3aXRj
aCAob3ApIHsKICAgICAgICAgY2FzZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0QW5kSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFZhbHVlQml0WG9yOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25CaXRYb3JIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVmFsdWVCaXRPcjoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0T3JIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRPckhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00OTc0LDcg
KzQ5ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRT
aGlmdEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKHNu
aXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUw
NDAsNyArNTA0OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRS
aWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0
Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRp
b24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKHNuaXBw
ZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTUwNjksNyArNTA3OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkJpdExTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTA5Niw3ICs1MTA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlQml0UlNoaWZ0KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUxODQsNyArNTE5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVn
cyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgICAgIC8vIEZJWE1FOiBjYWxsIGEgbW9yZSBzcGVjaWFs
aXplZCBmdW5jdGlvbgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90
TnVtYmVyLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3RO
dW1iZXIsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTIwNSw3ICs1MjE0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKQEAgLTUyMjEsNyArNTIzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZUFkZChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MsIG5vZGUpOwpAQCAtNTI4NCw3ICs1MjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25WYWx1ZVN1YiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblZhbHVlU3ViLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUzMDUsNyArNTMx
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQog
ICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25TdWJIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAg
LTU0MTIsOSArNTQyMSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9k
ZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGlmIChhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhS
ZXBhdGNoKQotICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENh
bGwgPSBjYWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVz
dGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRl
LT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVy
UmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3Bl
cmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzKTsKKyAgICAgICAgICAg
ICAgICBhZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihu
b25SZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBpbm5lckxlZnRSZWdzLCBpbm5lclJpZ2h0UmVncyk7CiAKICAgICAgICAgICAgIHNp
bGVudEZpbGwoc2F2ZVBsYW5zKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CkBAIC01NDQzLDcgKzU0NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElD
KE5vZGUqIG5vZGUsIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9
CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihub25S
ZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNo
aW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0UmVncywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICB9CiAKQEAgLTU0NzYsNyArNTQ4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mQ3VzdG9tKE5vZGUqIG5vZGUpCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBz
bG93Q2FzZSA9IG1faml0Lmp1bXAoKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvckdQ
UiwgaGFzSW5zdGFuY2VSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BS
LCBoYXNJbnN0YW5jZVJlZ3MpKTsKIAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KQEAgLTU1NzUsOSArNTU4NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb09iamVjdE9yQ2FsbE9iamVjdENvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAg
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBlcnJvck1lc3NhZ2UgPSBudWxscHRyOwogICAgICAgICBp
ZiAobm9kZS0+aWRlbnRpZmllck51bWJlcigpICE9IFVJTlQzMl9NQVgpCiAgICAgICAgICAgICBl
cnJvck1lc3NhZ2UgPSBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7Ci0g
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MsIGVycm9yTWVzc2FnZSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub09iamVjdCwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBlcnJvck1lc3Nh
Z2UpKTsKICAgICB9IGVsc2UKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVlUmVncykpOwor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwg
dmFsdWVSZWdzKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC01
NzIxLDcgKzU3MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhBYnMoTm9k
ZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygp
OwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRo
aXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQWJzLCByZXN1bHQuZnBy
KCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Bcml0aEFicywgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAgICAgICBicmVh
azsKQEAgLTU3NDUsNyArNTc1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aENsejMyKE5vZGUqIG5vZGUpCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBH
UFJSZWcgcmVzdWx0UmVnID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aENsejMyLCByZXN1bHRSZWcsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkFyaXRoQ2x6MzIsIHJlc3VsdFJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
MVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgc3RyaWN0SW50MzJSZXN1
bHQocmVzdWx0UmVnLCBub2RlKTsKIH0KQEAgLTU3NjksNyArNTc3OCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBcml0aERvdWJsZVVuYXJ5T3AoTm9kZSogbm9kZSwgZG91YmxlICgq
ZG91YmxlRnVuY3RpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygp
OwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3Vs
dC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9k
ZSk7CiB9CkBAIC01ODg2LDcgKzU4OTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
SW5jT3JEZWMoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
ICAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPm9wKCkgPT0gSW5jID8gb3BlcmF0aW9uSW5jIDog
b3BlcmF0aW9uRGVjOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFS
ZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CiB9CkBAIC02MDI1LDkgKzYwMzQsOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4q
IG1hdGhJQwogICAgICAgICAgICAgc2lsZW50U3BpbGwoc2F2ZVBsYW5zKTsKIAogICAgICAgICAg
ICAgaWYgKGljR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAg
ICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24o
cmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgY2hpbGRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAgICAgICAgIGlj
R2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJlcGF0Y2hpbmdG
dW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxk
UmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihu
b25SZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBjaGlsZFJlZ3MpOworICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93
UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CiAKICAgICAgICAg
ICAgIHNpbGVudEZpbGwoc2F2ZVBsYW5zKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CkBAIC02MDQ4LDcgKzYwNTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQwogICAg
ICAgICB9KTsKICAgICB9IGVsc2UgewogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgY2hpbGRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICB9CiAKQEAgLTYxMTMsNyArNjEyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVW
YWx1ZU11bChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFwQmlnSW50LCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYxMzEsNyArNjE0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNdWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25WYWx1ZU11bCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02MzEz
LDcgKzYzMjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSog
bm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGl2SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CkBAIC02MzMxLDcgKzYzNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblZhbHVlRGl2LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFs
dWVEaXYsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNjQxNSw3ICs2NDI0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUpCiAgICAgICAg
IG1faml0Lm1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwgcmlnaHRSZWdzKTsKICAg
ICB9CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogCiAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02NTc5LDcgKzY1
ODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhGUm91bmQoTm9kZSogbm9k
ZSkKICAgICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQXJpdGhGUm91bmQsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhG
Um91bmQsIHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3Vs
dC5mcHIoKSwgbm9kZSk7CiB9CkBAIC02NjA0LDcgKzY2MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTW9k
SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmln
SW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02NjIxLDcgKzY2MzAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blZhbHVlTW9kLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
UmVncywgb3AyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzAxOCw3ICs3MDI3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSogbm9kZSkKICAgICAgICAg
QVNTRVJUKG5vZGUtPm9wKCkgPT0gQXJpdGhUcnVuYyk7CiAgICAgICAgIG9wZXJhdGlvbiA9IG9w
ZXJhdGlvbkFyaXRoVHJ1bmM7CiAgICAgfQotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZ3VtZW50UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzA1MSw3ICs3MDYw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydChOb2RlKiBub2RlKQog
ICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhTcXJ0LCBy
ZXN1bHQuZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCks
IG5vZGUpOwogfQpAQCAtNzE3OSw3ICs3MTg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBvd0hlYXBCaWdJ
bnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNzE5OCw3ICs3MjA3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblZhbHVlUG93LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1
ZVBvdywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdz
LCByaWdodFJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNzkzNSw3ICs3OTQ0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KAogICAgIGRvbmUubGluaygmbV9qaXQp
OwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAg
ICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCBsZWZ0VGVt
cEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKSk7Cisg
ICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0VxLCBsZWZ0
VGVtcEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KSk7CiAgICAgCiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQobGVmdFRlbXBHUFIsIG5vZGUpOwog
fQpAQCAtODA4NSw3ICs4MDk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z0NvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWwKICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKGNvbXBhcmVGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24oY29t
cGFyZUZ1bmN0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTgxODYsNyArODE5NSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTYW1lVmFsdWUoTm9kZSogbm9kZSkKIAog
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVl
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJl
Z3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTgyMDMsNyArODIx
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xlYW5TdHJpbmcoTm9kZSog
bm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgR1BSVGVtcG9yYXJ5IGVxKHRoaXMpOwogICAgIEdQUlJl
ZyBlcUdQUiA9IGVxLmdwcigpOwogCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgZXFHUFIpOworICAg
IG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBlcUdQUik7CiAgICAgbV9qaXQu
Y29tcGFyZVB0cihpbnZlcnQgPyBDQ2FsbEhlbHBlcnM6OkVxdWFsIDogQ0NhbGxIZWxwZXJzOjpO
b3RFcXVhbCwgc3RyR1BSLCBlcUdQUiwgZXFHUFIpOwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1
bHQoZXFHUFIsIG5vZGUpOwogfQpAQCAtODIyMCw3ICs4MjI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvQm9vbGVhblN0cmluZ09yT3RoZXIoTm9kZSogbm9kZSwgYm9vbCBpbnZl
cnQpCiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHZhbHVlUmVncywgbm9kZS0+Y2hpbGQx
KCksICh+U3BlY0NlbGxDaGVjaykgfCBTcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hJZk5vdFN0cmlu
ZyhjZWxsR1BSKSk7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCB0ZW1wR1BSKTsKKyAgICBtX2pp
dC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2pp
dC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgdGVtcEdQUik7CiAgICAgbV9qaXQuY29t
cGFyZVB0cihpbnZlcnQgPyBDQ2FsbEhlbHBlcnM6OkVxdWFsIDogQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgY2VsbEdQUiwgdGVtcEdQUiwgdGVtcEdQUik7CiAgICAgYXV0byBkb25lID0gbV9qaXQu
anVtcCgpOwogCkBAIC04MjQxLDcgKzgyNTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
U3RyaW5nQnJhbmNoKEVkZ2Ugbm9kZVVzZSwgQmFzaWNCbG9jayogdGFrZW4sIEJhc2ljQmxvYwog
CiAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGVVc2UsIHN0ckdQUik7CiAKLSAgICBicmFuY2hQdHIo
Q0NhbGxIZWxwZXJzOjpFcXVhbCwgc3RyR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgbm90VGFrZW4pOworICAgIGJyYW5j
aFVubGlua2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc3RyR1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwg
bm90VGFrZW4pOwogICAgIGp1bXAodGFrZW4pOwogCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9k
ZSk7CkBAIC04MjU4LDcgKzgyNjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RyaW5n
T3JPdGhlckJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYQogICAgIEdQ
UlJlZyBjZWxsR1BSID0gdmFsdWVSZWdzLnBheWxvYWRHUFIoKTsKICAgICBERkdfVFlQRV9DSEVD
Syh2YWx1ZVJlZ3MsIG5vZGVVc2UsICh+U3BlY0NlbGxDaGVjaykgfCBTcGVjU3RyaW5nLCBtX2pp
dC5icmFuY2hJZk5vdFN0cmluZyhjZWxsR1BSKSk7CiAKLSAgICBicmFuY2hQdHIoQ0NhbGxIZWxw
ZXJzOjpFcXVhbCwgY2VsbEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3Jh
cGgoKSwganNFbXB0eVN0cmluZyh2bSgpKSksIG5vdFRha2VuKTsKKyAgICBicmFuY2hVbmxpbmtl
ZENvbnN0YW50KENDYWxsSGVscGVyczo6RXF1YWwsIGNlbGxHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBub3RUYWtl
bik7CiAgICAganVtcCh0YWtlbiwgRm9yY2VKdW1wKTsKIAogICAgIG5vdENlbGwubGluaygmbV9q
aXQpOwpAQCAtODI3Miw3ICs4MjgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNv
bnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSogbm9kZSkKIHsKICAgICBHUFJUZW1wb3Jhcnkgc3Rv
cmFnZSh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7Ci0gICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG5vZGUtPnN0b3JhZ2VQb2ludGVyKCkpLCBzdG9yYWdl
R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudDo6bm9uQ2VsbFB0cihtX2dyYXBoLCBub2RlLT5zdG9yYWdlUG9pbnRlcigpKSwg
c3RvcmFnZUdQUik7CiAgICAgc3RvcmFnZVJlc3VsdChzdG9yYWdlR1BSLCBub2RlKTsKIH0KIApA
QCAtODMyNSw3ICs4MzM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4
ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoSWZSb3BlU3RyaW5nSW1wbChzdG9yYWdlUmVnKSwKLSAgICAgICAgICAgICAgICB0aGlzLCBv
cGVyYXRpb25SZXNvbHZlUm9wZSwgc3RvcmFnZVJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWcpKTsKKyAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9w
ZSwgc3RvcmFnZVJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcpKTsK
IAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VS
ZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgICAgICBicmVh
azsKQEAgLTg0MzYsNyArODQ0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRC
eVZhbE9uRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhCiAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAg
ICAgICAgICAgIGlzT3V0T2ZCb3VuZHMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50
LAotICAgICAgICAgICAgICAgIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAg
IGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAgIH0KICAgICAKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtODU0Miw4ICs4NTUxLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEdsb2JhbFRoaXMoTm9kZSogbm9kZSkKIHsKICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0g
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICBtX2ppdC5sb2FkUHRyKGdsb2JhbE9iamVjdC0+YWRk
cmVzc09mR2xvYmFsVGhpcygpLCByZXN1bHRHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENv
bnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZXN1bHRHUFIpOwor
ICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNHbG9i
YWxPYmplY3Q6Om9mZnNldE9mR2xvYmFsVGhpcygpKSwgcmVzdWx0R1BSKTsKICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKQEAgLTg3MDUsNyArODcxNCw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBS
ZWdpc3RlcmVkU3RydWN0CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPENs
YXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwg
c2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9q
aXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkpKTsKLSAgICBtX2ppdC5zdG9yZVB0cihUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVP
clJhcmVEYXRhKCkpKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgc2NyYXRjaDFH
UFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0Y2gxR1BSLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSkp
OwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIH0KIApAQCAtODgwMCw3ICs4ODEwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEZ1bmN0aW9uTmFtZShOb2RlKiBub2Rl
KQogICAgIEpTVmFsdWVSZWdzIG5hbWVWYWx1ZVJlZ3MgPSBuYW1lVmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
ZXRGdW5jdGlvbk5hbWUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jR1BSLCBuYW1l
VmFsdWVSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZSwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmNHUFIsIG5hbWVWYWx1ZVJlZ3MpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTg4
MTcsNyArODgyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYXJhcmdzTGVuZ3Ro
KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB1bmxvY2soR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJh
cmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpA
QCAtODg1NCw3ICs4ODY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvYWRWYXJh
cmdzKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5zdG9yZTMyKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQpKTsKIAot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1JlZ3MsIGRh
dGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRhdG9yeU1p
bmltdW0pOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3Vt
ZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEt
Pm1hbmRhdG9yeU1pbmltdW0pOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBu
b1Jlc3VsdChub2RlKTsKQEAgLTg5ODUsMTAgKzg5OTUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKiBub2RlKQogICAgIC8vIERvbid0IG5lZWQg
YSBtZW1vcnkgYmFycmllcnMgc2luY2Ugd2UganVzdCBmYXN0LWNyZWF0ZWQgdGhlIGFjdGl2YXRp
b24sIHNvIHRoZQogICAgIC8vIGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBtX2ppdC5z
dG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3Bl
OjpvZmZzZXRPZk5leHQoKSkpOwotICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVk
SW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLAotICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkp
KTsKLSAgICAgICAgCisgICAgbV9qaXQuc3RvcmVVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSks
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNMZXhpY2FsRW52aXJvbm1lbnQ6Om9m
ZnNldE9mU3ltYm9sVGFibGUoKSkpOworCiAgICAgLy8gTXVzdCBpbml0aWFsaXplIGFsbCBtZW1i
ZXJzIHRvIHVuZGVmaW5lZCBvciB0aGUgVERaIGVtcHR5IHZhbHVlLgogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCB0YWJsZS0+c2NvcGVTaXplKCk7ICsraSkgewogICAgICAgICBtX2ppdC5z
dG9yZVRydXN0ZWRWYWx1ZSgKQEAgLTkxMTUsMTIgKzkxMjMsOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCiAgICAgICAgICAgICAgICAgICAgIGlubGlu
ZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAg
ICAgICAgIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0
Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIoCi0gICAg
ICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVj
b3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAgICAgICAgc2NyYXRjaDFHUFIp
OwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubG9hZFVubGlu
a2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwg
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwgc2Ny
YXRjaDFHUFIpOwogICAgIH0gZWxzZQogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIHNjcmF0Y2gxR1BSKTsKIApAQCAt
OTIxOCw3ICs5MjIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3Bl
ZEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICAvLyBXZSBzZXQgdXAgdGhlIGFyZ3Vt
ZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ugd2UgaGF2ZSB0aGUgd2hvbGUgcmVnaXN0ZXIgZmlsZSBh
bmQgd2UgY2FuCiAgICAgLy8gc2V0IHRoZW0gdXAgZGlyZWN0bHkgaW50byB0aGUgYXJndW1lbnQg
cmVnaXN0ZXJzLiBUaGlzIGFsc28gbWVhbnMgdGhhdCB3ZSBkb24ndCBoYXZlIHRvCkBAIC05MjM1
LDExICs5MjM5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRB
cmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDIsIFsmXSAoR1BS
UmVnIGRlc3RHUFIpIHsgZW1pdEdldEFyZ3VtZW50U3RhcnQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKICAgICAgICAgMSwgWyZd
IChHUFJSZWcgZGVzdEdQUikgewotICAgICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmpl
Y3QtPnNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKLSAgICAgICAgICAgICAgICBkZXN0R1BS
KTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdC0+c2NvcGVkQXJndW1l
bnRzU3RydWN0dXJlKCkpLCBkZXN0R1BSKTsKKyAgICAgICAgfSk7CisgICAgbV9qaXQuc2V0dXBB
cmd1bWVudCgKKyAgICAgICAgMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeworICAgICAgICAgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGRlc3RHUFIpOwogICAgICAgICB9KTsKLSAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAs
IFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0R1BSKTsgfSk7CiAgICAgCiAgICAgYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVTY29wZWRBcmd1bWVudHMsIHJlc3VsdEdQ
Uik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTkyNTMsNyArOTI1OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9k
ZSkKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgCiAgICAgLy8gV2Ugc2V0IHVwIHRoZSBhcmd1bWVudHMgb3Vyc2VsdmVzLCBiZWNh
dXNlIHdlIGhhdmUgdGhlIHdob2xlIHJlZ2lzdGVyIGZpbGUgYW5kIHdlIGNhbgogICAgIC8vIHNl
dCB0aGVtIHVwIGRpcmVjdGx5IGludG8gdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KQEAgLTkyNjQs
MTIgKzkyNjksMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUNsb25lZEFy
Z3VtZW50cyhOb2RlKiBub2RlKQogICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZdIChHUFJS
ZWcgZGVzdEdQUikgeyBlbWl0R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMs
IGRlc3RHUFIpOyB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0g
KEdQUlJlZyBkZXN0R1BSKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAg
ICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKAotICAgICAgICAgICAgICAgICAgICBtX2pp
dC5ncmFwaCgpLCBnbG9iYWxPYmplY3QtPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKLSAg
ICAgICAgICAgICAgICBkZXN0R1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENv
bnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2Jh
bE9iamVjdC0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpLCBkZXN0R1BSKTsKKyAgICAgICAg
fSk7CisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKKyAgICAgICAgMCwgWyZdIChHUFJSZWcgZGVz
dEdQUikgeworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGRlc3RHUFIpOwogICAgICAgICB9KTsKLSAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0R1BS
KTsgfSk7CiAgICAgCiAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVDbG9u
ZWRBcmd1bWVudHMsIHJlc3VsdEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAg
LTkyODMsMTUgKzkyODgsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFy
Z3VtZW50c0J1dHRlcmZseShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLQogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91cnNlbHZlcywgYmVjYXVzZSB3
ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4KICAgICAvLyBzZXQgdGhl
bSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCiAKICAgICAvLyBBcmd1
bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0YXJ0LCAzOmxlbmd0aAogICAgIG1faml0LnNl
dHVwQXJndW1lbnQoMiwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBlbWl0R2V0TGVuZ3RoKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwogICAgIG1faml0LnNldHVwQXJndW1lbnQo
MSwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBlbWl0R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKLSAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsm
XSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0R1BSKTsgfSk7CisgICAgbV9qaXQuc2V0dXBB
cmd1bWVudCgKKyAgICAgICAgMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeworICAgICAgICAgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGRlc3RHUFIpOworICAgICAgICB9KTsKIAogICAgIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5LCByZXN1bHRHUFIpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC05MzYwLDcgKzkzNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlUmVzdChOb2RlKiBub2RlKQogCiAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVSZXN0LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNTdGFydEdQUiwgSW1tMzIobm9kZS0+bnVt
YmVyT2ZBcmd1bWVudHNUb1NraXAoKSksIGFycmF5TGVuZ3RoR1BSKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNyZWF0ZVJlc3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZ3VtZW50c1N0YXJ0R1BSLCBJbW0zMihub2RlLT5udW1iZXJPZkFyZ3VtZW50
c1RvU2tpcCgpKSwgYXJyYXlMZW5ndGhHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC05NDU0LDcgKzk0NjAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJndW1lbnQpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25TcHJlYWRGYXN0QXJyYXksIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50KSk7CiAKICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKQEAgLTk0
NjQsNyArOTQ3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSog
bm9kZSkKIAogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmd1bWVudCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3By
ZWFkRmFzdEFycmF5LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBh
cmd1bWVudCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpAQCAtOTQ3
Myw3ICs5NDc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBu
b2RlKQogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TcHJlYWRHZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmd1bWVudCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFk
R2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1l
bnQpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgfQpAQCAtOTYxMCw3ICs5NjE2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAogICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgIG9wZXJh
dGlvbk5ld0FycmF5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIGdsb2JhbE9iamVjdCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKSwKKyAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwg
bV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkp
LAogICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVmZmVyKSwgc2l6ZV90KG5vZGUtPm51bUNo
aWxkcmVuKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC05NzY5LDcgKzk3
NzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKE5v
ZGUqIG5vZGUpCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNwcmVhZFNsb3csIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYnVmZmVyLCBub2RlLT5udW1DaGlsZHJl
bigpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNwcmVhZFNsb3cs
IHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFs
T2JqZWN0KSwgYnVmZmVyLCBub2RlLT5udW1DaGlsZHJlbigpKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtOTk0OSw3
ICs5OTU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSog
bm9kZSkKICAgICAgICAgfQogCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlx
dWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xv
d1BhdGhHZW5lcmF0b3I+KAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIGdsb2JhbE9iamVjdCksIHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQ
UikpOworICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhT
aXplLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGds
b2JhbE9iamVjdCksIHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAg
IH0KIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wNCh0aGlzKTsKQEAgLTEwMTY4LDcgKzEwMTc0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5SW5kZXhPZihOb2RlKiBub2RlKQog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25BcnJheUluZGV4T2ZTdHJpbmcsIGxlbmd0aEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRHUFIsIGluZGV4R1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZTdHJpbmcsIGxlbmd0aEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRHUFIs
IGluZGV4R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBz
dHJpY3RJbnQzMlJlc3VsdChsZW5ndGhHUFIsIG5vZGUpOwpAQCAtMTAxODMsMTEgKzEwMTg5LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4T2YoTm9kZSogbm9kZSkK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1v
ZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZURvdWJsZSwgbGVuZ3RoR1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJl
Z3MsIGluZGV4R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJ
bmRleE9mVmFsdWVEb3VibGUsIGxlbmd0aEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRSZWdzLCBpbmRleEdQUik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6
OkNvbnRpZ3VvdXM6Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5k
ZXhPZlZhbHVlSW50MzJPckNvbnRpZ3VvdXMsIGxlbmd0aEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRSZWdzLCBpbmRleEdQUik7CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlSW50MzJPckNv
bnRpZ3VvdXMsIGxlbmd0aEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3Jh
Z2VHUFIsIHNlYXJjaEVsZW1lbnRSZWdzLCBpbmRleEdQUik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xMDI1Niw3ICsxMDI2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VM
ZW5ndGhHUFIsIHJlc3VsdFJlZ3MpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bkFycmF5UHVzaCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVl
UmVncywgYmFzZUdQUikpOworICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgdmFsdWVSZWdzLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDMwMiw3
ICsxMDMwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSog
bm9kZSkKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYXN0UGF0aCA9IG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0
cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIo
KSkpKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQu
anVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMy
KGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIs
IFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKICAg
ICAgICAgc3RvcmFnZS51c2UoKTsKQEAgLTEwMzI3LDcgKzEwMzMzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQu
Ym94SW50MzIoc3RvcmFnZUxlbmd0aEdQUiwgcmVzdWx0UmVncyk7CiAKICAgICAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0
aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgdmFsdWVGUFIsIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZSwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlRlBSLCBiYXNlR1BS
KSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMDM3MSw3ICsxMDM3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKIAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBmYXN0UGF0aCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+
KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkpKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1
c2hEb3VibGVNdWx0aXBsZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywg
b3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVt
ZW50Q291bnQpKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgc3RvcmFnZS51c2Uo
KTsKQEAgLTEwNDA0LDcgKzEwNDEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
cmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxl
bmd0aEdQUiwgcmVzdWx0UmVncyk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9u
QXJyYXlQdXNoLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVS
ZWdzLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGJhc2VHUFIpKTsKIAogICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNDQ4LDcg
KzEwNDU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBu
b2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYXN0UGF0aCA9IG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0cihz
dGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkp
KTsKIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBU
cnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOworICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG1f
aml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0
ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAg
c3RvcmFnZS51c2UoKTsKQEAgLTEwNTAzLDggKzEwNTA5LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUlzT2JqZWN0KE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUeXBlT2ZJc09iamVjdChOb2RlKiBub2RlKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwotICAgIAogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwogICAgIApAQCAtMTA1MzYsNyArMTA1NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVHlwZU9mSXNPYmplY3QoTm9kZSogbm9kZSkKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMs
IG9wZXJhdGlvblR5cGVPZklzT2JqZWN0LCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdCwKKyAgICAg
ICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZJc09iamVjdCwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAgICAgICAg
IHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAgICBkb25lLmxpbmsoJm1faml0KTsK
QEAgLTEwNTQ2LDggKzEwNTUwLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVP
ZklzT2JqZWN0KE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0Nh
bGxhYmxlKE5vZGUqIG5vZGUsIFNfSklUT3BlcmF0aW9uX0dDIHNsb3dQYXRoT3BlcmF0aW9uKQog
ewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgIAogICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJl
Z3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAtMTA1NzMsNyArMTA1NzUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDYWxsYWJsZShOb2RlKiBub2RlLCBTX0pJVE9w
ZXJhdGlvbl9HQyBzbG93UGF0aE9wZQogICAgIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgc2xvd1Bh
dGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgc2xvd1Bh
dGgsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSkpOwogICAgIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTA1ODksMTQgKzEwNTkx
LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NvbnN0cnVjdG9yKE5vZGUqIG5v
ZGUpCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklz
Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0
UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Jc0NvbnN0cnVjdG9yLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKiBub2RlKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpOwotICAgIAogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygp
OwogICAgIApAQCAtMTA2MDgsNyArMTA2MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVHlwZU9mKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuZW1pdFR5cGVPZigKICAgICAgICAgdmFs
dWVSZWdzLCByZXN1bHRHUFIsCiAgICAgICAgIFsmXSAoVHlwZW9mVHlwZSB0eXBlLCBib29sIGZh
bGxzVGhyb3VnaCkgewotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCB2bSgpLnNtYWxsU3RyaW5ncy50eXBlU3RyaW5nKHR5cGUp
KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIHZtKCkuc21hbGxTdHJp
bmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgaWYgKCFmYWxs
c1Rocm91Z2gpCiAgICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAg
ICAgICAgfSwKQEAgLTEwNjE5LDcgKzEwNjE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVR5cGVPZihOb2RlKiBub2RlKQogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25U
eXBlT2ZPYmplY3QsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvblR5cGVPZk9iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXls
b2FkR1BSKCkpKTsKICAgICAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0x
MDY2OCw3ICsxMDY2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lzQ29u
c3RhbnQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IENlbGxVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
Q29uc3RhbnRWYWx1ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5v
ZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwgY2VsbC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IEFTU0VSVCghbm9kZS0+Y29uc3RhbnQoKS0+dmFsdWUoKS5pc0NlbGwoKSB8fCAhbm9kZS0+Y29u
c3RhbnQoKS0+dmFsdWUoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTA5MzksMTMgKzEwOTM5LDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5vZGUpCiAgICAgdW5zaWduZWQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOwogICAgIHN3
aXRjaCAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpIHsKICAgICBjYXNlIDE6Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUD4oZnVuY3Rp
b24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgcmVnc1swXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2Fz
dDxKX0pJVE9wZXJhdGlvbl9HUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3Vs
dFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9j
YXN0PEpfSklUT3BlcmF0aW9uX0dQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJl
c3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVnc1sxXSk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9H
UFA+KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0pOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIDM6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJ
VE9wZXJhdGlvbl9HUFBQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVn
cyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJd
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0dQUFA+KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpAQCAtMTA5NjksOSArMTA5NjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRDYWdlKCkpCi0gICAgICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSklQPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXJVSUQobm9k
ZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlciksIGdldHRlci5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3Bl
cmF0aW9uX0dKSVA+KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0
YSgpLT5pZGVudGlmaWVyTnVtYmVyKSwgZ2V0dGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlv
bl9HSkk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVu
dGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9w
ZXJhdGlvbl9HSkk+KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0
YSgpLT5pZGVudGlmaWVyTnVtYmVyKSk7CiAKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bSgpLnRvcENhbGxGcmFtZSk7CiAgICAgICAgIG1faml0
LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKQEAg
LTExMTEyLDEwICsxMTExMiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJp
bmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogCiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQot
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
bm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAgICB9CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAg
LTExMTQyLDEyICsxMTE0MiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJp
bmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICAg
ICAgc2xvd1BhdGgyLmxpbmsoJm1faml0KTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+
b3AoKSA9PSBUb1N0cmluZykKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9T
dHJpbmcsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVsc2UgaWYg
KG5vZGUtPm9wKCkgPT0gU3RyaW5nVmFsdWVPZikKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmlu
Z1ZhbHVlT2YsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENh
bGxTdHJpbmdDb25zdHJ1Y3Rvcik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxT
dHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3AxUmVncyk7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAgLTExMjE4LDEwICsxMTIxOCwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9y
U3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMUdQUik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJU
KG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFHUFIpOworICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMUdQUik7CiAgICAgICAgIH0KICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAg
LTExMjc0LDcgKzExMjc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9u
VG9TdHJpbmcoTm9kZSogbm9kZSkKICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgcmVzdWx0LmdwcigpKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25GdW5jdGlvblRvU3RyaW5nLCByZXN1bHQuZ3By
KCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jdGlvbi5ncHIoKSkpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkZ1bmN0aW9uVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGZ1bmN0aW9uLmdwcigpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bm9kZSk7CiB9CkBAIC0xMTI4OCw3ICsxMTI4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSogbm9kZSwgaW50
CiB7CiAgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICB9OwpAQCAtMTEzMzMsNyArMTEzMzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gY2FsbFRvU3Ry
aW5nID0gWyZdIChhdXRvIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgYXV0byB2YWx1ZVJl
ZywgR1BSUmVnIHJhZGl4R1BSKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCB2YWx1ZVJlZywgcmFkaXhHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWcs
IHJhZGl4R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH07CkBAIC0xMTQzMSw3ICsxMTQzMSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2woTm9kZSogbm9kZSkKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdTeW1ib2xXaXRoU3RyaW5nRGVzY3JpcHRpb24s
IHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUik7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE0NDIsNyArMTE0NDIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3ltYm9sKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5
bWJvbFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgaW5wdXRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTExNTY1LDcgKzExNTY1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSog
bm9kZSwgVHlwZWRBcnJheVQKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdp
dGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSksCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOwor
ICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJ1Y3R1
cmUsIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KQEAgLTExNTkwLDEzICsxMTU5MCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3UmVnZXhwKE5vZGUqIG5vZGUpCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVk
SW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PFJlZ0V4cE9iamVjdD4o
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFH
UFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAg
ICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwKLSAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFuZEZs
YWdzKCkpKTsKKyAgICBtX2ppdC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4
cEFuZEZsYWdzKCkpKTsKICAgICBtX2ppdC5zdG9yZVZhbHVlKGxhc3RJbmRleFJlZ3MsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5k
ZXgoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3UmVnZXhw
V2l0aExhc3RJbmRleCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVn
ZXhwLCBsYXN0SW5kZXhSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdleHAsIGxhc3RJbmRleFJl
Z3MpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTEyNTIyLDcg
KzEyNTIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1w
KE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEsIEdQUlIKIHsKICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgp
KSwgc2NyYXRjaCk7CiAgICAgYXV0byBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJ
bXBsKHNjcmF0Y2gpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1Jv
cGUsIHRoaXMsIG9wZXJhdGlvblJlc29sdmVSb3BlLCBzY3JhdGNoLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgdmFsdWUpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc2NyYXRjaCwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlKSk7CiAgICAgCiAgICAgYWRkQnJhbmNoKAogICAg
ICAgICBtX2ppdC5icmFuY2gzMigKQEAgLTEyNzY0LDcgKzEyNzYyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3RyaW5nKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEq
IGRhdGEsIEdQUlIKIAogICAgIGlmICghY2FuRG9CaW5hcnlTd2l0Y2ggfHwgdG90YWxMZW5ndGgg
PiBPcHRpb25zOjptYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoVG90YWxMZW5ndGgoKSkgewogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3
aXRjaFN0cmluZywgc3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmlu
Zyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEt
PnN3aXRjaFRhYmxlSW5kZXgpLCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgbV9qaXQuZmFySnVtcChzdHJpbmcsIEpTU3dp
dGNoUHRyVGFnKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4MDEsNyArMTI3OTksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoTm9kZSogbm9kZSwgU3dp
dGNoRGF0YSogZGF0YSwgR1BSUgogICAgIAogICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAg
ICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
c3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFi
bGUsIHN0cmluZyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0
cmluZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0YXRpY19jYXN0PHNpemVfdD4o
ZGF0YS0+c3dpdGNoVGFibGVJbmRleCksICZ1bmxpbmtlZFRhYmxlLCBzdHJpbmcpOwogICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
IG1faml0LmZhckp1bXAoc3RyaW5nLCBKU1N3aXRjaFB0clRhZyk7CkBAIC0xMjk0OCw3ICsxMjk0
Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQoTm9kZSog
bm9kZSkKICAgICBHUFJSZWcgYWNjZXNzb3JHUFIgPSBhY2Nlc3Nvci5ncHIoKTsKIAogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IFB1dEdldHRl
ckJ5SWQgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkIDogb3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+
aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGFjY2Vzc29y
R1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9w
ZXJhdGlvblB1dEdldHRlckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEy
OTY2LDcgKzEyOTY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEdldHRlclNl
dHRlckJ5SWQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0dGVyLmdwcigp
OwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1
dEdldHRlclNldHRlciwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50
aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1
dGVzKCksIGdldHRlckdQUiwgc2V0dGVyR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blB1dEdldHRlclNldHRlciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIs
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JB
dHRyaWJ1dGVzKCksIGdldHRlckdQUiwgc2V0dGVyR1BSKTsKICNlbHNlCiAgICAgLy8gVGhlc2Ug
SlNWYWx1ZXMgbWF5IGJlIEpTVW5kZWZpbmVkIE9SIEpTRnVuY3Rpb24qLgogICAgIC8vIEF0IHRo
YXQgdGltZSwKQEAgLTEyOTc4LDcgKzEyOTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVB1dEdldHRlclNldHRlckJ5SWQoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyBzZXR0
ZXJSZWdzID0gc2V0dGVyLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyUmVncy5wYXlsb2FkR1BS
KCksIHNldHRlclJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blB1dEdldHRlclNldHRlciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIs
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JB
dHRyaWJ1dGVzKCksIGdldHRlclJlZ3MucGF5bG9hZEdQUigpLCBzZXR0ZXJSZWdzLnBheWxvYWRH
UFIoKSk7CiAjZW5kaWYKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0xMjk5Miw3
ICsxMjk5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGUoTm9k
ZSogbm9kZSkKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZSwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIGlkZW50
aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xMzAwNCw3
ICsxMzAwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGVGb3JI
b2lzdGluZ0Z1bmNEZWNsSW5FdmFsKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29s
dmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC0xMzAzMiw3ICsxMzAzMCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldER5bmFtaWNWYXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uR2V0RHluYW1pY1ZhciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHNjb3BlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSks
IG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtMTMwNDYsNyArMTMwNDQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQog
ICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFt
aWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgdmFs
dWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdl
dFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0
KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zh
ck5vblN0cmljdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1
ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0
UHV0SW5mbygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVzdWx0KG5v
ZGUpOwogfQpAQCAtMTMxMTIsNyArMTMxMTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0QWNjZXNzb3JCeVZhbChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBhY2Nlc3NvckdQUiA9
IGFjY2Vzc29yLmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHN1YnNj
cmlwdFJlZ3MsIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBzdWJzY3JpcHRSZWdzLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNz
b3JHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2Rl
KTsKQEAgLTEzMjg5LDcgKzEzMjg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmluZ1JlcGxhY2UoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwot
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVw
bGFjZVJlZ0V4cEVtcHR5U3RyLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIsIHJlc3VsdC5n
cHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BS
KTsKICAgICAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBpZiAo
c2FtcGxlKQpAQCAtMTMzMTAsNyArMTMzMDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaW5nUmVwbGFjZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLCBy
ZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4
cEdQUiwgcmVwbGFjZUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5n
UHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCByZWdFeHBHUFIsIHJlcGxhY2VHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGlmIChzYW1wbGUpCkBAIC0xMzMzMiw3ICsxMzMzMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUqIG5vZGUpCiAK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VH
ZW5lcmljLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdS
ZWdzLCBzZWFyY2hSZWdzLCByZXBsYWNlUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nUmVncywgc2VhcmNoUmVncywgcmVwbGFjZVJlZ3Mp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOwogICAgIGlmIChzYW1wbGUpCkBAIC0xMzM1Myw3ICsxMzM1MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3koTm9kZSog
bm9kZSkKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBj
YWxsT3BlcmF0aW9uKAogICAgICAgICBvcGVyYXRpb25SZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlj
a3ksIHJlc3VsdFJlZ3MsCi0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgVHJ1c3RlZEltbVB0cihu
b2RlLT5jZWxsT3BlcmFuZCgpKSwgYXJndW1lbnRHUFIpOworICAgICAgICBnbG9iYWxPYmplY3RH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVy
YW5kKCktPmNlbGwoKSksIGFyZ3VtZW50R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTEzMzczLDcgKzEz
MzcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cE1hdGNoRmFzdEdsb2Jh
bChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwogICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgIG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdEds
b2JhbFN0cmluZywgcmVzdWx0UmVncywKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBUcnVzdGVk
SW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLCBhcmd1bWVudEdQUik7CisgICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgYXJndW1lbnRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtMTM1
NTcsNyArMTM1NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVBy
b3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5l
RGF0YVByb3BlcnR5U3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRl
c0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEzNTc0LDcgKzEzNTcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2Rl
KTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZ0lkZW50LCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRl
bnQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudEdQUiwgdmFs
dWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM1ODYsNyArMTM1ODQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAg
IHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0
cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVBy
b3BlcnR5U3ltYm9sLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNTk3LDcgKzEzNTk1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBu
b2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVS
ZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZp
bmVEYXRhUHJvcGVydHksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBw
cm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNjM4LDcgKzEzNjM2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHko
Tm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3Nv
clByb3BlcnR5U3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQ
Uiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM2NTUsNyArMTM2NTMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2Rl
KQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
dHJpbmdJZGVudCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50R1BS
LCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0
dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM2NjcsNyArMTM2NjUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAg
ICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2ws
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVy
R1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0
dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMzY3OCw3ICsxMzY3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNo
aWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIs
IGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFj
Y2Vzc29yUHJvcGVydHksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBw
cm9wZXJ0eVJlZ3MsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM4
MTAsNyArMTM4MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0TWFwQnVja2V0
TmV4dChOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+YnVja2V0T3duZXJUeXBlKCkg
PT0gQnVja2V0T3duZXJUeXBlOjpTZXQpOwogICAgICAgICBzZW50aW5lbCA9IHZtKCkuc2VudGlu
ZWxTZXRCdWNrZXQoKTsKICAgICB9Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBzZW50aW5lbCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQu
bG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQu
Z3JhcGgoKSwgc2VudGluZWwpLCByZXN1bHRHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQpOwog
CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTM4NzIsNyArMTM4NzAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVGhyb3coTm9kZSogbm9kZSkKICAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dERkcsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCB2YWx1ZVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dERkcs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOwogICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgIG5vUmVzdWx0KG5v
ZGUpOwpAQCAtMTM4ODQsNyArMTM4ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VGhyb3dTdGF0aWNFcnJvcihOb2RlKiBub2RlKQogICAgIEdQUlJlZyBtZXNzYWdlR1BSID0gbWVz
c2FnZS5ncHIoKTsKICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG1lc3NhZ2VH
UFIpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25U
aHJvd1N0YXRpY0Vycm9yLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWVzc2FnZUdQUiwg
bm9kZS0+ZXJyb3JUeXBlKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGF0
aWNFcnJvciwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1lc3NhZ2VHUFIsIG5vZGUt
PmVycm9yVHlwZSgpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1faml0LmJy
ZWFrcG9pbnQoKTsKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEzOTc0LDcgKzEzOTcyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0Zs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JO
ZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4
R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC0xNDA0NywxMiAr
MTQwNDUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBk
YXRlUHJvcGVydHlOYW1lKE5vZGUqIG5vZGUpCiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9q
aXQuanVtcCgpKTsKIAogICAgICAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7Ci0gICAgICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0oKS5zbWFs
bFN0cmluZ3Muc2VudGluZWxTdHJpbmcoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lmxv
YWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IHZtKCkuc21hbGxTdHJpbmdzLnNlbnRpbmVsU3RyaW5nKCkpLCByZXN1bHRHUFIpOwogICAgICAg
ICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIG9wZXJhdGlvbkNhbGwu
bGluaygmbV9qaXQpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVy
YXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGluZGV4LCBtb2RlLCBlbnVtZXJhdG9yKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbmRleCwgbW9kZSwgZW51bWVyYXRvcik7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CkBA
IC0xNDA5Niw5ICsxNDA5NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJh
dG9ySGFzUHJvcGVydHkoTm9kZSogbm9kZSwgU2xvd1BhdGhGdW5jdGlvblR5CiAgICAgICAgIG9w
ZXJhdGlvbkNhc2VzLmxpbmsoJm1faml0KTsKIAogICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BS
KCkgPT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhG
dW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5TmFtZVJlZ3Ms
IGluZGV4R1BSLCBtb2RlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhG
dW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5TmFtZVJl
Z3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eU5hbWVSZWdz
LCBpbmRleEdQUiwgbW9kZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xNDIwMCw3ICsxNDE5OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSogbm9kZSkKIAogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eUlkV2l0aFRoaXMsCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
cywgdGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywg
dGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMo
KSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpA
QCAtMTQyODEsNyArMTQyNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJv
cGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBDZWxsT3JPdGhlclVzZSkgewogICAgICAgICAgICAgYXV0byBub3RPdGhl
ciA9IG1faml0LmJyYW5jaElmTm90T3RoZXIoYmFzZVJlZ3MsIHNjcmF0Y2gxR1BSKTsKLSAgICAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0o
KS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAg
ICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIHZtKCkuZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpLCBzY3JhdGNo
MUdQUik7CiAgICAgICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAg
ICAgICAgICBub3RPdGhlci5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTE0MzM5LDcgKzE0
MzM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRv
cihOb2RlKiBub2RlKQogCiAgICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgICAg
IHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgc2NyYXRj
aDFHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncy5wYXlsb2FkR1BS
KCkpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTE0MzU0LDcgKzE0MzUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3Bl
cnR5RW51bWVyYXRvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTQ0NDMsOSArMTQ0NDEsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU3RyQ2F0KE5vZGUqIG5vZGUpCiAKICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOwogICAgIGVsc2UKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMTQ1MTUsNyArMTQ1
MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2Rl
KiBub2RlKQogICAgIGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJy
YXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsK
KyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVs
bHB0cik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CkBAIC0xNDU0Myw3ICsxNDU0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJh
eVR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRB
cnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3Vt
ZW50UmVncyk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFy
Z3VtZW50UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ1NzgsNyArMTQ1NzYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgICAgIGZ1bmN0
aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgIGVsc2UKICAgICAgICAgZnVuY3Rpb24g
PSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24sIHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIGZ1bmN0aW9uLCB0ZW1wUmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHRoaXNWYWx1ZVJlZ3MpKTsKIAogICAgIGpzVmFsdWVSZXN1bHQo
dGVtcFJlZ3MsIG5vZGUpOwogfQpAQCAtMTQ2MjgsNyArMTQ2MjYsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2Rl
KiBub2RlKQogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd0J1dEFycmF5QnVmZmVyQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBy
ZXN1bHRHUFIsICZ2bSgpLCBhcnJheVN0cnVjdHVyZSwgc2NyYXRjaDNHUFIpKTsKIAotICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
bm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9w
ZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUikpOworICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBP
YmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdl
dE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9iamVjdEdQUikpOwogCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NjQzLDcgKzE0NjQxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5
TmFtZXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2Jq
ZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRP
d25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvYmplY3RHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2Jq
ZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRP
d25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBvYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTE0NjU4LDcgKzE0NjU2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blBy
b3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkg
PT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXMgOiBvcGVyYXRpb25PYmplY3RHZXRP
d25Qcm9wZXJ0eU5hbWVzLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
YmplY3RSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IE9iamVjdEtl
eXMgPyBvcGVyYXRpb25PYmplY3RLZXlzIDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlO
YW1lcywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0UmVn
cyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ2ODUsNyArMTQ2ODMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0QXNzaWduKE5vZGUqIG5vZGUpCiAgICAgICAgIHNwZWN1bGF0
ZU9iamVjdChub2RlLT5jaGlsZDIoKSwgc291cmNlR1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEFzc2lnbk9iamVj
dCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlR1BSKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3NpZ25PYmplY3QsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0YXJnZXRHUFIsIHNvdXJjZUdQUik7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDY5
OCw3ICsxNDY5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24o
Tm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgc291cmNlUmVncyA9IHNvdXJjZS5qc1Zh
bHVlUmVncygpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWduVW50eXBlZCwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHRhcmdldEdQUiwgc291cmNlUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uT2JqZWN0QXNzaWduVW50eXBlZCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHRhcmdldEdQUiwgc291cmNlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDcyMyw3ICsxNDcyMSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVjdCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGVPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3
MzgsNyArMTQ3MzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGUs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZVJlZ3MpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlUmVncyk7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwpAQCAtMTQ3OTAsMTQgKzE0Nzg4LDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVUaGlzKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuZW1pdEluaXRpYWxpemVJbmxpbmVT
dG9yYWdlKHJlc3VsdEdQUiwgaW5saW5lQ2FwYWNpdHlHUFIpOwogICAgIG1faml0Lm11dGF0b3JG
ZW5jZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgY2FsbGVlR1BSLCBub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSk7CisgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBj
YWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5KCkpKTsKIAogICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVBy
b21pc2UoTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjYWxsZWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0xNDgx
NSw3ICsxNDgxMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNl
KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJhcmVEYXRhR1BSID0gc3RydWN0dXJlR1BSOwogCiAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1
cmUobm9kZS0+aXNJbnRlcm5hbFByb21pc2UoKSA/IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9t
aXNlU3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSkpLCBzdHJ1
Y3R1cmVHUFIpOwotICAgIGF1dG8gZmFzdFByb21pc2VQYXRoID0gbV9qaXQuYnJhbmNoUHRyKEND
YWxsSGVscGVyczo6RXF1YWwsIGNhbGxlZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgbm9kZS0+aXNJbnRlcm5hbFByb21pc2UoKSA/IGdsb2JhbE9iamVjdC0+
aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoKSA6IGdsb2JhbE9iamVjdC0+cHJvbWlzZUNvbnN0
cnVjdG9yKCkpKTsKKyAgICBhdXRvIGZhc3RQcm9taXNlUGF0aCA9IG1faml0LmJyYW5jaFVubGlu
a2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgp
ID8gZ2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcigpIDogZ2xvYmFsT2Jq
ZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSkpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKIApAQCAtMTQ4MjcsNyArMTQ4MjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKiBub2RlKQogICAgIG1faml0LmVtaXROb25O
dWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJbnRl
cm5hbFByb21pc2U6OmluZm8oKSA6IEpTUHJvbWlzZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1
Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIp
OworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBz
Y3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSkpKTsKIAogICAgIGZhc3RQcm9taXNlUGF0aC5saW5rKCZt
X2ppdCk7CkBAIC0xNDg0MCw3ICsxNDgzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUo
anNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5h
bEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0KSkpKTsKICAgICBtX2pp
dC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8g
b3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNlIDogb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9i
YWxPYmplY3QpLCBjYWxsZWVHUFIpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gb3BlcmF0
aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNlIDogb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZSwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxP
YmplY3QpLCBjYWxsZWVHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
IH0KQEAgLTE0ODQ5LDcgKzE0ODQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVu
YW1lIE9wZXJhdGlvbj4KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5h
bEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24pCiB7Ci0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgY2FsbGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMTQ4NzYsNyArMTQ4NzQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVy
YXRpb24gb3BlcgogICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0
dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0Ns
YXNzOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7
Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29u
c3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFs
T2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
UHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwog
CiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwpAQCAtMTQ4ODcs
NyArMTQ4ODUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxG
aWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcgogICAgICAgICBtX2ppdC5zdG9y
ZVRydXN0ZWRWYWx1ZShpbml0aWFsVmFsdWVzW2luZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFs
RmllbGQoaW5kZXgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0g
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBo
KCksIGdsb2JhbE9iamVjdCksIGNhbGxlZUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBj
YWxsZWVHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1
MDExLDcgKzE1MDA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZl
KE5vZGUqIG5vZGUpCiAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgbV9q
aXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFByaW1pdGl2ZSwgdGhpcywgb3BlcmF0aW9u
VG9QcmltaXRpdmUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1
bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90UHJp
bWl0aXZlLCB0aGlzLCBvcGVyYXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGlj
aXRseSk7CiB9CkBAIC0xNTAzNSw3ICsxNTAzMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUb1Byb3BlcnR5S2V5KE5vZGUqIG5vZGUpCiAgICAgYWxyZWFkeVByb3BlcnR5S2V5Lmxp
bmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0
UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9Qcm9wZXJ0eUtleSwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwog
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlNDZWxsLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQpAQCAtMTUwNjUsNyArMTUwNjMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmljKE5vZGUqIG5vZGUpCiAgICAgaXNI
ZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50
UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMs
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3Mp
KTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsK
IH0KQEAgLTE1MTAwLDcgKzE1MDk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNh
bGxOdW1iZXJDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1i
ZXIoYXJndW1lbnRSZWdzLCB0ZW1wR1BSKSk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1
bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOworICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKIH0KQEAgLTE1MTQ3LDcgKzE1MTQ1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWlsKE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBzY29w
ZVJlZyA9IHNjb3BlLmdwcigpOwogCi0gICAgbV9qaXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNr
ZXQoc2hhZG93UGFja2V0UmVnLCB0aGlzUmVncywgc2NvcGVSZWcsIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKSksIGNhbGxTaXRlSW5kZXgpOworICAgIG1faml0
LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywg
c2NyYXRjaDFSZWcpOworICAgIG1faml0LmxvZ1NoYWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRv
d1BhY2tldFJlZywgdGhpc1JlZ3MsIHNjb3BlUmVnLCBzY3JhdGNoMVJlZywgY2FsbFNpdGVJbmRl
eCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKQEAgLTE1MTY2LDcgKzE1MTY1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEFkZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TZXRBZGQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwg
a2V5UmVncywgaGFzaEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywg
aGFzaEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNTE4OCw3ICsxNTE4Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVNYXBTZXQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwU2V0LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIHZh
bHVlUmVncywgaGFzaEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBTZXQsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVncywg
dmFsdWVSZWdzLCBoYXNoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1NDA3LDcgKzE1NDA2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIG1faml0LmVtaXRM
b2FkUHJvdG90eXBlKHZtKCksIG9iamVjdEdQUiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uR2V0UHJvdG90eXBlT2ZPYmplY3QsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CisgICAgICAgICAgICByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTU0MjQsNyArMTU0MjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJv
dG90eXBlT2YoTm9kZSogbm9kZSkKIAogICAgICAgICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2
bSgpLCB2YWx1ZUdQUiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJv
dG90eXBlT2YsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU1NTEsNyArMTU1NTAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFr
ZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0
b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUs
IHJlc3VsdEdQUiwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwKKyAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgZ2xvYmFsT2JqZWN0KSwKICAgICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRD
b252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLAogICAgICAgICBz
aXplR1BSLCBzdG9yYWdlR1BSKSk7CkBAIC0xNTY4NCw3ICsxNTY4Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSwgU19KSVRPcGVy
YXRpb25fR0NaIHNsCiAgICAgfQogICAgIH0KIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQUikpOworICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRo
T3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
R1BSLCBpbmRleEdQUikpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFj
dENhdGNoTG9jYWwoTm9kZSogbm9kZSkKQEAgLTE1ODA0LDExICsxNTgwMywxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VHUFIsIEpTVmFsdQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4g
c2xvd1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQ
YXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
IHZhbHVlUmVncywKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0
aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2
YWx1ZVJlZ3MsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1
ZVJlZ3MsCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRl
bnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KIApAQCAtMTU4MzcsNyArMTU4MzYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlQ29tcGFyZShOb2RlKiBu
b2RlLCBNYWNyb0Fzc2VtYmxlcgogICAgICAgICBhcmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1
bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0xNTg1OCw3ICsx
NTg1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVD
b21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVyCiAgICAgbV9qaXQuY29tcGFyZTMyKGNv
bmQsIGFyZzFSZWdzLnBheWxvYWRHUFIoKSwgYXJnMlJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRH
UFIpOwogCiAgICAgaWYgKCFpc0tub3duSW50ZWdlcihub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8
ICFpc0tub3duSW50ZWdlcihub2RlLT5jaGlsZDIoKS5ub2RlKCkpKQotICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9u
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJl
Z3MpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRo
LCB0aGlzLCBoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKSk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KQEAg
LTE1ODk4LDcgKzE1ODk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVQ
ZWVwaG9sZUJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLAogICAgICAgICBhcmcy
LnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rp
b24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBh
cmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgYnJh
bmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24sIHJlc3VsdEdQUiwgdGFrZW4pOwpAQCAtMTU5
MjIsNyArMTU5MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZVBlZXBo
b2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgICAgICAgICBzbG93
UGF0aC5saW5rKCZtX2ppdCk7CiAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3Mp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKQEAgLTE1OTYyLDcgKzE1OTYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIG5vdEVxdWFsQ2Fz
ZS5saW5rKCZtX2ppdCk7CiAKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTYx
MTUsNyArMTYxMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9k
ZSogbm9kZSkKIAogICAgIGF1dG8gaXNOb25FbXB0eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3Qz
MihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGFsbG9jYXRvckdQUik7CiAKLSAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmco
bV9qaXQuZ3JhcGgoKS5tX3ZtKSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2Vk
Q29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNF
bXB0eVN0cmluZyhtX2ppdC5ncmFwaCgpLm1fdm0pKSwgcmVzdWx0R1BSKTsKIAogICAgIGlzTm9u
RW1wdHlTdHJpbmcubGluaygmbV9qaXQpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsK
QEAgLTE2MTIzLDExICsxNjEyMiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFr
ZVJvcGUoTm9kZSogbm9kZSkKICAgICBzd2l0Y2ggKG51bU9wR1BScykgewogICAgIGNhc2UgMjoK
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAg
c2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0pKTsKKyAgICAgICAgICAgIHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25NYWtlUm9wZTIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgMzoKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9w
R1BSc1syXSkpOworICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3Bl
MywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBv
cEdQUnNbMV0sIG9wR1BSc1syXSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTYxNDEsMTEgKzE2MTQwLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgc3dpdGNoIChudW1PcEdQUnMp
IHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUy
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BS
c1sxXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgMzoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTMsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdLCBvcEdQ
UnNbMl0pOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0s
IG9wR1BSc1syXSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xNjI0OCw5ICsxNjI0Nyw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICBp
ZiAoIXJlY292ZXJHZW5lcmljQ2FzZS5lbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoYmFzZVJl
Z3MudGFnR1BSKCkgPT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRp
b25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxv
YWRHUFIoKSksIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CisgICAgICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywg
b3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
UmVncy5wYXlsb2FkR1BSKCkpLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFt
ZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZ3MsIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CisgICAgICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3Bl
cmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JH
UFIpKTsKICAgICAgICAgfQogCiAgICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNjk1MzQ1
NTc5OWU1OGQ2MmU5YzlmZTNlNDY2NjNhOWVkYmRiMmE0NC4uMGZkMzZiZjFlYzUyZjljNjk5MTk3
ZjA1ZWJjYTMxMWY4N2YyY2E4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaApAQCAtOTc0LDE2ICs5NzQsMTUgQEAgY2xhc3MgU3BlY3VsYXRpdmVK
SVQgewogICAgICAgICBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpu
b25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCkpOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9w
ZXJhdGlvbl9DYiBvcGVyYXRpb24sIENvZGVCbG9jayogY29kZUJsb2NrKQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihW
X0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIEdQUlJlZyBjb2RlQmxvY2tHUFIpCiAgICAgewot
ICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBhIHdlYWstcG9pbnRlci4K
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Vl9KSVRPcGVyYXRpb25fQ2I+KFRydXN0ZWRJ
bW1QdHIoc3RhdGljX2Nhc3Q8dm9pZCo+KGNvZGVCbG9jaykpKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHM8Vl9KSVRPcGVyYXRpb25fQ2I+KGNvZGVCbG9ja0dQUik7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9u
KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxG
cmFtZVJvbGxiYWNrT25FeGNlcHRpb24oWl9KSVRPcGVyYXRpb25fRyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFpfSklU
T3BlcmF0aW9uX0cgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgZ2xvYmFsT2JqZWN0
R1BSKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Wl9KSVRPcGVyYXRpb25f
Rz4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPFpfSklUT3BlcmF0aW9uX0c+KGdsb2JhbE9iamVj
dEdQUik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25F
eGNlcHRpb25TZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKQEAgLTEx
NTgsNiArMTE1NywxMiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRkQnJhbmNoKG1faml0LmJyYW5jaFB0cihjb25kLCBsZWZ0LCByaWdodCksIGRlc3Rp
bmF0aW9uKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
ICAgIHZvaWQgYnJhbmNoVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6UmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBUIGxlZnQsIFUgcmlnaHQsIEJhc2ljQmxvY2sqIGRlc3RpbmF0aW9uKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZEJyYW5jaChtX2ppdC5icmFuY2hVbmxpbmtlZENvbnN0
YW50KGNvbmQsIGxlZnQsIHJpZ2h0KSwgZGVzdGluYXRpb24pOworICAgIH0KICAgICAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIHZvaWQgYnJhbmNoVGVzdFB0cihK
SVRDb21waWxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFQgdmFsdWUsIFUgbWFzaywgQmFzaWNC
bG9jayogZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBhOTEyZWI1OThiOTgyMmEzNTk2YTFjMThjZTFlNjIz
ZThhYWE2ODExLi4wY2ExZDhjMzI2MmQ4YjE1Nzk5NGZhYjUwYjM0ODllMmU0YjJjNDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTE3OCwxMiArMTc4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCiAgICAgICAgICAgICBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVudGlm
aWVyLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAog
ICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05l
ZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlm
aWVyLnJhd0JpdHMoKSk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWQoZ2VuLCBz
bG93UGF0aC5nZXQoKSk7CkBAIC0yMTUsMTIgKzIxNSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFz
ZUdQUgogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6
QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJh
dGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCiAgICAgICAgICAgICBE
b250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAg
ICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0
aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZp
ZXIucmF3Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhU
aGlzT3B0aW1pemUsCiAgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMo
KSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9CiAg
ICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuCiAKICAgICAgICAgR1BS
UmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3By
KCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1pdExv
YWRTdHJ1Y3R1cmUodm0oKSwgYXJnR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBh
cmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwpAQCAtMjk5LDYgKzI5OSw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRn
ZSBvcGVyYW5kLCBOCiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlz
KTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAorICAg
ICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9i
amVjdC5ncHIoKTsKKwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsOwogICAgICAg
ICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CkBAIC0zMDcsOSAr
MzEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5j
aE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE4KICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCks
IG5vdFRha2VuKTsKIAotICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2Nh
bEdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQ
UiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmpl
Y3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVj
dEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RH
UFIpOwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBhcmdHUFIsIHJlc3Vs
dEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0
R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxP
YmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgdGFrZW4pOwpAQCAtNDUyLDcgKzQ1Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShO
b2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIGJyYW5jaDY0KEpJVENvbXBpbGVy
OjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAg
ICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIApAQCAtNTAzLDcgKzUwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2Rl
CiAKICAgICAgICAganVtcChpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuLCBGb3JjZUp1bXApOwog
Ci0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBh
cmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
MUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGls
ZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAgICAg
fQogCkBAIC01NDEsNyArNTQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFs
dWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAgICBu
b3RFcXVhbENhc2UubGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCkBAIC01OTcsNyAr
NTk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0
cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogCiAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tNjQoMCksIHJlc3VsdEdQUik7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsK
KyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhp
cywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygmbV9q
aXQpOwogCkBAIC03MzQsNyArNzM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKHZt
KCksIG1faml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNo
R1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2Up
OwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAg
ICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNv
bihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CkBAIC03NjMsNyArNzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgoKSwg
bm9kZSwgaXNGbHVzaGVkKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSaWdodCBu
b3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxlIGlz
IGZsdXNoZWQuCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZv
clZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJndW1lbnRzR1BSLCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJBcmdP
ZmZzZXQpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JW
YXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50c0dQUiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJn
T2Zmc2V0KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUg
Y2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCkBAIC03
NzMsNyArNzc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUobV9qaXQsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBmYWxzZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgIG1f
aml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9mKHZv
aWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBW
YXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZz
ZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwgZGF0
YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1
c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEdQUkluZm86OnJldHVyblZhbHVl
R1BSLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICB9CkBAIC05
MTAsNyArOTExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkK
ICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0Fs
aWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICBtX2ppdC5zdWJQdHIoVHJ1
c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJuYWxD
YWxsKCk7CiAgICAgICAgIG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMTAwNSw3ICsxMDA2LDkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0LmVt
aXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2Ug
bW92ZWQgY2FsbGVlR1BSIHRvIHJlZ1QwCiAgICAgfQogCisgICAgLy8gRklYTUUKICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxPYmplY3QgbmVlZHMgdG8gYmUgaW4gcmVnVDMK
KyAgICAvLyBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7IC8vIEpTR2xvYmFs
T2JqZWN0IG5lZWRzIHRvIGJlIGluIHJlZ1QzCiAgICAgY2FsbExpbmtJbmZvLT5lbWl0U2xvd1Bh
dGgodm0oKSwgbV9qaXQpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xODkwLDcgKzE4
OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5v
ZGUpCiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgcmVz
dWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkp
LCByZXN1bHRHUFIpOwogICAgIG1faml0LmNvbXBhcmU2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IHZhbHVlR1BSLCByZXN1bHRHUFIsIHJlc3VsdEdQUik7CiAgICAgdW5ibGVzc2VkQm9vbGVhblJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTkzMSwxMCArMTkzNCwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcihFZGdlIG5vZGVVc2Us
IGJvb2wgaW52ZXJ0KQogCiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZh
bHVlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgCi0gICAgICAgICAgICBtX2ppdC5icmFu
Y2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hVbmxpbmtlZENvbnN0YW50KAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvciht
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMjA4NiwxMCArMjA4OSwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChFZGdlIG5v
ZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYQogCiAgICAgICAgIG1faml0LmVtaXRMb2FkU3Ry
dWN0dXJlKHZtKCksIHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwKLSAgICAgICAg
ICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFVubGlua2VkQ29u
c3RhbnQoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6
Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvciht
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAg
ICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0y
MTU1LDcgKzIxNTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJyYW5jaChF
ZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYXNpY0JsbwogICAgICAgICAgICAgaWYg
KCFpc0RlZmluaXRlbHlTdHJpbmcpCiAgICAgICAgICAgICAgICAgc2tpcFN0cmluZ0Nhc2UgPSBt
X2ppdC5icmFuY2hJZk5vdFN0cmluZyh2YWx1ZUdQUik7CiAKLSAgICAgICAgICAgIGJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgbm90VGFrZW4pOworICAg
ICAgICAgICAgYnJhbmNoVW5saW5rZWRDb25zdGFudChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZh
bHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBqc0Vt
cHR5U3RyaW5nKHZtKCkpKSwgbm90VGFrZW4pOwogICAgICAgICAgICAganVtcCh0YWtlbiwgRm9y
Y2VKdW1wKTsKIAogICAgICAgICAgICAgaWYgKCFpc0RlZmluaXRlbHlTdHJpbmcpCkBAIC0yMTc5
LDggKzIxODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZEJyYW5jaChFZGdl
IG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYXNpY0JsbwogICAgICAgICBpZiAoc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7CiAgICAgICAgICAgICBicmFuY2hUZXN0OChN
YWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpT
Q2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQpLCB0YWtlbik7CiAgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2
bSgpLCB2YWx1ZUdQUiwgdGVtcDFHUFIpOwotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIHRlbXAyR1BSKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0ZW1wMkdQUik7CiAgICAgICAgICAgICBi
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wMUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHRlbXAyR1BSLCB0
YWtlbik7CiAgICAgICAgICAgICBqdW1wKG5vdFRha2VuLCBGb3JjZUp1bXApOwogICAgICAgICB9
IGVsc2UKQEAgLTIzNzgsNyArMjM4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAg
ICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgICAgICAgICAgaWYgKGNh
blVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKICAgICAgICAgICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAt
MjQzNCwxMSArMjQzNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwo
Tm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBpZiAo
SklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBn
ZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAg
ICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIs
IG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIs
IHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAg
ICAgICAgfQogCiAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwpAQCAtMjUxMyw3ICsyNTE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
ICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9i
amVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0UmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVy
dHlSZWcpKTsKICAgICAgICAgfQogCiAKQEAgLTI2MDUsNyArMjYwNyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8
c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAg
ICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dFJlZ3MuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZykpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLmdwcigpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncy5ncHIoKSwgbm9kZSk7CiAgICAgICAgIH0KIApAQCAt
MjY2Myw3ICsyNjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAg
ICAgICAgICByZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBw
cm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIHJlc3VsdFJlZywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTI3MDMsMjggKzI3
MDUsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cFRlc3RJbmxpbmUoTm9k
ZSogbm9kZSkKIAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGdsb2JhbE9iamVjdEdQUiA9IGdsb2JhbE9iamVjdC5n
cHIoKTsKLSAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgR1BSUmVnIGFyZ3Vt
ZW50R1BSOwotICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCiAgICAgR1BSVGVtcG9yYXJ5IHN0cmluZ0lt
cGwodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0cmluZ0RhdGEodGhpcyk7CiAgICAgR1BSVGVt
cG9yYXJ5IHN0ckxlbmd0aCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgb3V0cHV0KHRoaXMpOwot
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQyKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSB0ZW1wMCh0
aGlzKTsKICAgICBHUFJUZW1wb3JhcnkgdGVtcDEodGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHRl
bXAyOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVtcG9yYXJ5PiB0ZW1wMjsKKworICAgIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxPYmplY3QuZ3ByKCk7CisgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBzdHJpbmdJbXBsR1BSID0gc3RyaW5nSW1wbC5n
cHIoKTsKICAgICBHUFJSZWcgc3RyaW5nRGF0YUdQUiA9IHN0cmluZ0RhdGEuZ3ByKCk7CiAgICAg
R1BSUmVnIG91dHB1dEdQUiA9IG91dHB1dC5ncHIoKTsKICAgICBHUFJSZWcgc3RyTGVuZ3RoR1BS
ID0gc3RyTGVuZ3RoLmdwcigpOwotICAgIEdQUlJlZyByZXN1bHQyR1BSID0gcmVzdWx0Mi5ncHIo
KTsKICAgICBHUFJSZWcgdGVtcDBHUFIgPSB0ZW1wMC5ncHIoKTsKICAgICBHUFJSZWcgdGVtcDFH
UFIgPSB0ZW1wMS5ncHIoKTsKICAgICBHUFJSZWcgdGVtcDJHUFIgPSBJbnZhbGlkR1BSUmVnOwot
ICAgIEdQUlJlZyBzd2FwUmVnID0gSW52YWxpZEdQUlJlZzsKIAogICAgIGF1dG8gaml0Q29kZUJs
b2NrID0gcmVnRXhwLT5nZXRSZWdFeHBKSVRDb2RlQmxvY2soKTsKICAgICBBU1NFUlQoaml0Q29k
ZUJsb2NrKTsKQEAgLTI3MzIsNDQgKzI3MzAsMzEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVJlZ0V4cFRlc3RJbmxpbmUoTm9kZSogbm9kZSkKIAogI2lmICFDUFUoWDg2XzY0KQogICAg
IGlmIChpbmxpbmVDb2RlU3RhdHM4Qml0Lm5lZWRzVGVtcDIoKSkgewotICAgICAgICBHUFJUZW1w
b3JhcnkgcmVhbFRlbXAyKHRoaXMpOwotICAgICAgICB0ZW1wMi5hZG9wdChyZWFsVGVtcDIpOwot
ICAgICAgICB0ZW1wMkdQUiA9IHRlbXAyLmdwcigpOworICAgICAgICB0ZW1wMi5lbXBsYWNlKHRo
aXMpOworICAgICAgICB0ZW1wMkdQUiA9IHRlbXAyLT5ncHIoKTsKICAgICB9CiAjZW5kaWYKIAog
ICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2RlLT5jaGlsZDIoKSwgYmFzZUdQUik7CiAKLSAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Qgb3BlcmF0aW9uQ2FzZXM7Ci0KLSAgICBhdXRvIHN3YXBSZWdJZk5lZWRlZCA9IFsmXSB7
Ci0gICAgICAgIGlmIChnbG9iYWxPYmplY3RHUFIgPT0gcmVzdWx0R1BSKSB7Ci0gICAgICAgICAg
ICBzd2FwUmVnID0gYWxsb2NhdGUoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoZ2xvYmFsT2Jq
ZWN0R1BSLCBzd2FwUmVnKTsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdEdQUiA9IHN3YXBSZWc7
Ci0gICAgICAgIH0gZWxzZSBpZiAoYmFzZUdQUiA9PSByZXN1bHRHUFIpIHsKLSAgICAgICAgICAg
IHN3YXBSZWcgPSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShiYXNlR1BSLCBz
d2FwUmVnKTsKLSAgICAgICAgICAgIGJhc2VHUFIgPSBzd2FwUmVnOwotICAgICAgICB9IGVsc2Ug
aWYgKGFyZ3VtZW50R1BSID09IHJlc3VsdEdQUikgewotICAgICAgICAgICAgc3dhcFJlZyA9IGFs
bG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKGFyZ3VtZW50R1BSLCBzd2FwUmVnKTsK
LSAgICAgICAgICAgIGFyZ3VtZW50R1BSID0gc3dhcFJlZzsKLSAgICAgICAgfQotICAgIH07Cisg
ICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CisKKyAgICBhdXRvIHJlZ0V4cFRl
c3RJbmxpbmVDYXNlID0gWyZdKEdQUlJlZyBhcmd1bWVudEdQUiwgQ0NhbGxIZWxwZXJzOjpKdW1w
TGlzdCYgc2xvd0Nhc2VzKSB7CisgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MoYXJndW1lbnRHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzdHJpbmdJ
bXBsR1BSKTsKKyAgICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIHJvcGUgb3IgMTYgYml0LCB3
ZSBjYWxsIHRoZSBvcGVyYXRpb24uCisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZSb3BlU3RyaW5nSW1wbChzdHJpbmdJbXBsR1BSKSk7CisgICAgICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmdJbXBsR1BSLCBT
dHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwKKyAgICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJp
bmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CiAKLSAgICBhdXRvIHJlZ0V4cFRlc3RJbmxpbmVDYXNl
ID0gWyZdIHsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJpbmdJbXBsR1BSLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpLCBzdHJpbmdEYXRhR1BSKTsK
ICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmluZ0ltcGxH
UFIsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSwgc3RyTGVuZ3RoR1BSKTsKIAot
ICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBzdHJpbmdJbXBsR1BSOwotCi0gICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBpbmRleEdQUik7Ci0KKyAgICAgICAgLy8gQ2xvYmJlcmlu
ZyBpbnB1dCByZWdpc3RlcnMgaXMgT0sgc2luY2Ugd2UgYWxyZWFkeSBjYWxsZWQgZmx1c2hSZWdp
c3RlcnMuCiAgICAgICAgIFlhcnI6OllhcnJKSVRSZWdpc3RlcnMgeWFyclJlZ2lzdGVyczsKICAg
ICAgICAgeWFyclJlZ2lzdGVycy5pbnB1dCA9IHN0cmluZ0RhdGFHUFI7Ci0gICAgICAgIHlhcnJS
ZWdpc3RlcnMuaW5kZXggPSBpbmRleEdQUjsKKyAgICAgICAgeWFyclJlZ2lzdGVycy5pbmRleCA9
IHN0cmluZ0ltcGxHUFI7CiAgICAgICAgIHlhcnJSZWdpc3RlcnMubGVuZ3RoID0gc3RyTGVuZ3Ro
R1BSOwogICAgICAgICB5YXJyUmVnaXN0ZXJzLm91dHB1dCA9IG91dHB1dEdQUjsKICAgICAgICAg
eWFyclJlZ2lzdGVycy5yZWdUMCA9IHRlbXAwR1BSOwpAQCAtMjc4MCwxMDEgKzI3NjUsNzcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cFRlc3RJbmxpbmUoTm9kZSogbm9kZSkK
ICAgICAgICAgaWYgKGlubGluZUNvZGVTdGF0czhCaXQubmVlZHNUZW1wMigpKQogICAgICAgICAg
ICAgeWFyclJlZ2lzdGVycy5yZWdUMiA9IHRlbXAyR1BSOwogCi0gICAgICAgIHlhcnJSZWdpc3Rl
cnMucmV0dXJuUmVnaXN0ZXIgPSByZXN1bHRHUFI7Ci0gICAgICAgIHlhcnJSZWdpc3RlcnMucmV0
dXJuUmVnaXN0ZXIyID0gcmVzdWx0MkdQUjsKKyAgICAgICAgeWFyclJlZ2lzdGVycy5yZXR1cm5S
ZWdpc3RlciA9IHRlbXAwR1BSOworICAgICAgICB5YXJyUmVnaXN0ZXJzLnJldHVyblJlZ2lzdGVy
MiA9IHN0cmluZ0RhdGFHUFI7CiAKICAgICAgICAgYXV0byBjb21tb25EYXRhID0gbV9qaXQuaml0
Q29kZSgpLT5kZmdDb21tb24oKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHlhcnJSZWdpc3RlcnMuaW5kZXgpOwogICAgICAgICBZYXJyOjpqaXRDb21waWxlSW5saW5lZFRl
c3QoJm1fZ3JhcGgubV9zdGFja0NoZWNrZXIsIHJlZ0V4cC0+cGF0dGVybigpLCByZWdFeHAtPmZs
YWdzKCksIFlhcnI6OkNoYXJTaXplOjpDaGFyOCwgJnZtKCksIGNvbW1vbkRhdGEtPm1fYm95ZXJN
b29yZURhdGEsIG1faml0LCB5YXJyUmVnaXN0ZXJzKTsKIAotICAgICAgICBhdXRvIGZhaWxlZE1h
dGNoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgIGF1dG8gZmFpbGVkTWF0Y2ggPSBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHlhcnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0
ZXIsIFRydXN0ZWRJbW0zMigwKSk7CiAKICAgICAgICAgLy8gIFNhdmVkIGNhY2hlZCByZXN1bHQK
ICNpZiBDUFUoWDg2XzY0KQogICAgICAgICBpZiAoaW5saW5lQ29kZVN0YXRzOEJpdC5uZWVkc1Rl
bXAyKCkpIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHdlIHJldXNlZCBnbG9iYWxPYmplY3RHUFIg
Zm9yIHRlbXAyLCBsZXQncyByZXN0b3JlIHRoZSBnbG9iYWwgb2JqZWN0LgotICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdENvbnN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4obm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3RDb25zdCksIGdsb2JhbE9i
amVjdEdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihu
b2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKSksIGdsb2JhbE9iamVjdEdQUik7CiAgICAgICAg
IH0KICNlbmRpZgogCiAgICAgICAgIHB0cmRpZmZfdCBvZmZzZXQgPSBKU0dsb2JhbE9iamVjdDo6
cmVnRXhwR2xvYmFsRGF0YU9mZnNldCgpICsgUmVnRXhwR2xvYmFsRGF0YTo6b2Zmc2V0T2ZDYWNo
ZWRSZXN1bHQoKTsKIAotICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCByZWdFeHApLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmpl
Y3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkp
KTsKKyAgICAgICAgbV9qaXQuc3RvcmVVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIHJlZ0V4cCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2Jh
bE9iamVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdF
eHAoKSkpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cihhcmd1bWVudEdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9m
ZnNldE9mTGFzdElucHV0KCkpKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMihyZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVk
UmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBz
dGFydCkpKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMihyZXN1bHQyR1BSLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zm
c2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgZW5kKSkpOworICAg
ICAgICBtX2ppdC5zdG9yZTMyKHlhcnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBzdGFydCkp
KTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMih5YXJyUmVnaXN0ZXJzLnJldHVyblJlZ2lzdGVyMiwg
SklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNo
ZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQs
IGVuZCkpKTsKICAgICAgICAgbV9qaXQuc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6
Om9mZnNldE9mUmVpZmllZCgpKSk7CiAKLSAgICAgICAgaWYgKHN3YXBSZWcgIT0gSW52YWxpZEdQ
UlJlZykKLSAgICAgICAgICAgIHVubG9jayhzd2FwUmVnKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJz
OjpKdW1wTGlzdCBkb25lQ2FzZXM7CiAKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIo
MSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEpLCB0ZW1wMEdQUik7CisgICAgICAgIGRvbmVD
YXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBmYWlsZWRNYXRjaC5saW5rKCZt
X2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOwot
ICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigwKSwgdGVtcDBHUFIpOworICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0
Lmp1bXAoKSk7CisKKyAgICAgICAgcmV0dXJuIGRvbmVDYXNlczsKICAgICB9OwogCiAgICAgaWYg
KG5vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICBh
cmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOworICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIg
PSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgc3BlY3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMygp
LCBhcmd1bWVudEdQUik7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgICAgICBz
d2FwUmVnSWZOZWVkZWQoKTsKLQotICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGFyZ3VtZW50R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc3RyaW5n
SW1wbEdQUik7Ci0gICAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSByb3BlIG9yIDE2IGJpdCwg
d2UgY2FsbCB0aGUgb3BlcmF0aW9uLgotICAgICAgICBvcGVyYXRpb25DYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzdHJpbmdJbXBsR1BSKSk7Ci0gICAgICAgIG9wZXJh
dGlvbkNhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCi0gICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6WmVybywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmlu
Z0ltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zmc2V0KCkpLAotICAgICAgICAgICAgVHJ1c3Rl
ZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKLQotICAgICAgICByZWdFeHBUZXN0
SW5saW5lQ2FzZSgpOwotCi0gICAgICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsoJm1faml0KTsKLQot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3RTdHJpbmcsIHJlc3VsdEdQ
UiwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CisgICAgICAgIGF1dG8g
ZG9uZUNhc2VzID0gcmVnRXhwVGVzdElubGluZUNhc2UoYXJndW1lbnRHUFIsIHNsb3dDYXNlcyk7
CiAKKyAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJm1faml0KTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nLCB0ZW1wMEdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBi
YXNlR1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
LSAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKLQorICAgICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwor
ICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHRlbXAwR1BSLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUt
PmNoaWxkMygpKTsKLSAgICBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOworICAgIEdQUlJl
ZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
IAotICAgIHN3YXBSZWdJZk5lZWRlZCgpOwotCi0gICAgb3BlcmF0aW9uQ2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90Q2VsbChhcmd1bWVudEdQUikpOwotICAgIG9wZXJhdGlvbkNhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhhcmd1bWVudEdQUikpOwotCi0gICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcmd1bWVudEdQUiwgSlNTdHJpbmc6Om9m
ZnNldE9mVmFsdWUoKSksIHN0cmluZ0ltcGxHUFIpOwotICAgIC8vIElmIHRoZSBzdHJpbmcgaXMg
YSByb3BlIG9yIDE2IGJpdCwgd2UgY2FsbCB0aGUgb3BlcmF0aW9uLgotICAgIG9wZXJhdGlvbkNh
c2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHN0cmluZ0ltcGxHUFIpKTsK
LSAgICBvcGVyYXRpb25DYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6WmVybywKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Ry
aW5nSW1wbEdQUiwgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksCi0gICAgICAgIFRydXN0ZWRJ
bW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwoYXJndW1lbnRHUFIpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90U3RyaW5nKGFyZ3VtZW50R1BSKSk7CiAKLSAgICByZWdFeHBUZXN0
SW5saW5lQ2FzZSgpOworICAgIGF1dG8gZG9uZUNhc2VzID0gcmVnRXhwVGVzdElubGluZUNhc2Uo
YXJndW1lbnRHUFIsIHNsb3dDYXNlcyk7CiAKLSAgICBvcGVyYXRpb25DYXNlcy5saW5rKCZtX2pp
dCk7Ci0KLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cFRlc3QsIHJlc3VsdEdQUiwg
Z2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7Ci0KLSAgICBkb25lLmxpbmso
Jm1faml0KTsKKyAgICBzbG93Q2FzZXMubGluaygmbV9qaXQpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwVGVzdCwgdGVtcDBHUFIsIGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwg
YXJndW1lbnRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICB1bmJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgZG9uZUNhc2VzLmxpbmsoJm1f
aml0KTsKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHRlbXAwR1BSLCBub2RlKTsKIH0KICNl
bHNlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZShOb2RlKiBu
b2RlKQpAQCAtMzU0OCw3ICszNTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogCiAgICAgICAgIGlmICghc3RvcmFnZUVkZ2UpIHsKICAgICAgICAgICAgIGF1
dG8gY2FsbFNsb3dQYXRoID0gWyZdICgpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGdsb2JhbE9i
amVjdEltbVB0ciA9IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOworICAgICAgICAgICAgICAg
IGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRyID0gSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7
CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAg
Y2FzZSBBdG9taWNzQWRkOgogICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkF0b21pY3NBZGQsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBp
bmRleEdQUiwgYXJnR1BSc1swXSk7CkBAIC0zNzU3LDcgKzM3MTgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0lzTG9ja0ZyZWUsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0zODk5LDcgKzM4NjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdmFsdWVHUFIp
KTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlv
bkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCwgdmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBv
cGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBXZSBjYW4ndCBrbm93IGZvciBzdXJlIHRoYXQgdGhlIHJlc3VsdCBpcyBhbiBpbnQgYmVjYXVz
ZSBvZiB0aGUgc2xvdyBwYXRocy4gOi0vCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVl
R1BSLCBub2RlKTsKQEAgLTM5MzIsNyArMzg5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3AsIHZhbHVlR1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOworICAgICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wLCB2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIpKTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1
ZUdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQwNTgsNyArNDAxOSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gSW5zdGVh
ZCBvZiB0aGUgc2xvdyBwYXRoIGdlbmVyYXRvciwgd2UgZW1pdCBjYWxsT3BlcmF0aW9uIGhlcmUu
CiAgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYg
U3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2hJZk5vdE51bWJlcihhcmd1bWVudEdQUik7CkBAIC00
MDY3LDcgKzQwMjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAKICAgICAgICAgICAgIG5vdE51bWJlci5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxl
bnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051
bWJlciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRH
UFIpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtNDU0Myw3ICs0NTA0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIg
PSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFs
V2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/
IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhU
aGlzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDY4MSw3ICs0NjQyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEds
b2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BS
UmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3Jh
cGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2Nh
bEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFu
dChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RH
UFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWUuZ3By
KCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSks
IHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihK
SVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00ODg2LDcgKzQ4NDcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7
Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7CiAgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCkBAIC00OTMxLDcgKzQ4OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
SlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC01MDc5LDkgKzUwNDAsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBz
bG93UGF0aENhc2VzLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKGluZGV4R1BSKTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gTWFwT2JqZWN0VXNlKQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhh
c2hHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5k
QnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIs
IGtleUdQUiwgaGFzaEdQUik7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgZG9uZS5h
cHBlbmQobV9qaXQuanVtcCgpKTsKQEAgLTUwODksOSArNTA1MCw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBub3RQcmVzZW50SW5UYWJsZS5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTWFw
T2JqZWN0VXNlKQotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCB2bSgpLnNlbnRpbmVsTWFwQnVja2V0KCkpLCByZXN1bHRHUFIp
OworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgdm0oKS5zZW50aW5lbE1hcEJ1Y2tldCgpKSwg
cmVzdWx0R1BSKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCB2bSgpLnNlbnRpbmVsU2V0QnVja2V0
KCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQo
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgdm0oKS5zZW50aW5l
bFNldEJ1Y2tldCgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01
Mzk0LDcgKzUzNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAKICAgICAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhh
c093blByb3BlcnR5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmpl
Y3RHUFIsIGtleUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJv
cGVydHksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
Uiwga2V5R1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAKaW5kZXggMGM0ZDE5NWQ5MTQ4NTcyMjkzODRlOTg0OGQxNzk5NGRhMzk0MTI2ZC4uZGYw
OGI1MDVhMTgwMTEwOTQxYTZmMTI3NGJmZmEyZDk2OTE4MTdjNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVGh1bmtzLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkdQUklu
Zm8uaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogCkBAIC0xNDEsNiArMTQyLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBwdHJkaWZmX3Qg
b2Zmc2V0T2ZGcmFtZVNpemUgPSAwOyAvLyBUaGlzIGlzIHRoZSBERkcgZnJhbWUgY291bnQuCiAg
ICAgcHRyZGlmZl90IG9mZnNldE9mVGFyZ2V0UEMgPSBvZmZzZXRPZkZyYW1lU2l6ZSArIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgcHRyZGlmZl90IG9mZnNldE9mUGF5bG9hZCA9IG9mZnNl
dE9mVGFyZ2V0UEMgKyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworICAgIHB0cmRpZmZfdCBvZmZz
ZXRPZkNvZGVCbG9jayA9IG9mZnNldE9mUGF5bG9hZCArIHNpemVvZihSZWdpc3RlcikgKiBDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2s7CiAgICAgcHRyZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zm
c2V0T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUlu
UmVnaXN0ZXJzOwogICAgIAogICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwg
R1BSSW5mbzo6cmVnVDApOwpAQCAtMTUxLDEwICsxNTMsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wID0gaml0LmxhYmVsKCk7CiAgICAgaml0LnN1YlB0cihN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgaml0
Lm5lZ1B0cihHUFJJbmZvOjpyZWdUMSwgR1BSSW5mbzo6cmVnVDQpOwotICAgIGppdC5sb2FkMzIo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkxvY2FscyksIEdQUkluZm86OnJl
Z1QyKTsKLSAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0
T2ZMb2NhbHMgKyBzaXplb2YoaW50MzJfdCkpLCBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0LnN0
b3JlMzIoR1BSSW5mbzo6cmVnVDIsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNF
aWdodCwgLXN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoUmVnaXN0ZXIpKSkpOwotICAgIGpp
dC5zdG9yZTMyKEdQUkluZm86OnJlZ1QzLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUNCwgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRWlnaHQsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKGludDMyX3QpKSkpOworICAgIGppdC5sb2FkVmFsdWUo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkxvY2FscyksIEpTVmFsdWVSZWdz
Ojp3aXRoVHdvQXZhaWxhYmxlUmVncyhHUFJJbmZvOjpyZWdUMiwgR1BSSW5mbzo6cmVnVDMpKTsK
KyAgICBqaXQuc3RvcmVWYWx1ZShKU1ZhbHVlUmVnczo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MoR1BS
SW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpKSk7
CiAgICAgaml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEdQUkluZm86OnJl
Z1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KC1z
dGF0aWNfY2FzdDxpbnRwdHJfdD4oQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpKSkp
LmxpbmtUbyhsb29wLCAmaml0KTsKICAgICAKICAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZUYXJnZXRQQyksIEdQUkluZm86OnJl
Z1QxKTsKQEAgLTE2Miw4ICsxNjIsMjEgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKICAgICBqaXQuYWJvcnRXaXRo
UmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVudHJ5SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9r
LmxpbmsoJmppdCk7CisKKyAgICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZDb2RlQmxvY2spLCBHUFJJbmZvOjpyZWdUMik7CisgICAg
aml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihHUFJJbmZvOjpyZWdUMiwgQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIGppdC5wcm9iZURlYnVnKFs9
XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
Y3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9
KTsKKyNlbmRpZgorCiAgICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2Fs
bGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6
ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDIsIENvZGVCbG9jazo6b2Zmc2V0
T2ZKSVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisjZW5kaWYKIAogICAg
IGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRl
eCAwMjRkZGYwYWY2NzcyYjg1Y2Y0NjQ5ZTliYWIyNGZjNDg2NDBlNTk2Li40NTg4YTFlNTMyM2Vm
YWM2YzkwYzYwOWNhNDI3OGE0MzFhMTYwNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC00NSwxNCArNDUsNiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotRXhlY3V0YWJsZUJhc2UqIEFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKLXsKLSAg
ICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwot
ICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKTsKLSAgICByZXR1cm4gaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci19Ci0KIEFzc2VtYmx5SGVscGVyczo6SnVtcCBBc3Nl
bWJseUhlbHBlcnM6OmJyYW5jaElmRmFzdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2VHUFIpCiB7CiAg
ICAgcmV0dXJuIGJyYW5jaDMyKApAQCAtMTM3NCw2ICsxMzY2LDIyIEBAIHZvaWQgQXNzZW1ibHlI
ZWxwZXJzOjplbWl0U2F2ZU9yQ29weUxMSW50QmFzZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxv
Y2sqIGNvZGVCCiAgICAgc3Bvb2xlci5maW5hbGl6ZUdQUigpOwogfQogCit2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQs
IGJvb2wgaXNDb25zdHJ1Y3RvcikKK3sKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0
cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJlc3VsdCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJl
c3VsdCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0
KTsKKyAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwg
VHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJhcmVEYXRhVGFnKSk7CisgICAgbG9hZFB0cihBZGRy
ZXNzKHJlc3VsdCwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1
bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3VsdCk7CisgICAgaGFzRXhlY3V0YWJsZS5saW5rKHRo
aXMpOworICAgIGlmIChpc0NvbnN0cnVjdG9yKQorICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVz
dWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkp
LCByZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7CisK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpv
ZmZzZXRPZkNvZGVCbG9jaygpKSwgcmVzdWx0KTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFk
ZXIocmVzdWx0LCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyN2RkNTk3OTBiNzFmOThhMjE3YjEyNTg3NzY3NzE2
NWFjNjhlZTBjLi45OGIzYzM1ZThhODVlNjQ5ODY1ZWUzMDI5ZWY2NWRmMWQwMmRjZDhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTQwNSw2ICs0
MDUsOCBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewog
I2VuZGlmCiAgICAgfQogCisgICAgdm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9n
dWUoR1BSUmVnIHJlc3VsdCwgYm9vbCBpc0NvbnN0cnVjdG9yKTsKKwogI2lmIENQVShYODZfNjQp
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgcHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgp
CiAgICAgewpAQCAtMTU1MCwxMyArMTU1Miw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1
YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgdm9pZCBjbGVhclNhbXBsaW5nRmxhZyhpbnQzMl90
IGZsYWcpOwogI2VuZGlmCiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9yKENv
ZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwotICAgIH0KLSAgICAKLSAgICBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZUZvcihDb2RlQmxvY2sqLCBjb25zdCBDb2RlT3JpZ2luJik7Ci0gICAg
CiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3Jp
Z2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2soKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCA2ODdlZmRiMDBl
YWM3ZDE4NTllNjk3MTUzOWRmMGFhNWVkMzk4YTc1Li5hNjUyNWY2MGIzMDg1YzI2NzQ1ZmIyY2U3
NTEzNzRmZTI1N2I5MmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmgKQEAgLTY5LDYgKzY5LDEwIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJs
eUhlbHBlcnMgewogICAgICAgICBHUFJSZWcgbV9ncHI7CiAgICAgfTsKIAorICAgIC8vIEJhc2Ug
Y2xhc3MgZm9yIGNvbnN0YW50IG1hdGVyaWFsaXplcnMuCisgICAgLy8gSXQgb2ZmZXJzIERlcml2
ZWRDbGFzczo6bWF0ZXJpYWxpemUgYW5kIHBva2UgZnVuY3Rpb25zLgorICAgIGNsYXNzIENvbnN0
YW50TWF0ZXJpYWxpemVyIHsgfTsKKwogICAgIC8vIFRoZSBtb3N0IGdlbmVyYWwgaGVscGVyIGZv
ciBzZXR0aW5nIGFyZ3VtZW50cyB0aGF0IGZpdCBpbiBhIEdQUiwgaWYgeW91IGNhbiBjb21wdXRl
IGVhY2gKICAgICAvLyBhcmd1bWVudCB3aXRob3V0IHVzaW5nIGFueSBhcmd1bWVudCByZWdpc3Rl
cnMuIFlvdSB1c3VhbGx5IHdhbnQgb25lIG9mIHRoZSBzZXR1cEFyZ3VtZW50cyooKQogICAgIC8v
IG1ldGhvZHMgYmVsb3cgaW5zdGVhZCBvZiB0aGlzLiBUaGlzIHRoaW5nIGlzIG1vc3QgdXNlZnVs
IGlmIHlvdSBoYXZlICphIGxvdCogb2YgYXJndW1lbnRzLgpAQCAtMzY1LDcgKzM2OSwxMCBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50
R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jv
c3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVu
c2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBj
YWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsK
LSAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOworICAgICAgICBpZiBjb25zdGV4cHIgKHN0
ZDo6aXNfYmFzZV9vZl92PENvbnN0YW50TWF0ZXJpYWxpemVyLCBBcmdUeXBlPikKKyAgICAgICAg
ICAgIGFyZy5wb2tlKCp0aGlzLCBhZGRyZXNzRm9yUG9rZShwb2tlT2Zmc2V0KSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVu
dCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlKQpAQCAtNjQ3LDYgKzY1NCwyNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMg
QXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5
cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAg
ICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVt
R1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5z
aWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlw
ZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFi
bGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2ZfdjxDb25zdGFudE1hdGVyaWFsaXplciwgQXJnPj4KKyAg
ICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3Vy
Y2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BS
QXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdz
Li4uIGFyZ3MpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Zsb2F0aW5n
X3BvaW50PENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlLCAiV2UgZG9uJ3Qgc3VwcG9ydCBp
bW1lZGlhdGUgZmxvYXRzL2RvdWJsZXMgaW4gc2V0dXBBcmd1bWVudHMiKTsKKyAgICAgICAgYXV0
byBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOwor
I2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgICAgIGF1dG8gY3VycmVudEFyZ0Nv
dW50ID0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3MgKyAoc3RkOjppc19zYW1lPFJFU1VMVF9UWVBF
LCBTbG93UGF0aFJldHVyblR5cGU+Ojp2YWx1ZSA/IDEgOiAwKTsKKyNlbHNlCisgICAgICAgIGF1
dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJncyArIGV4dHJhR1BSQXJnczsKKyNlbmRpZgor
ICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50IDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAg
ICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRH
UFJBcmcoKSwgYXJncy4uLik7CisgICAgICAgICAgICBhcmcubWF0ZXJpYWxpemUoKnRoaXMsIEdQ
UkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQ
UkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdH
UFJzLCBleHRyYVBva2UpOworICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlw
ZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CisgICAgfQorCiAjdW5kZWYg
Q1VSUkVOVF9BUkdVTUVOVF9UWVBFCiAjdW5kZWYgUkVTVUxUX1RZUEUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0dQUkluZm8uaAppbmRleCAwMDIyYmQ5Yjk4NTk1YTgzMGMxZWUwOTU2ZjgxMDgzZWQ0
NzgxZTg2Li42N2U0N2IzYzZjNmY2MGZiMDE1OGZhYzhmMTllNzAyZWRhN2UxNTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDIwLDEzICs0MjAsMTQgQEAgY2xhc3MgR1BS
SW5mbyB7CiBjbGFzcyBHUFJJbmZvIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdp
c3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVy
cyA9IDExOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMg
PSAxMDsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdp
c3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOwogCiAgICAgLy8gVGhlc2UgcmVn
aXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OwogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENlbGxNYXNrUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjb25zdGFudHNSZWdpc3RlciA9
IFg4NlJlZ2lzdGVyczo6cjEzOwogCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNDUw
LDE2ICs0NTEsMTYgQEAgY2xhc3MgR1BSSW5mbyB7CiAKICNpZiAhT1MoV0lORE9XUykKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBYODZSZWdpc3RlcnM6OnIxMjsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxNDsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsgLy8gY29u
c3RhbnRzUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZS
ZWdpc3RlcnM6OnIxNDsgLy8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdpc3Rl
cgogI2Vsc2UKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBYODZSZWdpc3Rl
cnM6OmVzaTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3Rl
cnM6OmVkaTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3Rl
cnM6OnIxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3Rl
cnM6OnIxMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBYODZSZWdpc3Rl
cnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBYODZSZWdpc3Rl
cnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3Rl
cnM6OnIxMzsgLy8gY29uc3RhbnRzUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyByZWdDUzUgPSBYODZSZWdpc3RlcnM6OnIxNDsgLy8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBYODZSZWdpc3RlcnM6OnIxNTsgLy8gbm90
Q2VsbE1hc2tSZWdpc3RlcgogI2VuZGlmCiAKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlk
ZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFs
dWUgcmVnaXN0ZXJzLgpAQCAtNDk3LDkgKzQ5OCw5IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHsK
ICAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwogI2lmICFPUyhXSU5E
T1dTKQotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVy
T2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1
LCByZWdUNiwgcmVnVDcsIHJlZ0NTMCwgcmVnQ1MxLCByZWdDUzIgfTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVn
VDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdD
UzAsIHJlZ0NTMSB9OwogI2Vsc2UKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3Rl
ckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVn
VDMsIHJlZ1Q0LCByZWdUNSwgcmVnQ1MwLCByZWdDUzEsIHJlZ0NTMiwgcmVnQ1MzLCByZWdDUzQg
fTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9m
UmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwg
cmVnQ1MwLCByZWdDUzEsIHJlZ0NTMiwgcmVnQ1MzIH07CiAjZW5kaWYKICAgICAgICAgcmV0dXJu
IHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwogICAgIH0KQEAgLTYzNCw2ICs2MzUsNyBAQCBjbGFz
cyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3Rl
ciA9IEFSTTY0UmVnaXN0ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1i
ZXJUYWdSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgbm90Q2VsbE1hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVy
czo6eDI2OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGRhdGFUZW1wUmVnaXN0ZXIgPSBN
YWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3RlcjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBtZW1vcnlUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6bWVtb3J5VGVtcFJlZ2lz
dGVyOwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCkBAIC02NjAsNyArNjYyLDcgQEAgY2xh
c3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gQVJNNjRS
ZWdpc3RlcnM6OngyMzsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIHJlZ0NTNSA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9ubHkK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4
MjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6
OngyNjsgLy8gY29uc3RhbnRzCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0g
QVJNNjRSZWdpc3RlcnM6OngyNzsgLy8gbnVtYmVyVGFnCiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgcmVnQ1M5ID0gQVJNNjRSZWdpc3RlcnM6OngyODsgLy8gbm90Q2VsbE1hc2sKICAgICAv
LyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBv
c2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgpAQCAtNzc3LDcgKzc3OSw3IEBA
IGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5v
blJldHVybkdQUiA9IHJlZ1QyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMCA9
IE1JUFNSZWdpc3RlcnM6OnMwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9
IE1JUFNSZWdpc3RlcnM6OnMxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9
IE1JUFNSZWdpc3RlcnM6OnMxOyAvLyBjb25zdGFudHMKIAogICAgIHN0YXRpYyBHUFJSZWcgdG9S
ZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CkBAIC04MzIsNiArODM0LDcgQEAgY2xhc3Mg
R1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIg
PSBSSVNDVjY0UmVnaXN0ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1i
ZXJUYWdSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBub3RDZWxsTWFza1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNvbnN0YW50c1JlZ2lzdGVyID0gUklTQ1Y2NFJl
Z2lzdGVyczo6eDI0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDAgPSBSSVND
VjY0UmVnaXN0ZXJzOjp4MTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDEgPSBS
SVNDVjY0UmVnaXN0ZXJzOjp4MTE7CkBAIC04NTQsNyArODU3LDcgQEAgY2xhc3MgR1BSSW5mbyB7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gUklTQ1Y2NFJlZ2lzdGVyczo6
eDIxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IFJJU0NWNjRSZWdpc3Rl
cnM6OngyMjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBSSVNDVjY0UmVn
aXN0ZXJzOjp4MjM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gUklTQ1Y2
NFJlZ2lzdGVyczo6eDI0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IFJJ
U0NWNjRSZWdpc3RlcnM6OngyNDsgLy8gY29uc3RhbnRzCiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgcmVnQ1M4ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI1OyAvLyBudW1iZXJUYWcKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjY7IC8v
IG5vdENlbGxNYXNrCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxMCA9IFJJU0NW
NjRSZWdpc3RlcnM6OngyNzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlOWMwZWNj
MzBlYWNjNjhjNTU5ZjhhYzQ2M2UxMDYyMjMxZGRlYjZhLi5mZTZlMjY3OTBjZDc1OTQ5ZGQ0N2Y0
MzViNGIzODk1YWYzOTQ3NTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDUs
MTkgKzIwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRoRnVuY3RpCiB2b2lkIEpJVDo6ZW1pdFB1dENv
ZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwot
ICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwg
cmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCByZXN1bHQpOwotICAgIGF1dG8gaGFzRXhlY3V0YWJs
ZSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVzdWx0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQs
IEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhlY3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFy
ZURhdGFUYWcpLCByZXN1bHQpOwotICAgIGhhc0V4ZWN1dGFibGUubGluayh0aGlzKTsKLSAgICBp
ZiAobV91bmxpbmtlZENvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpKQotICAgICAgICBsb2FkUHRy
KEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9y
Q29uc3RydWN0KCkpLCByZXN1bHQpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSks
IHJlc3VsdCk7Ci0KLSAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpvZmZzZXRPZkNvZGVCbG9jaygpKSwgcmVzdWx0KTsKLSAgICBlbWl0UHV0VG9D
YWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwotCisgICAg
QXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVzdWx0
LCBtX3VubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpOwogI2lmIEFTU0VSVF9FTkFC
TEVECiAgICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2JlOjpDb250ZXh0JiBjdHgpIHsKICAgICAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7
CkBAIC0yNzQsNyArMjYyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfY2F0Y2gpIHsKICAgICAgICAgICAgIGxvYWRQdHIo
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7CiAgICAgICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxl
KCkpLCByZWdUMSk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9j
azo6b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHJlZ1QyKTsKKyAgICAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHJlZ1QyKTsK
IAogICAgICAgICAgICAgYXV0byBtZXRhZGF0YU9LID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwg
c19tZXRhZGF0YUdQUik7CiAgICAgICAgICAgICBicmVha3BvaW50KCk7CkBAIC02OTgsNyArNjg2
LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRlcmlhbGl6ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29sUmVn
aXN0ZXJzKCkKIHsKICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZz
ZXRPZk1ldGFkYXRhVGFibGUoKSksIHNfbWV0YWRhdGFHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpKSwgc19jb25zdGFu
dHNHUFIpOworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJ
VERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTYXZlQ2FsbGVl
U2F2ZXMoKQpAQCAtNzY3LDcgKzc1NSw3IEBAIHZvaWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhv
dXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIAogICAgIGVtaXRGdW5j
dGlvblByb2xvZ3VlKCk7CiAgICAgaWYgKG1fdW5saW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkg
PT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9n
dWUoKTsKKyAgICAgICAgZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKHJlZ1QwKTsK
IAogICAgIExhYmVsIGJlZ2luTGFiZWwodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IGI4ZmRhNWQxYjQzMTVlOWY3ZDcwNGM0NmFhYTVhNWIxYmIwMzQ0ZmIuLmIxMzBlM2VjOTZm
ZjhiZWUzMTMxNGExYjBkYzg5NDFlMDEzMTA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApA
QCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGxvYWRDb2Rl
QmxvY2tDb25zdGFudFRhZyhWaXJ0dWFsUmVnaXN0ZXIsIFJlZ2lzdGVySUQpOwogI2VuZGlmCiAK
LSAgICAgICAgdm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJl
c3VsdCA9IHJlZ1QwKTsKKyAgICAgICAgdm9pZCBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJv
bG9ndWUoR1BSUmVnIHJlc3VsdCk7CiAKICAgICAgICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1w
IGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IDViODVjN2FjNTE3YTcwMmRjZmQ3YTYyZWRmMDkyMTFhM2Q1ZDMzM2Uu
LjQ0YzEyZDhkNjkyNDI5NGEwNTg4ZmM0NjJlZjU4MjkyNTJiODFkNGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIC8vIFNvIHdlIHJlcGxlbmlzaCBpdCBoZXJlLgogICAgIHsKICAgICAgICAgbG9hZFB0
cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKLSAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRh
KCkpLCBzX2NvbnN0YW50c0dQUik7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29k
ZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKICAgICB9CiAKICAg
ICBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRpb25SZXRyaWV2ZUFuZENsZWFy
RXhjZXB0aW9uSWZDYXRjaGFibGUsICZ2bSgpKTsKQEAgLTEwNDYsNiArMTA0Niw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKIAogICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblRyeU9TUkVu
dGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgJnZtKCksIG1fYnl0ZWNvZGVJbmRleC5hc0JpdHMo
KSk7CiAgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZh
bHVlR1BSKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmV0dXJuVmFsdWVHUFIyLCBD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogICAgIGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsK
ICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBFeGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKICAg
ICBza2lwT1NSRW50cnkubGluayh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCmluZGV4IGVmYzlhMGU4YmIwMmUyMjU4MTE4NDYyM2QxMDYwYTg5MzVj
ZGYyYTEuLjViNWRhNzhkYmE3MTU2MjMxMmU5NzA2N2Y0NjdiNDU3MzkwODRhMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMjA1Niw3ICsyMDU2
LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0
aFJldHVyblR5cGUsIChWTSogdm1Qb2ludGVyLAogICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVs
bHB0ciwgbnVsbHB0cik7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25U
cnlPU1JFbnRlckF0Q2F0Y2gsIGNoYXIqLCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNv
ZGVJbmRleEJpdHMpKQorSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVu
dGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoVk0qIHZtUG9p
bnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpKQogewogICAgIFZNJiB2bSA9ICp2bVBv
aW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0p
OwpAQCAtMjA2NiwzNyArMjA2NiwxMyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIHVpbgogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBDb2RlQmxv
Y2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpOwogICAg
IGlmIChVTkxJS0VMWSghb3B0aW1pemVkUmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHN3aXRjaCAob3B0aW1pemVkUmVwbGFjZW1lbnQtPmppdFR5cGUoKSkgewot
ICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgotICAgIGNhc2UgSklUVHlwZTo6RlRMSklUOiB7Ci0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxFeGNlcHRpb25IYW5kbGVyUHRyVGFnPiBlbnRy
eSA9IERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkodm0sIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBv
cHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIHJldHVybiBlbnRy
eS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1KU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBj
aGFyKiwgKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjb2RlSW5kZXhCaXRzKSkKLXsKLSAg
ICBWTSYgdm0gPSAqdm1Qb2ludGVyOwotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFS
RV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4
ID0gQnl0ZWNvZGVJbmRleDo6ZnJvbUJpdHMoYnl0ZWNvZGVJbmRleEJpdHMpOwotCi0gICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwotICAgIENvZGVCbG9j
ayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7Ci0gICAg
aWYgKFVOTElLRUxZKCFvcHRpbWl6ZWRSZXBsYWNlbWVudCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogCiAg
ICAgc3dpdGNoIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpKSB7CiAgICAgY2FzZSBK
SVRUeXBlOjpERkdKSVQ6CiAgICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6IHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGVudHJ5ID0gREZHOjpw
cmVwYXJlQ2F0Y2hPU1JFbnRyeSh2bSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIG9wdGltaXplZFJl
cGxhY2VtZW50LCBieXRlY29kZUluZGV4KTsKLSAgICAgICAgcmV0dXJuIGVudHJ5LmV4ZWN1dGFi
bGVBZGRyZXNzPGNoYXIqPigpOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KGVudHJ5LmV4
ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCk7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMjEwOSw3ICsyMDg1LDcgQEAgSlNDX0RF
RklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJv
ZmlsZSwgY2hhciosIChWTSoKICAgICAgICAgcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVl
OjplbmNvZGUoY2FsbEZyYW1lLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVl
KCkpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGVuY29kZVJl
c3VsdChudWxscHRyLCBudWxscHRyKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDJhNTlmNjRlODg1YWQ1YTI1ZTE4NjcyZjk2YzNk
ZDViYjg2NWJkMGYuLmM1Y2U1OGRlZmY5OGVlYjZhZmFjYzQ2Y2RiMWU4MzY4MTc2NGVlMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0yNTksOCArMjU5
LDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UaHJvdywgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uRGVidWcsIHZvaWQsIChWTSosIGludDMyX3QpKTsKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT3B0aW1pemUsIFNsb3dQYXRo
UmV0dXJuVHlwZSwgKFZNKiwgdWludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBjaGFyKiwgKFZNKiwgdWludDMyX3QpKTsKLUpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFs
dWVQcm9maWxlLCBjaGFyKiwgKFZNKiwgdWludDMyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBTbG93UGF0
aFJldHVyblR5cGUsIChWTSosIHVpbnQzMl90KSk7CiAjZW5kaWYKIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uUHV0R2V0dGVyQnlJZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0Kiwg
SlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopKTsK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgdm9pZCwg
KEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9w
dGlvbnMsIEpTQ2VsbCopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5j
cHAKaW5kZXggMzhjNjc5NDlmZGRmMDczYTg4ZmE1NTgyOTcyYzkyNWMxNjFjZGVkNC4uMWMzMTI3
NTRkMGMzOWEyMWFiNjAwZDc2ZWE1Yzk1ZDU5ZWNkYzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZWdpc3RlclNldC5jcHAKQEAgLTIwMCwxNiArMjAwLDE4IEBAIFJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAjZWxpZiBD
UFUoWDg2XzY0KQogI2lmICFPUyhXSU5ET1dTKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMiA9PSBHUFJJbmZvOjpjb25z
dGFudHNSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVn
Q1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MyKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6
cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKICAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwog
I2Vsc2UKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CisgICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0gICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIs
ICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRpZgpAQCAtMjE4LDkgKzIyMCwx
MCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdp
c3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKICNlbGlmIENQVShBUk02
NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M3ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lz
dGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BS
SW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzcpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAjZWxzZQpAQCAt
MjM2LDE3ICsyMzksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVS
ZWdpc3RlcnMoKQogI2VsaWYgQ1BVKFg4Nl82NCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKICNpZiAhT1MoV0lORE9XUykKLSAgICBzdGF0aWNfYXNzZXJ0KEdQ
UkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMiA9PSBHUFJJbmZvOjpj
b25zdGFudHNSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0g
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6
cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1MyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CiAgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwogI2Vsc2UKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTMik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOworICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwot
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAjZW5kaWYKQEAgLTI1NCw4
ICsyNjAsMTAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3Rl
cnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7CiAjZWxpZiBDUFUoQVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
LCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M3
ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7Cisg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAjZWxzZQpAQCAtMjcy
LDggKzI4MCw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVnaXN0
ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzEpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
ciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NT
MyA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
ICNlbGlmIENQVShBUk02NCkKQEAgLTI4Niw4ICsyOTQsOCBAQCBSZWdpc3RlclNldCBSZWdpc3Rl
clNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzUpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTNyk7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0g
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CisgICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIp
OworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxN
YXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAgICAgcmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NT
MCk7CkBAIC0zMDcsOCArMzE1LDggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxl
ZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzcpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNf
YXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzkpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5kZXggYzAzMzNkMzQyYjA5YjAzMDQwMTBmNDQ2
Mjg0M2ZjMDg5NDgyOWVlNC4uMTUxMTVlZTA3ZDI0ZjE0YmVlNmRiYWZlNjIyNjJjNjgwMjQ1MDI4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaApAQCAtMzk1LDEzICsz
OTUsMTMgQEAgc3RydWN0IFJlZ2lzdGVycyB7CiAKICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lO
RE9XUykKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BS
SW5mbzo6cmVnQ1MxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5m
bzo6cmVnQ1MyOworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6
Y29uc3RhbnRzUmVnaXN0ZXI7CiAjZWxpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5ET1dTKQogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdD
UzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpjb25zdGFudHNS
ZWdpc3RlcjsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJlZ0NTNjsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NTNzsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyOwog
I2VsaWYgQ1BVKE1JUFMpIHx8IENQVShBUk1fVEhVTUIyKQogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzA7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggYThlN2M3
Mzk5ZDU4MWE1OTYwZDBhYTdhYTcyNDMzNWRiMDM1NGM3NS4uMTNiMTc4Y2ZjZDczNmIwOGY2NGM5
MTgyNGQwMmEwMjdhMDM5MGNiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMjYyNSw3ICsyNjI1LDcgQEAgaWYgSklU
CiAgICAgbWFjcm8gbG9hZEJhc2VsaW5lSklUQ29uc3RhbnRQb29sKCkKICAgICAgICAgIyBCYXNl
bGluZSB1c2VzIExMSW50J3MgUEIgcmVnaXN0ZXIgZm9yIGl0cyBKSVQgY29uc3RhbnQgcG9vbC4K
ICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9j
azo6bV9iYXNlbGluZUpJVERhdGFbUEJdLCBQQgorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
aml0RGF0YVtQQl0sIFBCCiAgICAgZW5kCiAKICAgICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxp
bmVBZnRlckNoZWNrcG9pbnRFeGl0SWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZDlkYTFlNDY2YjljOTg3ZDc2MzEwYTJh
NjczOTgzNzU2NzE0ZDMxMS4uZjQ3MDBkNjZlYTA4ZDc2ZTQ2MGRhMzRmNWU3ZWY1NTU1OWJhYTBi
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC05MjEsNiArOTIxLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVnRXhwR2xvYmFsRGF0YSYgcmVnRXhwR2xvYmFs
RGF0YSgpIHsgcmV0dXJuIG1fcmVnRXhwR2xvYmFsRGF0YTsgfQogICAgIHN0YXRpYyBwdHJkaWZm
X3QgcmVnRXhwR2xvYmFsRGF0YU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0ds
b2JhbE9iamVjdCwgbV9yZWdFeHBHbG9iYWxEYXRhKTsgfQogCisgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkdsb2JhbFRoaXMoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxP
YmplY3QsIG1fZ2xvYmFsVGhpcyk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0o
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fdm0pOyB9CiAgICAg
c3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbExleGljYWxCaW5k
aW5nRXBvY2goKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455072</attachid>
            <date>2022-03-18 00:22:53 -0700</date>
            <delta_ts>2022-03-18 01:31:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220318002252.patch</filename>
            <type>text/plain</type>
            <size>290546</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZmI5ZDM3ZDg1YWQ3OGQxMzI4YWYzY2FlNzUyZDE0OWRkMDM0ODg5Li4wY2Q3NmU5MzMxMzFkZTlj
MjFmZGEzNjZiMzRiMjM2N2Y3ZDU3Mzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDUgQEAKKzIwMjItMDMtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJSSVNDVjY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVND
VjY0Ojp0cmFuc2ZlclB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6
YnJhbmNoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmJyYW5jaFB0
cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRyYW5zZmVyUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmJyYW5jaFB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmFsaXplSklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dERGR0pJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVu
dHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om1hdGVyaWFs
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6
cG9rZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmJyYW5jaFVubGlua2VkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6YWRkVW5saW5rZWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Zmlu
YWxpemVKSVREYXRhKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9E
RkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRHZXRDYWxsZWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxl
bnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3BlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJDYXNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jayk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1RyYXBzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnRpZ3VvdXNQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZy
b21DaGFyQ29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjpU
cnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoVW5saW5rZWRDb25zdGFudCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNo
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xl
QnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29tcGFyZUVxUHRyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvQm9vbGVhbk9iamVjdE9yT3RoZXIpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQnJhbmNoKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cFRlc3RJbmxpbmUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHVGh1bmtzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpvc3JFbnRyeVRodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUpOgor
ICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpnbG9iYWxPYmplY3RGb3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2FsbEhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlRm9yQXJndW1lbnQpOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAg
ICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9SZWdpc3Rlcik6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFB1dENvZGVCbG9j
a1RvRnJhbWVJblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0TWF0ZXJpYWxpemVNZXRhZGF0YUFuZENv
bnN0YW50UG9vbFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUFuZExpbmtX
aXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAgICAg
ICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklU
X09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBq
aXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxpbnRCYXNl
bGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZGZn
Q2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpmdGxDYWxs
ZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKiBsbGludC9MTEludERhdGEuaDoKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvZmZzZXRPZkdsb2Jh
bFRoaXMpOgorCiAyMDIyLTAzLTE2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyOTA3MjApOiBEZWJ1Z2dlcjog
U3RlcCBuZXh0IHNob3VsZCBub3QgYmVoYXZlIHRoZSBzYW1lIGFzIFN0ZXAgaW50bwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAppbmRleCA2MzM3NzNhZWVjOWQxYzk2N2ZhOThhNWFjYjJhMTI0NTJlYjI1MDdjLi45Yjc3OWM5
MzY2MWU5YTBmMWZmZjk2MjhjZmI1ZGZiNjgzZWEzZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApAQCAtMTk2MCw2
ICsxOTYwLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHRyYW5zZmVyNjQoQWRkcmVzcyBzcmMs
IEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWQ2NChzcmMsIGdldENhY2hlZERhdGFU
ZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7CisgICAgICAgIHN0b3JlNjQoZ2V0Q2FjaGVk
RGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2
b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAg
ICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgRGF0YUxhYmVsMzIgc3RvcmU2
NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykK
ICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGxhYmVsKHRoaXMpOwpAQCAtMzM0NCw2ICszMzU1
LDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIG1lbW9y
eVRlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIEFkZHJlc3MgcmlnaHQpCisgICAgewor
ICAgICAgICAvLyBsb2FkNjQgY2xvYmJlcnMgbWVtb3J5VGVtcFJlZ2lzdGVyLCB0aHVzIHdlIHNo
b3VsZCBmaXJzdCB1c2UgZGF0YVRlbXBSZWdpc3RlciBoZXJlLgorICAgICAgICBsb2FkNjQobGVm
dCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAg
Ly8gQW5kIGJyYW5jaDY0IHdpbGwgdXNlIG1lbW9yeVRlbXBSZWdpc3RlciB0byBsb2FkIHJpZ2h0
IHRvIGEgcmVnaXN0ZXIuCisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBkYXRhVGVtcFJl
Z2lzdGVyLCByaWdodCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIEFkZHJlc3MgcmlnaHQpCisgICAgeworICAgICAg
ICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQpOworICAgIH0KKwogICAgIEp1bXAg
YnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lz
dGVySUQgcmlnaHQpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwg
cmlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclJJU0NWNjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJSSVNDVjY0LmgKaW5kZXggMzY0Njg2ZGZmNjg5OTRkZWFhMDRlOTU2NjM2YWQ2
MmYwMmVjMTE1NS4uZGNlM2EwZTM1NmRiZDU4OWEwNDg5ZmJkZmI2OTE2YWNmZTQxNDFkMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJ
U0NWNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyUklTQ1Y2NC5oCkBAIC0xMTcxLDYgKzExNzEsMTggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJS
SVNDVjY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnNkSW5zbih0ZW1wLm1lbW9yeSgpLCBpbW1SZWdpc3RlciwgSW1tOjpT
PDA+KCkpOwogICAgIH0KIAorICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNyYywgQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YT4oKTsKKyAgICAg
ICAgbG9hZDY0KHNyYywgdGVtcC5kYXRhKCkpOworICAgICAgICBzdG9yZTY0KHRlbXAuZGF0YSgp
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQor
CiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgc3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwg
ZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTIxNTQsNiArMjE2NiwxNiBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlclJJU0NWNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJs
ZXI+IHsKICAgICAgICAgcmV0dXJuIG1ha2VCcmFuY2goY29uZCwgdGVtcC5kYXRhKCksIHJocyk7
CiAgICAgfQogCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFk
ZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7CisgICAgICAgIGF1dG8gdGVtcCA9IHRl
bXBzPERhdGEsIE1lbW9yeT4oKTsKKyAgICAgICAgYXV0byBsZWZ0UmVzb2x1dGlvbiA9IHJlc29s
dmVBZGRyZXNzKGxlZnQsIHRlbXAubWVtb3J5KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5sZElu
c24odGVtcC5kYXRhKCksIGxlZnRSZXNvbHV0aW9uLmJhc2UsIEltbTo6SShsZWZ0UmVzb2x1dGlv
bi5vZmZzZXQpKTsKKyAgICAgICAgYXV0byByaWdodFJlc29sdXRpb24gPSByZXNvbHZlQWRkcmVz
cyhyaWdodCwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkSW5zbih0ZW1w
Lm1lbW9yeSgpLCByaWdodFJlc29sdXRpb24uYmFzZSwgSW1tOjpJKHJpZ2h0UmVzb2x1dGlvbi5v
ZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VCcmFuY2goY29uZCwgdGVtcC5kYXRhKCksIHRl
bXAubWVtb3J5KCkpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFs
ZldvcmRzKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0
ZWRJbW0zMiBpbW0pCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVz
cywgaW1tKTsKQEAgLTI2NDUsNiArMjY2NywxMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclJJU0NW
NjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAg
cmV0dXJuIGJyYW5jaDY0KGNvbmQsIGFkZHJlc3MsIHJocyk7CiAgICAgfQogCisgICAgSnVtcCBi
cmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIEFkZHJlc3Mg
cmlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQp
OworICAgIH0KKwogICAgIERhdGFMYWJlbDMyIG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgUklTQ1Y2NEFzc2VtYmxlcjo6SW1t
ZWRpYXRlTG9hZGVyIGltbWwoUklTQ1Y2NEFzc2VtYmxlcjo6SW1tZWRpYXRlTG9hZGVyOjpQbGFj
ZWhvbGRlciwgaW1tLm1fdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IGIyZTkxMWFhMTM2NjNhMjUw
OTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMuLmM3ZmU2Mjc5NmQwNDE2OWJkZDRiMGI0NDFkNTdkY2E3
NzhlYzAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTEwMjYsNiArMTAyNiwxNyBAQCBjbGFzcyBNYWNy
b0Fzc2VtYmxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiAgICAg
ICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dnFfcm0oc2NyYXRjaFJlZ2lzdGVyKCksIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgIH0KKworICAgIHZvaWQgdHJhbnNmZXI2
NChBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0KHNyYywg
c2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBzdG9yZTY0KHNjcmF0Y2hSZWdpc3RlcigpLCBk
ZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNz
IGRlc3QpCisgICAgeworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQogICAg
IAogICAgIERhdGFMYWJlbDMyIHN0b3JlNjRXaXRoQWRkcmVzc09mZnNldFBhdGNoKFJlZ2lzdGVy
SUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewpAQCAtMTEzNCw2ICsxMTQ1LDEyIEBAIGNs
YXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wcV9ybShyaWdodCwgYWRkcmVzcy5vZmZzZXQsIGFk
ZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgIHJldHVy
biBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRpb24oY29uZCkpKTsKICAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBB
ZGRyZXNzIHJpZ2h0KQorICAgIHsKKyAgICAgICAgbG9hZDY0KHJpZ2h0LCBzY3JhdGNoUmVnaXN0
ZXIoKSk7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0
ZXIoKSk7CisgICAgfQogICAgIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7CkBA
IC0xMTUyLDYgKzExNjksMTEgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBwdWJsaWMg
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQs
IGxlZnQsIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQor
CiAgICAgSnVtcCBicmFuY2hUZXN0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
cmVnLCBSZWdpc3RlcklEIG1hc2spCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci50ZXN0cV9y
cihyZWcsIG1hc2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAppbmRleCAwOThhZWQ5MzVhNjhmN2Q2Njg3YmQzNTIzMjUzMDc3ZjMxZWQxOWYyLi4yNTk2
ZjgzNDkwNmIzZDgxZGMzYzczNDM3ZWIxMjEzNmQwMmVkMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtNzg3LDkgKzc4Nyw5IEBAIHZvaWQg
Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZShSZWY8QmFzZWxpbmVKSVRD
b2RlPiBqaXRDb2RlKQogCiAgICAgewogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7Ci0gICAgICAgIEFTU0VSVCghbV9iYXNlbGluZUpJVERhdGEpOwotICAgICAgICBt
X2Jhc2VsaW5lSklURGF0YSA9IEJhc2VsaW5lSklURGF0YTo6Y3JlYXRlKGppdENvZGUtPm1fY29u
c3RhbnRQb29sLnNpemUoKSk7Ci0gICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJbmZv
cyA9IEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPihqaXRDb2RlLT5tX3VubGlua2VkU3R1
YkluZm9zLnNpemUoKSk7CisgICAgICAgIEFTU0VSVCghbV9qaXREYXRhKTsKKyAgICAgICAgYXV0
byBiYXNlbGluZUpJVERhdGEgPSBCYXNlbGluZUpJVERhdGE6OmNyZWF0ZShqaXRDb2RlLT5tX2Nv
bnN0YW50UG9vbC5zaXplKCkpOworICAgICAgICBiYXNlbGluZUpJVERhdGEtPm1fc3R1YkluZm9z
ID0gRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+KGppdENvZGUtPm1fdW5saW5rZWRTdHVi
SW5mb3Muc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiB1bmxpbmtlZENhbGxMaW5rSW5mbyA6
IGppdENvZGUtPm1fdW5saW5rZWRDYWxscykgewogICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gPSBnZXRDYWxsTGlua0luZm9Gb3JCeXRlY29kZUluZGV4KGxvY2tlciwgdW5s
aW5rZWRDYWxsTGlua0luZm8uYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgICAgICBBU1NFUlQoY2Fs
bExpbmtJbmZvKTsKQEAgLTgwMCwyOCArODAwLDI5IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXR1cFdp
dGhVbmxpbmtlZEJhc2VsaW5lQ29kZShSZWY8QmFzZWxpbmVKSVRDb2RlPiBqaXRDb2RlKQogICAg
ICAgICAgICAgYXV0byBlbnRyeSA9IGppdENvZGUtPm1fY29uc3RhbnRQb29sLmF0KGkpOwogICAg
ICAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgSklUQ29u
c3RhbnRQb29sOjpUeXBlOjpHbG9iYWxPYmplY3Q6Ci0gICAgICAgICAgICAgICAgbV9iYXNlbGlu
ZUpJVERhdGEtPmF0KGkpID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CisgICAgICAgICAgICAgICAg
YmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6OlR5cGU6OlN0
cnVjdHVyZVN0dWJJbmZvOiB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSBiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihlbnRyeS5wb2ludGVyKCkpOwogICAgICAgICAgICAgICAgIFVu
bGlua2VkU3RydWN0dXJlU3R1YkluZm8mIHVubGlua2VkU3R1YkluZm8gPSBqaXRDb2RlLT5tX3Vu
bGlua2VkU3R1YkluZm9zW2luZGV4XTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8gPSBtX2Jhc2VsaW5lSklURGF0YS0+bV9zdHViSW5mb3NbaW5kZXhdOworICAg
ICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IGJhc2VsaW5lSklURGF0
YS0+bV9zdHViSW5mb3NbaW5kZXhdOwogICAgICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRpYWxp
emVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyh0aGlzLCB1bmxpbmtlZFN0dWJJbmZvKTsK
LSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSAmc3R1YkluZm87Cisg
ICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9ICZzdHViSW5mbzsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgSklUQ29u
c3RhbnRQb29sOjpUeXBlOjpGdW5jdGlvbkRlY2w6IHsKICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVudHJ5LnBvaW50ZXIoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPmF0KGkpID0gZnVuY3Rpb25EZWNsKGluZGV4
KTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZUpJVERhdGEtPmF0KGkpID0gZnVuY3Rpb25EZWNs
KGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBlOjpGdW5jdGlvbkV4cHI6IHsKICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVudHJ5LnBv
aW50ZXIoKSk7Ci0gICAgICAgICAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPmF0KGkpID0gZnVu
Y3Rpb25FeHByKGluZGV4KTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZUpJVERhdGEtPmF0KGkp
ID0gZnVuY3Rpb25FeHByKGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBtX2ppdERhdGEgPSBiYXNl
bGluZUpJVERhdGEucmVsZWFzZSgpOwogICAgIH0KIAogICAgIHN3aXRjaCAoY29kZVR5cGUoKSkg
ewpAQCAtOTA2LDIwICs5MDcsMjQgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICAgICAvLyBk
ZXN0cnVjdG9ycy4KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKGF1dG8qIGppdERhdGEgPSBt
X2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDog
aml0RGF0YS0+bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIHN0dWJJbmZvLmFib3V0VG9EaWUo
KTsKLSAgICAgICAgICAgIHN0dWJJbmZvLmRlcmVmKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0jaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBl
KCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGZvciAoYXV0byogc3R1YkluZm8g
OiBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3N0dWJJbmZvcykgewogICAgICAgICAgICAgc3R1
YkluZm8tPmFib3V0VG9EaWUoKTsKICAgICAgICAgICAgIHN0dWJJbmZvLT5kZXJlZigpOwogICAg
ICAgICB9Ci0gICAgfQorICAgICAgICBpZiAobV9qaXREYXRhKQorICAgICAgICAgICAgZGVsZXRl
IGJpdHdpc2VfY2FzdDxERkc6OkRGR0pJVERhdGEqPihtX2ppdERhdGEpOwogI2VuZGlmCisgICAg
fSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkg
eworICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9z
KSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uYWJvdXRUb0RpZSgpOworICAgICAgICAgICAg
ICAgIHN0dWJJbmZvLmRlcmVmKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWxldGUg
aml0RGF0YTsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkBA
IC0xMjQ4LDE4ICsxMjUzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9u
cyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWaXNpdG9yJiB2aXNpdG9yCiAgICAgfQogCiAj
aWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAg
ICAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCi0gICAg
ICAgICAgICAgICAgc3R1YkluZm8ucHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGZv
ciAoYXV0byogc3R1YkluZm8gOiBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3N0dWJJbmZvcykK
ICAgICAgICAgICAgIHN0dWJJbmZvLT5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAg
ICB9CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJh
c2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0
RGF0YS0+bV9zdHViSW5mb3MpCisgICAgICAgICAgICAgICAgc3R1YkluZm8ucHJvcGFnYXRlVHJh
bnNpdGlvbnModmlzaXRvcik7CisgICAgICAgIH0KKyAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTE1ODUsMTUgKzE1ODksOCBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAjaWYgRU5BQkxFKEpJVCkK
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUpJVElubGluZUNhY2hlcygpCiB7Ci0gICAgaWYgKGF1
dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICBmb3IgKGF1
dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlckJhc2UgbG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeSk7Ci0gICAgICAgICAg
ICBzdHViSW5mby52aXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdGhpcyk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZHOjpD
b21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAgICAgICBm
b3IgKGF1dG8qIGNhbGxMaW5rSW5mbyA6IGRmZ0NvbW1vbi0+bV9jYWxsTGlua0luZm9zKQogICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT52aXNpdFdlYWsodm0oKSk7CkBAIC0xNjAxLDggKzE1OTgs
MTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKCkKICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlckJhc2UgbG9ja2VyKE5vTG9ja2luZ05lY2Vzc2FyeSk7CiAg
ICAgICAgICAgICBzdHViSW5mby0+dmlzaXRXZWFrUmVmZXJlbmNlcyhsb2NrZXIsIHRoaXMpOwog
ICAgICAgICB9Ci0gICAgfQogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8q
IGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBz
dHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7CisgICAgICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgICAg
ICAgICBzdHViSW5mby52aXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdGhpcyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CiB9CiAjZW5kaWYKIApAQCAtMTY4OSwxMiArMTY5Myw4
IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogICAgIH0KICNpZiBFTkFCTEUoSklUKQogICAgIGlm
IChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBqaXREYXRh
ID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKLSAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KHN0dWJJbmZvLmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5zdHViSW5m
byA9ICZzdHViSW5mbzsKLSAgICAgICAgfQotI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBp
ZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2Rl
LT5kZmdDb21tb24oKTsKICAgICAgICAgICAgIGZvciAoYXV0byogc3R1YkluZm8gOiBkZmdDb21t
b24tPm1fc3R1YkluZm9zKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8tPmNv
ZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZv
OwpAQCAtMTcxMCw4ICsxNzEwLDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVl
LmluU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZGVsZXRlcykKICAgICAgICAgICAgICAg
ICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5kZWxl
dGVTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKLSAgICAgICAgfQogI2VuZGlmCisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0
YSgpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1f
c3R1YkluZm9zKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHN0dWJJbmZvLmNvZGVP
cmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5zdHViSW5mbyA9ICZzdHViSW5mbzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHJlc3VsdCk7CkBAIC0xNzI4LDIxICsxNzMzLDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KQogU3RydWN0dXJlU3R1YkluZm8qIENvZGVCbG9j
azo6ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2Vs
aW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0
YS0+bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIGlmIChzdHViSW5mby5jb2RlT3JpZ2luID09
IGNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0dXJuICZzdHViSW5mbzsKLSAgICAgICAg
fQotICAgIH0KLQotI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBmb3Ig
KGF1dG8qIHN0dWJJbmZvIDogaml0Q29kZSgpLT5kZmdDb21tb24oKS0+bV9zdHViSW5mb3MpIHsK
ICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29kZU9yaWdpbiA9PSBjb2RlT3JpZ2luKQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdHViSW5mbzsKICAgICAgICAgfQotICAgIH0KICNlbmRpZgor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRh
KCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJ
bmZvcykgeworICAgICAgICAgICAgICAgIGlmIChzdHViSW5mby5jb2RlT3JpZ2luID09IGNvZGVP
cmlnaW4pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAmc3R1YkluZm87CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTE3ODEs
NyArMTc4Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSgpCiAgICAg
UkVMRUFTRV9BU1NFUlQoIUpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkpOwogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAKLSAgICBpZiAoYXV0byogaml0RGF0YSA9
IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7CisgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNl
bGluZUpJVERhdGEoKSkgewogICAgICAgICAvLyBXZSBjYW4gY2xlYXIgdGhlc2UgYmVjYXVzZSBu
byBvdGhlciB0aHJlYWQgd2lsbCBoYXZlIHJlZmVyZW5jZXMgdG8gYW55IHN0dWIgaW5mb3MsIGNh
bGwKICAgICAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0IGhh
dmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKICAgICAgICAgLy8gc3Ry
dWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFuZCBmcmll
bmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCkBAIC0xODAyLDcgKzE4MDcsNyBAQCB2b2lk
IENvZGVCbG9jazo6cmVzZXRCYXNlbGluZUpJVERhdGEoKQogICAgICAgICAvLyBXZSBjYW4gY2xl
YXIgdGhpcyBiZWNhdXNlIHRoZSBERkcncyBxdWVyaWVzIHRvIHRoZXNlIGRhdGEgc3RydWN0dXJl
cyBhcmUgZ3VhcmRlZCBieSB3aGV0aGVyCiAgICAgICAgIC8vIHRoZXJlIGlzIEpJVCBjb2RlLgog
Ci0gICAgICAgIG1fYmFzZWxpbmVKSVREYXRhID0gbnVsbHB0cjsKKyAgICAgICAgbV9qaXREYXRh
ID0gbnVsbHB0cjsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTE4NDgsMTkgKzE4NTMsMTkgQEAgdm9p
ZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYgbG9ja2VyLAogICAgIH0pOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
YXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKLSAgICAgICAgICAgIHN0dWJJ
bmZvLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAgIH0KLSNlbmRpZgotCi0jaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7
CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9u
ID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6
IGRmZ0NvbW1vbi0+bV9zdHViSW5mb3MpCiAgICAgICAgICAgICBzdHViSW5mby0+dmlzaXRBZ2dy
ZWdhdGUodmlzaXRvcik7CiAgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy52aXNp
dEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgdmlzaXRPU1JFeGl0VGFyZ2V0cyhsb2NrZXIs
IHZpc2l0b3IpOworI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERh
dGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5m
byA6IGppdERhdGEtPm1fc3R1YkluZm9zKQorICAgICAgICAgICAgICAgIHN0dWJJbmZvLnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOworICAgICAgICB9CiAgICAgfQogI2VuZGlmCiB9CkBAIC0zNDc3
LDIxICszNDgyLDIyIEBAIHN0ZDo6b3B0aW9uYWw8Q29kZU9yaWdpbj4gQ29kZUJsb2NrOjpmaW5k
UEModm9pZCogcGMpCiAKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9sb2NrKTsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5n
ZXQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1
YkluZm9zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvbnRhaW5zUEMocGMpKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3R1YkluZm8uY29kZU9yaWdpbjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBpZiAoSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21t
b24oKTsKICAgICAgICAgICAgIGZvciAoYXV0byogc3R1YkluZm8gOiBkZmdDb21tb24tPm1fc3R1
YkluZm9zKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb250YWluc1BDKHBjKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJbmZvLT5jb2RlT3JpZ2luOwogICAgICAg
ICAgICAgfQotICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvbnRhaW5zUEMocGMpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0dWJJbmZvLmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIG1faml0Q29kZS0+
ZmluZFBDKHRoaXMsIHBjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAppbmRleCA0Njk2M2Q3M2RlMjNlMDFmZDE1MjU0NTFhODM0N2I2Yzc3NWMxODI2Li40NTc5
YWVkNzQwMDg4OGU5MGFiODEyNjNhZmRmYTVjMDUwYzQwYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC03OSw2ICs3OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAjaWYgRU5BQkxFKERGR19KSVQpCiBuYW1lc3BhY2UgREZHIHsKK2NsYXNzIERGR0pJ
VERhdGE7CiBzdHJ1Y3QgT1NSRXhpdFN0YXRlOwogfSAvLyBuYW1lc3BhY2UgREZHCiAjZW5kaWYK
QEAgLTI0Nyw3ICsyNDgsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZWNvZGVJbmRleD4gYnl0ZWNvZGVJbmRleEZyb21DYWxsU2l0
ZUluZGV4KENhbGxTaXRlSW5kZXgpOwogCi0gICAgLy8gQmVjYXVzZSB3ZSBtaWdodCB0aHJvdyBv
dXQgYmFzZWxpbmUgSklUIGNvZGUgYW5kIGFsbCBpdHMgYmFzZWxpbmUgSklUIGRhdGEgKG1fYmFz
ZWxpbmVKSVREYXRhKSwKKyAgICAvLyBCZWNhdXNlIHdlIG1pZ2h0IHRocm93IG91dCBiYXNlbGlu
ZSBKSVQgY29kZSBhbmQgYWxsIGl0cyBiYXNlbGluZSBKSVQgZGF0YSAobV9qaXREYXRhKSwKICAg
ICAvLyB5b3UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IHRoZSBsaWZldGltZSBvZiB3aGVuIHlv
dSB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uLgogICAgIC8vIFRoZSByZXR1
cm4gdmFsdWUgbWF5IGhhdmUgcmF3IHBvaW50ZXJzIGludG8gdGhpcyBkYXRhIHN0cnVjdHVyZSB0
aGF0IGdldHMgdGhyb3duIGF3YXkuCiAgICAgLy8gU3BlY2lmaWNhbGx5LCB5b3UgbmVlZCB0byBl
bnN1cmUgdGhhdCBubyBHQyBjYW4gYmUgZmluYWxpemVkICh0eXBpY2FsbHkgdGhhdCBtZWFucyBu
bwpAQCAtMjU4LDcgKzI1OSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
I2lmIEVOQUJMRShKSVQpCiAgICAgdm9pZCBzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZShS
ZWY8QmFzZWxpbmVKSVRDb2RlPik7CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQmFz
ZWxpbmVKSVREYXRhKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKENvZGVCbG9jaywgbV9iYXNl
bGluZUpJVERhdGEpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkpJVERhdGEoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2ppdERhdGEpOyB9CiAKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogYWRkT3B0aW1pemluZ1N0dWJJbmZvKEFjY2Vzc1R5cGUsIENvZGVP
cmlnaW4pOwogCkBAIC01MzQsOSArNTM1LDI1IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYmFzZWxpbmVTdHJpbmdTd2l0Y2hKdW1wVGFi
bGUoaW50IHRhYmxlSW5kZXgpOwogICAgIEJhc2VsaW5lSklURGF0YSogYmFzZWxpbmVKSVREYXRh
KCkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGppdFR5cGUoKSA9PSBKSVRUeXBlOjpC
YXNlbGluZUpJVCk7Ci0gICAgICAgIHJldHVybiBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKTsKKyAg
ICAgICAgaWYgKCFKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKKyAgICAgICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QmFzZWxpbmVKSVREYXRhKj4obV9qaXREYXRhKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisjaWYgRU5BQkxFKERGR19KSVQpCisgICAg
dm9pZCBzZXRERkdKSVREYXRhKHN0ZDo6dW5pcXVlX3B0cjxERkc6OkRGR0pJVERhdGE+JiYgaml0
RGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9qaXREYXRhKTsKKyAgICAgICAgbV9qaXRE
YXRhID0gaml0RGF0YS5yZWxlYXNlKCk7CisgICAgfQorCisgICAgREZHOjpERkdKSVREYXRhKiBk
ZmdKSVREYXRhKCkKKyAgICB7CisgICAgICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
aml0VHlwZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8REZHOjpERkdKSVRE
YXRhKj4obV9qaXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorI2VuZGlm
CiAjZW5kaWYKICAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXMoKTsgfQogICAgIGNvbnN0IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB1bmxpbmtlZFN3
aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPnVu
bGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOyB9CkBAIC05MzcsNyArOTU0LDcgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgUmVmUHRyPEpJVENvZGU+IG1f
aml0Q29kZTsKICNpZiBFTkFCTEUoSklUKQogcHVibGljOgotICAgIHN0ZDo6dW5pcXVlX3B0cjxC
YXNlbGluZUpJVERhdGE+IG1fYmFzZWxpbmVKSVREYXRhOworICAgIHZvaWQqIG1faml0RGF0YSB7
IG51bGxwdHIgfTsKIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoREZHX0pJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCAyM2ZkNDU0N2M1OWI5MmE5MzQzNzQy
YTU4NGY3ZGRjZGYyOTFmOWViLi40ZTAzYWEzZWRlNDI4OWUwOGMyNTg4ODI5MDhiNTRiNjNmMzlh
ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFs
bG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCkBAIC03NSw3ICs3NSw3
IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVy
YXRvciBmaW5hbCA6IHB1YmxpYyBKdW1waW5nCiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25f
R1N0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0ciBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgY29udGlndW91
c1N0cnVjdHVyZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0b3JhZ2VTdHJ1Y3R1cmUsIEdQ
UlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgZ2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVk
U3RydWN0dXJlIGNvbnRpZ3VvdXNTdHJ1Y3R1cmUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlT
dG9yYWdlU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCiAgICAg
ICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4o
ZnJvbSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9j
b250aWd1b3VzU3RydWN0dXJlKGNvbnRpZ3VvdXNTdHJ1Y3R1cmUpCkBAIC0xMTUsNyArMTE1LDcg
QEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yIGZpbmFsIDogcHVibGljIEp1bXBpbmcKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fY29u
dGlndW91c1N0cnVjdHVyZTsKICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fYXJyYXlTdG9yYWdl
T3JDb250aWd1b3VzU3RydWN0dXJlOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgbV9nbG9iYWxPYmplY3Q7CisgICAgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQgbV9nbG9iYWxPYmplY3Q7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsK
ICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQ
bGFuLCAyPiBtX3BsYW5zOwpAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9j
YXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZp
bmFsCiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJl
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlvbl9HU3RaQiBm
dW5jdGlvbiwKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyIGdsb2JhbE9iamVjdCwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIHNpemVHUFIs
IEdQUlJlZyBzdG9yYWdlR1BSKQorICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudCBnbG9iYWxPYmplY3QsIEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQ
UlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKICAgICAgICAgOiBKdW1waW5nU2xvd1Bh
dGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBqaXQpCiAgICAgICAg
ICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX3Jlc3VsdEdQUihyZXN1bHRHUFIp
CkBAIC0xNTIsNyArMTUyLDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxl
U3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwKIAogICAgIFBfSklU
T3BlcmF0aW9uX0dTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9iamVjdDsKKyAgICBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudCBtX2dsb2JhbE9iamVjdDsKICAgICBHUFJSZWcgbV9zdHJ1
Y3R1cmVHUFI7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BS
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAppbmRleCA0NTNjM2RjZGFlZDFm
M2MzYzJhZjE0YjgxMmI4YTIzYTU2ZDExY2EyLi40MDU4N2U5YWQ1ZWQ5MDUxZDFjMjEwYmNhMWRm
ZWI4YmI1ZWQxMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaApAQCAt
NDksNiArNDksMjMgQEAgbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIEpJVENvbXBpbGVyOwogCitj
bGFzcyBERkdKSVREYXRhIGZpbmFsIDogcHVibGljIFRyYWlsaW5nQXJyYXk8REZHSklURGF0YSwg
dm9pZCo+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBUcmFpbGlu
Z0FycmF5PERGR0pJVERhdGEsIHZvaWQqPjsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
REZHSklURGF0YT4gY3JlYXRlKHVuc2lnbmVkIHBvb2xTaXplKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiB7IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxv
YyhCYXNlOjphbGxvY2F0aW9uU2l6ZShwb29sU2l6ZSkpKSBERkdKSVREYXRhKHBvb2xTaXplKSB9
OworICAgIH0KKworICAgIGV4cGxpY2l0IERGR0pJVERhdGEodW5zaWduZWQgc2l6ZSkKKyAgICAg
ICAgOiBCYXNlKHNpemUpCisgICAgeworICAgIH0KK307CisKIGNsYXNzIEpJVENvZGUgZmluYWwg
OiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7CiBwdWJsaWM6CiAgICAgSklUQ29kZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAppbmRleCA0NWYzNDNmMGRk
MDU5MDdmMDk5MTdkYjAzYTFmNDE0ZGQ2ODAxNGNiLi45MmUzYmI2MTgwNDNlMjA1OTg5NzYyZjVm
MWYxZTBmNTEwZmIyN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9y
U2xvd1BhdGhDYWxsLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGh1
bmtHZW5lcmF0b3JzLmgiCiAjaW5jbHVkZSAiVk0uaCIKIApAQCAtMTEwLDEzICsxMTEsMzAgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5KCkKICAgICAvLyBjaGVjaykgd2hpY2ggd2ls
bCBiZSBkZXBlbmRlbnQgb24gc3RhY2sgbGF5b3V0LiAoV2UnZCBuZWVkIHRvIGFjY291bnQgZm9y
IHRoaXMgaW4KICAgICAvLyBib3RoIG5vcm1hbCByZXR1cm4gY29kZSBhbmQgd2hlbiBqdW1waW5n
IHRvIGFuIGV4Y2VwdGlvbiBoYW5kbGVyKS4KICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwot
ICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrKTsKKyAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25D
b2RlKSB7CisgICAgICAgIGlmIChtX2dyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpCisgICAgICAg
ICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSSW5mbzo6cmVnVDAsIG1f
Y29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBl
bWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jayk7CisgICAgfQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAgcHJvYmVEZWJ1ZyhbPV0oUHJv
YmU6OkNvbnRleHQmIGN0eCkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGN0eC5m
cDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+aml0VHlwZSgpKSk7CisgICAgfSk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50
cnkoKQogewogICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXMoKTsKICAgICBlbWl0TWF0ZXJpYWxpemVU
YWdDaGVja1JlZ2lzdGVycygpOyAgICAKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChtX2dy
YXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjpjb25zdGFudHNSZWdp
c3Rlcik7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rl
ciwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIEdQUkluZm86OmNvbnN0YW50c1JlZ2lz
dGVyKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUVudHJ5
RXhlY3V0aW9uRmxhZygpCkBAIC0zNDAsNyArMzU4LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZSgpCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBh
ZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZv
clNsb3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtX3NwZWN1bGF0
aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0
aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKKyAgICBlbWl0R2V0RnJv
bUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJh
bWVSb2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOwogCiAgICAgLy8gR2VuZXJhdGUgc2xvdyBwYXRoIGNvZGUu
CiAgICAgbV9zcGVjdWxhdGl2ZS0+cnVuU2xvd1BhdGhHZW5lcmF0b3JzKG1fcGNUb0NvZGVPcmln
aW5NYXBCdWlsZGVyKTsKQEAgLTQxMyw3ICs0MzIsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlRnVuY3Rpb24oKQogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAg
ICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVF
eHRlbnRGb3JTbG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogCi0gICAgbV9z
cGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9u
KG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVCbG9jayk7CisgICAgZW1p
dEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOworICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRo
Q2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dF
cnJvciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAKICAgICAvLyBUaGUgZmFzdCBlbnRy
eSBwb2ludCBpbnRvIGEgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIGNvcnJlY3QgbnVtYmVy
IG9mIGFyZ3VtZW50cwogICAgIC8vIGhhdmUgYmVlbiBwYXNzZWQgdG8gdGhlIGNhbGwgKHdlIG9u
bHkgdXNlIHRoZSBmYXN0IGVudHJ5IHBvaW50IHdoZXJlIHdlIGNhbiBzdGF0aWNhbGx5CkBAIC00
MzIsNyArNDUyLDkgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICAg
ICAgZW1pdFN0b3JlQ29kZU9yaWdpbihDb2RlT3JpZ2luKEJ5dGVjb2RlSW5kZXgoMCkpKTsKICAg
ICAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICAgICAgYWRk
UHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JT
bG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgICAgICBtX3NwZWN1bGF0
aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2Rl
QmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBv
cGVyYXRpb25DYWxsQXJpdHlDaGVjaywgR1BSSW5mbzo6cmVnVDAsIG1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKSk7CisgICAgICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgbG9h
ZFB0cihBZGRyZXNzKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkds
b2JhbE9iamVjdCgpKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgbV9zcGVjdWxh
dGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKG1fY29k
ZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgPyBvcGVyYXRpb25Db25zdHJ1Y3RBcml0eUNoZWNrIDog
b3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2ssIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOwogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwpCiAgICAgICAgICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKG1heEZyYW1lRXh0ZW50Rm9yU2xv
d1BhdGhDYWxsKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBicmFuY2hUZXN0MzIo
WmVybywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpLmxpbmtUbyhmcm9tQXJpdHlDaGVjaywgdGhp
cyk7CkBAIC02NDMsNiArNjY1LDU3IEBAIHZvaWQgSklUQ29tcGlsZXI6Om1ha2VDYXRjaE9TUkVu
dHJ5QnVmZmVyKCkKICAgICB9CiB9CiAKK3ZvaWQgSklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENv
bnN0YW50KFVubGlua2VkQ29uc3RhbnQgY29uc3RhbnQsIEdQUlJlZyBkZXN0KQoreworICAgIGNv
bnN0YW50Lm1hdGVyaWFsaXplKCp0aGlzLCBkZXN0KTsKK30KKwordm9pZCBKSVRDb21waWxlcjo6
c3RvcmVVbmxpbmtlZENvbnN0YW50KFVubGlua2VkQ29uc3RhbnQgY29uc3RhbnQsIEFkZHJlc3Mg
ZGVzdCkKK3sKKyAgICBjb25zdGFudC5wb2tlKCp0aGlzLCBkZXN0KTsKK30KKworSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQ6OlVubGlua2VkQ29uc3RhbnQoR3JhcGgmIGdyYXBoLCBKU0Nl
bGwqIGNlbGwpCit7CisgICAgZ3JhcGgubV9wbGFuLndlYWtSZWZlcmVuY2VzKCkuYWRkTGF6aWx5
KGNlbGwpOworICAgIGlmIChncmFwaC5tX3BsYW4uaXNVbmxpbmtlZCgpKSB7CisgICAgICAgIG1f
aW5kZXggPSBncmFwaC5tX3BsYW4uYWRkVW5saW5rZWRDb25zdGFudChjZWxsKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtX3BvaW50ZXIgPSBjZWxsOworfQorCitKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudChHcmFwaCYgZ3JhcGgsIHZvaWQqIHBv
aW50ZXIsIE5vbkNlbGxUYWcpCit7CisgICAgaWYgKGdyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkp
IHsKKyAgICAgICAgbV9pbmRleCA9IGdyYXBoLm1fcGxhbi5hZGRVbmxpbmtlZENvbnN0YW50KHBv
aW50ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcG9pbnRlciA9IHBvaW50ZXI7
Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om1hdGVyaWFsaXplKEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgcmVzdWx0R1BSKQoreworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgaWYgKGlzVW5saW5rZWQoKSkgeworICAgICAgICBqaXQubG9hZFB0cih1bmxpbmtlZEFk
ZHJlc3MoKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAg
IGppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9wb2ludGVyKSwgcmVzdWx0R1BSKTsKK30KKwordm9p
ZCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6cG9rZShDQ2FsbEhlbHBlcnMmIGppdCwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzIGFkZHJlc3MpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICBpZiAoaXNVbmxpbmtlZCgpKSB7CisgICAgICAgIGppdC50cmFuc2ZlclB0cih1bmxpbmtlZEFk
ZHJlc3MoKSwgYWRkcmVzcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBq
aXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihtX3BvaW50ZXIpLCBhZGRyZXNzKTsKK30KKwogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKaW5kZXggOTg0Mjc2ODM4ZDNl
ODkwYzUxMTM2ZTBhM2QxOGVlMGI5NzI0NmMxNy4uZmM1YTBkZjEwNTdiOGYxNGUwYzJmMDU0NDQ5
YTJiMGRkMTZjOWIyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaApAQCAtMjU1LDE0ICsyNTUsNiBAQCBjbGFzcyBKSVRDb21waWxlciA6IHB1YmxpYyBDQ2Fs
bEhlbHBlcnMgewogICAgICAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShzdHJ1Y3R1cmVTZXRbaV0p
OwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEp1bXAgYnJhbmNo
V2Vha1B0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgSlNDZWxsKiB3ZWFrUHRy
KQotICAgIHsKLSAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1
c3RlZEltbVB0cih3ZWFrUHRyKSk7Ci0gICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1B0cik7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBUIGxlZnQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgd2Vha1N0cnVjdHVyZSkKICAgICB7CkBAIC0z
MTIsNiArMzA0LDY2IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7
CiAgICAgICAgIGVtaXRTYXZlQ2FsbGVlU2F2ZXNGb3IoJlJlZ2lzdGVyQXRPZmZzZXRMaXN0Ojpk
ZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwogICAgIH0KIAorICAgIGNsYXNzIFVubGlua2VkQ29u
c3RhbnQgZmluYWwgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzOjpDb25zdGFudE1hdGVyaWFsaXplciB7
CisgICAgcHVibGljOgorICAgICAgICBlbnVtIE5vbkNlbGxUYWcgeyBOb25DZWxsIH07CisgICAg
ICAgIFVubGlua2VkQ29uc3RhbnQoR3JhcGgmLCBKU0NlbGwqKTsKKworICAgICAgICB2b2lkIG1h
dGVyaWFsaXplKENDYWxsSGVscGVycyYsIEdQUlJlZyk7CisgICAgICAgIHZvaWQgcG9rZShDQ2Fs
bEhlbHBlcnMmLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MpOworCisgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgICAgIHN0YXRpYyBVbmxpbmtlZENvbnN0YW50IG5vbkNlbGxQdHIoR3Jh
cGgmIGdyYXBoLCBUKiBwb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNz
ZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0NlbGwsIFQ+KTsKKyAgICAgICAgICAgIHJldHVybiBV
bmxpbmtlZENvbnN0YW50KGdyYXBoLCBwb2ludGVyLCBOb25DZWxsKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHN0YXRpYyBVbmxpbmtlZENvbnN0YW50IHN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gVW5saW5rZWRDb25zdGFudChncmFwaCwgc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgaXNVbmxpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggIT0gVUlO
VF9NQVg7IH0KKworICAgICAgICB2b2lkKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2lu
dGVyOyB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBBZGRyZXNzIHVubGlua2VkQWRk
cmVzcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc1VubGlua2VkKCkpOworICAg
ICAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIERGR0pJ
VERhdGE6Om9mZnNldE9mRGF0YSgpICsgc2l6ZW9mKHZvaWQqKSAqIG1faW5kZXgpOworICAgICAg
ICB9CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIFVubGlua2VkQ29uc3RhbnQoR3Jh
cGgmLCB2b2lkKiwgTm9uQ2VsbFRhZyk7CisKKyAgICAgICAgdW5zaWduZWQgbV9pbmRleCB7IFVJ
TlRfTUFYIH07CisgICAgICAgIHZvaWQqIG1fcG9pbnRlciB7IG51bGxwdHIgfTsKKyAgICB9Owor
CisgICAgdm9pZCBsb2FkVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0YW50LCBHUFJSZWcp
OworICAgIHZvaWQgc3RvcmVVbmxpbmtlZENvbnN0YW50KFVubGlua2VkQ29uc3RhbnQsIEFkZHJl
c3MpOworCisgICAgSnVtcCBicmFuY2hVbmxpbmtlZENvbnN0YW50KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgR1BSUmVnIGxlZnQsIFVubGlua2VkQ29uc3RhbnQgY29uc3RhbnQpCisgICAgewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChjb25zdGFudC5pc1VubGlua2VkKCkpCisg
ICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpicmFuY2hQdHIoY29uZCwgbGVmdCwgY29u
c3RhbnQudW5saW5rZWRBZGRyZXNzKCkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBDQ2FsbEhl
bHBlcnM6OmJyYW5jaFB0cihjb25kLCBsZWZ0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
Y29uc3RhbnQucG9pbnRlcigpKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hVbmxpbmtlZENv
bnN0YW50KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBVbmxpbmtlZENv
bnN0YW50IGNvbnN0YW50KQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAo
Y29uc3RhbnQuaXNVbmxpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6
YnJhbmNoUHRyKGNvbmQsIGxlZnQsIGNvbnN0YW50LnVubGlua2VkQWRkcmVzcygpKTsKKyNlbmRp
ZgorICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpicmFuY2hQdHIoY29uZCwgbGVmdCwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvbnN0YW50LnBvaW50ZXIoKSkpOworICAgIH0KKwog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAppbmRleCBk
NjM2MTMyOTdjMjdmMzg4MTU4NmJjYWE3N2UzYWNjZmY0ZTI2NGM3Li41ZWNlNDU2NzU1MGRhMzE2
YjQyNjkzYWE1NWJmNjZlYWU3NzJlNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIGJvb2wgSklURmluYWxpemVy
OjpmaW5hbGl6ZSgpCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX3BsYW4uY29kZUJsb2Nr
KCk7CiAKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNvcHlSZWYoKSk7Cisg
ICAgY29kZUJsb2NrLT5zZXRERkdKSVREYXRhKG1fcGxhbi5maW5hbGl6ZUpJVERhdGEoKSk7CiAK
ICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2ppdENvZGUtPm9wdGltaXplQWZ0ZXJXYXJtVXAo
Y29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IGY4NjM1
YWU2ODgyYTI1MTVhYjljMzExNGU2NjdhMWI3ODJjYjczMmIuLjdlODZhOTljYTk0OWJlZWNlOGNk
OTExNzViZTBhNGY0MWI2NDg1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cApAQCAtNjgxLDYgKzY4MSwyMiBAQCB2b2lkIFBsYW46OmNsZWFuTXVzdEhhbmRsZVZhbHVlc0lm
TmVjZXNzYXJ5KCkKICAgICB9CiB9CiAKK3Vuc2lnbmVkIFBsYW46OmFkZFVubGlua2VkQ29uc3Rh
bnQodm9pZCogcHRyKQoreworICAgIEFTU0VSVCghcHRyKTsKKyAgICByZXR1cm4gbV9jb25zdGFu
dFBvb2wuYWRkKHB0ciwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKS5pdGVyYXRvci0+dmFsdWU7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBQbGFuOjpmaW5hbGl6ZUpJVERhdGEoKQor
eworICAgIGlmIChtX2NvbnN0YW50UG9vbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGF1dG8gaml0RGF0YSA9IERGR0pJVERhdGE6OmNyZWF0ZShtX2NvbnN0YW50UG9v
bC5zaXplKCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29uc3RhbnRQb29sKQorICAgICAg
ICBqaXREYXRhLT5hdChwYWlyLnZhbHVlKSA9IHBhaXIua2V5OworICAgIHJldHVybiBqaXREYXRh
OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXggNDA4MDMyOTZhNmRiZTBl
NDdlYTM4MzNkYmJmMjRhNmMyOTAzYjZlMi4uZTk1NGIwZDFmNDBjYWFkMmRiNWZlYTRmZmU5ODMy
NzY0MTk2MWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKQEAgLTQ4LDYgKzQ4
LDcgQEAgY2xhc3MgQ29kZUJsb2NrOwogbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIFRocmVhZERh
dGE7CitjbGFzcyBERkdKSVREYXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKQEAgLTEwMSw2
ICsxMDIsOSBAQCBjbGFzcyBQbGFuIGZpbmFsIDogcHVibGljIEpJVFBsYW4gewogICAgIERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjayogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxi
YWNrLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDYWxsYmFjayhSZWY8RGVmZXJyZWRDb21waWxhdGlv
bkNhbGxiYWNrPiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsg
fQogCisgICAgdW5zaWduZWQgYWRkVW5saW5rZWRDb25zdGFudCh2b2lkKik7CisgICAgc3RkOjp1
bmlxdWVfcHRyPERGR0pJVERhdGE+IGZpbmFsaXplSklURGF0YSgpOworCiBwcml2YXRlOgogICAg
IENvbXBpbGF0aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKCkgb3ZlcnJpZGU7CiAgICAgCkBA
IC0xMzQsNiArMTM4LDcgQEAgY2xhc3MgUGxhbiBmaW5hbCA6IHB1YmxpYyBKSVRQbGFuIHsKICAg
ICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlczsKIAog
ICAgIFJlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisgICAg
SGFzaE1hcDx2b2lkKiwgdW5zaWduZWQ+IG1fY29uc3RhbnRQb29sOwogfTsKIAogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4
IGZhYmNlMDE4MmRlOTAwMjUzZjBkZjNmMGJmMmU5MzAxODdjMGZmMTQuLjY0M2JkMjVjMDljMmEz
MjAyMjQ1N2ExNWQ2MTY5NDYxOTExMjNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2Vu
ZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogY2xhc3MgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJs
aWMgSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wPiB7CiBwdWJs
aWM6CiAgICAgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgIGNv
bnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgZ2xvYmFsT2Jq
ZWN0LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQorICAgICAgICBjb25zdCBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgZ2xvYmFsT2JqZWN0
LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAgICA6IEp1bXBpbmdT
bG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4oZnJvbSwgaml0KQogICAgICAg
ICAsIG1fcmVzdWx0UmVncyhyZXN1bHRSZWdzKQogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGds
b2JhbE9iamVjdCkKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU2FuZVN0cmluZ0dldEJ5VmFsU2xv
d1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG8KICAg
ICB9CiAKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdFJlZ3M7Ci0gICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX2Jhc2VSZWc7CiAgICAgR1BSUmVn
IG1fcHJvcGVydHlSZWc7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1f
cGxhbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCmluZGV4IDM2MGUxODE4M2VjYmExZTBjYzA1ZDc2YzcyY2RmMTIxOWVjY2IxNmQuLjQzYzM1
Y2RkYWVkZGQ5NGZmNzY5ZjIzMjQxMDQyNGUyOGRiYTJjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC02MSw2ICs2MSw3IEBACiAj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTZXRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCkBAIC0yMDUsMTEgKzIwNiw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUoQ29kZU9yaWdpbiBvcmlnaW4sIEdQUlJl
ZyBjYWxsZWVHUFIpCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAogICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3Zlcnku
dmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAgICAgICAgY2FsbGVl
R1BSKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0LmxvYWRV
bmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBo
KCksIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSks
IGNhbGxlZUdQUik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbGVlR1BSKTsKIH0KQEAg
LTY4Niw3ICs2ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNp
bGVudFJlZ2lzdGVyU2F2ZVBsYW4mIHBsYW4pCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0
Q2VsbENvbnN0YW50OgogICAgICAgICBBU1NFUlQocGxhbi5ub2RlKCktPmNvbnN0YW50KCktPnZh
bHVlKCkuaXNDZWxsKCkpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIocGxhbi5u
b2RlKCktPmNvbnN0YW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlu
a2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgcGxhbi5u
b2RlKCktPmNvbnN0YW50KCktPnZhbHVlKCkuYXNDZWxsKCkpLCBwbGFuLmdwcigpKTsKICAgICAg
ICAgYnJlYWs7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldFRydXN0ZWRKU0NvbnN0
YW50OgpAQCAtMTE5MSwyMiArMTE4OSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
LAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVS
ZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQ
UiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihu
b2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0Jp
dHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9
CiAjZW5kaWYKIApAQCAtMTIyNyw3ICsxMjI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVy
aWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VS
ZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRz
KCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwpAQCAtMTI3NywyMiArMTI3NSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJ
QyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0
dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0
dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0
aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJ
bmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3Ms
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52
YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSks
IGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZElt
bTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgICAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHVi
SW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3Bl
cmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMy
KG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdz
LCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0KICNl
bmRpZgogCkBAIC0xMzE0LDcgKzEzMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmlj
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVn
cywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncywg
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CkBAIC0xMzUyLDEyICsxMzUwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bkJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAg
ICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZz
ZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAogICAgICAgICAg
ICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAot
ICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNh
Y2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNs
b3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CkBAIC0xNDAyLDEyICsxNDAwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbkJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsCiAgICAg
ICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7Cisg
ICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBu
dWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwKICAgICAgICAgICAgIE5l
ZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAg
ICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxw
dHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxw
dHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKICAgICB9CiAK
ICAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTQ1NiwxMiAr
MTQ1NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0ZShOb2RlKiBu
b2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6
b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVO
YW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZh
dGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNr
UmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOworICAgICAgICAg
ICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5
T3JCcmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhh
c1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlv
bkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2Vw
dGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikp
OworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZEluQnlW
YWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xNDk1LDcgKzE0OTMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogICAgICAgICBzcGVj
dWxhdGVPYmplY3Qob2JqZWN0RWRnZSwgb2JqZWN0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmpl
Y3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJlbnRTY29wZUdQ
Uiwgb2JqZWN0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNj
b3BlT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjdXJy
ZW50U2NvcGVHUFIsIG9iamVjdEdQUik7CiAgICAgICAgIC8vIE5vIGV4Y2VwdGlvbiBjaGVjayBo
ZXJlIGFzIHdlIGRpZCBub3QgaGF2ZSB0byBjYWxsIHRvT2JqZWN0KCkuCiAgICAgfSBlbHNlIHsK
ICAgICAgICAgQVNTRVJUKG9iamVjdEVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAt
MTUwMyw3ICsxNTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2Nv
cGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb2JqZWN0UmVncyA9IG9iamVjdC5q
c1ZhbHVlUmVncygpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RSZWdzKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdFJlZ3MpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KICAgICAKQEAgLTE4OTAsNyArMTg4OCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdTbGljZShOb2RlKiBub2RlKQog
CiAgICAgVk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICBhdXRvIG5vbkVtcHR5Q2FzZSA9IG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgc3RhcnRJbmRleEdQUiwgdGVtcEdQUik7
Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBqc0VtcHR5U3RyaW5nKHZtKSksIHRlbXBHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENv
bnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1w
dHlTdHJpbmcodm0pKSwgdGVtcEdQUik7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1w
KCkpOwogCiAgICAgbm9uRW1wdHlDYXNlLmxpbmsoJm1faml0KTsKQEAgLTE5MjIsMTIgKzE5MjAs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNlKE5vZGUqIG5vZGUp
CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoYmlnQ2hhcmFjdGVyLCB0
aGlzLCBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcsIHRlbXBHUFIsICZ2bSwgdGVtcEdQ
UikpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uU3RyaW5nU3Vic3RyLCB0ZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU3Ry
aW5nU3Vic3RyLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5n
R1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7CiAKICAgICBpZiAoZW5kR1BSKQotICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRp
b25TdHJpbmdTbGljZSwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmlu
Z0dQUiwgc3RhcnRHUFIsICplbmRHUFIpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCAqZW5k
R1BSKSk7CiAgICAgZWxzZQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsIFRydXN0ZWRJbW0zMihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2Us
IHRlbXBHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0
R1BSLCBUcnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7
CiAKICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwogICAgIGNlbGxSZXN1bHQodGVtcEdQUiwg
bm9kZSk7CkBAIC0xOTc0LDcgKzE5NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VG9Mb3dlckNhc2UoTm9kZSogbm9kZSkKICAgICAKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7
CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMobGVuZ3RoR1BSKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRvTG93ZXJDYXNlLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzdHJpbmdHUFIsIGluZGV4R1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvTG93ZXJDYXNlLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
dHJpbmdHUFIsIGluZGV4R1BSKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CkBA
IC0yMTkzLDEwICsyMTkxLDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50
QmxvY2soKQogICAgIH0KIAogICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgewor
ICAgICAgICAvLyBGb3IgY2F0Y2ggZW50cnkgcG9pbnQsIE9TUiBlbnRyeSBzZXRzIGEgbmV3IENv
ZGVCbG9jayBwb2ludGVyLgogICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoLShtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3Rh
Y2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7
CiAgICAgICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7Ci0gICAg
ICAgIG1faml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2Fs
bEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBtX2pp
dC5wcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxv
Y2stPmppdFR5cGUoKSkpOworICAgICAgICB9KTsKKyNlbmRpZgorI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIGlmIChtX2dyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAgICAgICAgICAg
IG1faml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVC
bG9jaywgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9qaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7
CisgICAgICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2co
VmFyaWFibGVFdmVudDo6cmVzZXQoKSk7CkBAIC0yNDc3LDcgKzI0ODcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUcmFwcyhOb2RlKiBub2RlKQogICAgICAgICBKSVRDb21w
aWxlcjo6QWJzb2x1dGVBZGRyZXNzKG1faml0LnZtKCkudHJhcHMoKS50cmFwQml0c0FkZHJlc3Mo
KSksCiAgICAgICAgIFRydXN0ZWRJbW0zMihWTVRyYXBzOjpBc3luY0V2ZW50cykpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxpbmcsIHRoaXMs
IG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFu
ZGxpbmcsIHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpKSk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKQEAgLTI1NDIs
NyArMjU1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHV0QnlW
YWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/
CiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgIChub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QpLAotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7CisgICAgICAgICAgICBOb1Jlc3VsdCwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1
ZVJlZ3MpKTsKICAgICB9CiAKICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwpAQCAtMjYxNyw3ICsyNjI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbm9kZS0+ZWNt
YU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0g
UHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5
Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCkgOgogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCA/IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QgOiBvcGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwK
LSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZh
bHVlUmVnKSk7CiAgICAgfQogCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTI2NzUsOSArMjY4NSw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbChOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3Qp
Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0
KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGly
ZWN0Tm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3Bl
cnR5UmVncywgdmFsdWVSZWdzKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0
cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Ms
IHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsTm9uU3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHBy
b3BlcnR5UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMjczMCwxMSArMjc0MCwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAg
ICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBi
YXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsK
KyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLAotICAgICAgICAgICAgICAgIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywg
Z2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgZ2VuLnN0
dWJJbmZvKCksIG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgbV9qaXQuYWRkUHV0QnlW
YWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yODI1LDcgKzI4MzUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBu
b2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgICAgICAgICAobm9kZS0+
b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJy
YXlCb3VuZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0
KSA6CiAgICAgICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAotICAgICAgICAgICAgICAg
IE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcsIHZhbHVlUmVncykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykpOwogICAg
ICAgICB9CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKQEAgLTI5MzYsNyArMjk0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbE9uU3RyaW5nKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZXN1bHRSZWdz
LnRhZ0dQUigpKTsKICNlbmRpZgogCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90
eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJl
KHZtKTsKICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBXVEY6
OmRlcGVuZGVudExvYWRMb2FkRmVuY2UoKTsKQEAgLTI5NTIsMTIgKzI5NjIsMTIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHN0ZDoKICAgICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJBbmRX
YXRjaFN0cnVjdHVyZVRyYW5zaXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0dXJlKTsKIAogICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlW
YWxTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9i
amVjdCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgb3V0T2ZCb3Vu
ZHMsIHRoaXMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIGdsb2JhbE9iamVjdCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBvcGVy
YXRpb25HZXRCeVZhbFN0cmluZ0ludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJl
ZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywg
cHJvcGVydHlSZWcpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBtX2N1cnJlbnROb2RlKTsKQEAgLTI5ODEsNyArMjk5MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVu
dHlwZWQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcHJSZWdzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVk
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3ByUmVncyk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtMzAwMSw3ICszMDExLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29kZShOb2RlKiBub2RlKQogICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmluZ3NSZWcsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBz
Y3JhdGNoUmVnKSk7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvcGVydHlSZWcpKTsKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdGcm9t
Q2hhckNvZGUsIHNjcmF0Y2hSZWcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm9w
ZXJ0eVJlZykpOwogICAgIGNlbGxSZXN1bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CiB9
CiAKQEAgLTM5MjUsOSArMzkzNSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbEZvckludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICAgICAg
ICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFs
RGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QpIDoKICAgICAgICAgICAgICAg
ICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
Tm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QpLAogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZUdQUikpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVH
UFIpKTsKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
UmVnKSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJl
Z3ModmFsdWVUYWdHUFIsIHZhbHVlR1BSKSkpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVn
KSwgSlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVUYWdHUFIsIHZhbHVlR1BSKSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC00MDM1LDcgKzQw
NDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRo
U3RyaW5nKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJl
Z2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZywgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcsIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICBp
ZiAoY2FuVXNlRmx1c2ggPT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQwNjIsNyArNDA3
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbEZvck9iamVjdFdpdGhT
eW1ib2woTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKHJlc3VsdFJlZ3MpOwogICAgIGVsc2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbCwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAgIGlm
IChjYW5Vc2VGbHVzaCA9PSBDYW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtNDEzMCwxMiArNDE0
MCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChO
b2RlKiBub2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgICAgICBpZiAoSklUQ29kZTo6dXNl
RGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElD
Q2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4p
KSwgc3R1YkluZm9HUFIsCisgICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBzdHViSW5mb0dQUiwKICAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIHJlc3VsdC5yZWdz
KCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBiYXNl
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICB9
OwogCkBAIC00MjE1LDcgKzQyMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0
QnlWYWxGb3JDZWxsV2l0aFN0cmluZyhOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJl
Y3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25Q
dXRCeVZhbENlbGxTdHJpbmdTdHJpY3QpIDoKICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1
dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0
IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAg
ICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNS
ZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7
CkBAIC00MjM4LDcgKzQyNDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JDZWxsV2l0aFN5bWJvbChOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgp
LmlzU3RyaWN0KCkKICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3Qg
PyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbENlbGxTeW1ib2xTdHJpY3QpCiAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5
VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdz
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBA
IC00MjU2LDcgKzQyNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxX
aXRoVGhpcyhOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJl
Z3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bFdpdGhUaGlzLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
Z3MsIHRoaXNWYWx1ZVJlZ3MsIHN1YnNjcmlwdFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VSZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKQEAgLTQyODIsNyArNDI5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRQcml2YXRlTmFtZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIGF1dG8gb3BlcmF0aW9uID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVm
aW5lKCkgPyBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVy
YXRpb25QdXRCeVZhbFNldFByaXZhdGVGaWVsZEdlbmVyaWM7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb24sIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDMyNiwxMSArNDMz
NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSog
bm9kZSkKICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbiwKLSAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9w
ZXJ0eUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIG51bGxwdHIpOworICAgICAgICAgICAg
Tm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBz
dHViSW5mb0dQUiwgbnVsbHB0cik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKLSAg
ICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVl
UmVncywgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBnZW4uc3R1YkluZm8o
KSwgbnVsbHB0cik7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2VuLCBzbG93UGF0
aC5nZXQoKSk7CkBAIC00NDAwLDExICs0NDEwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDaGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1c2VE
YXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUND
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRP
cHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25DaGVja1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAgICAgIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShicmFuZEdQUikpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CiAg
ICAgfQogCiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0
KCkpOwpAQCAtNDQ0OCwxMSArNDQ1OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
U2V0UHJpdmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhK
SVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwg
Tm9SZXN1bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJh
bmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRP
cHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVC
cmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTQ0ODgsNyArNDQ5OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNl
SW50R2VuZXJpYywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVl
UmVncywgcmFkaXhHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJz
ZUludEdlbmVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2
YWx1ZVJlZ3MsIHJhZGl4R1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNDUwMSw3ICs0NTExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBK
U1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QYXJzZUludFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHZhbHVlR1BSLCByYWRpeEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUGFyc2VJbnRTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZUdQUiwgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAg
ICByZXR1cm47CkBAIC00NTE0LDcgKzQ1MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUGFyc2VJbnQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblBhcnNlSW50Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblBhcnNlSW50Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICBy
ZXR1cm47CkBAIC00NTI3LDcgKzQ1MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGFyc2VJbnQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVS
ZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJ
bnRTdHJpbmdOb1JhZGl4LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
dmFsdWVHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1Jh
ZGl4LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKIH0KQEAgLTQ1NTAsMTEgKzQ1NjAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgLy8gc2luY2Ug
aXQgcmVsaWVzIG9uIE9TUiBpbmZvcm1hdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDgzMgogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmlzQ2Vs
bENvbnN0YW50KCkgfHwgZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5zdGFuY2VW
YWx1ZU5vZGUtPmFzQ2VsbCgpKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFs
dWVSZWdzID0gaGFzSW5zdGFuY2VWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5s
b2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCBUcnVzdGVkSW1t
UHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVS
ZWdzLmdwcigpLCByZXN1bHRHUFIpKTsKICNlbHNlCiAgICAgICAgIG5vdERlZmF1bHQuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBu
b3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBoYXNJbnN0YW5jZVZhbHVlUmVncy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+
Y2VsbE9wZXJhbmQoKSkpKTsKKyAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9h
ZEdQUigpLCByZXN1bHRHUFIpKTsKICNlbmRpZgogICAgIH0KIApAQCAtNDU4OCwxMCArNDU5OSwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUq
IG5vZGUsIEpTVmFsdWVSZWdzIHZhbHVlUmVncwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0
aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3Rv
dHlwZVJlZ3MpOworICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwg
c3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJl
U3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5m
b0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAgICBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFs
dWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFu
Y2VPZihnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTQ3MDEsNyArNDcxMiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdChOb2RlKiBub2RlKQogICAgICAgICBKU1Zh
bHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb3BlcmFuZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0
Tm90SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wZXJhbmRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogCkBAIC00NzE2LDcgKzQ3MjcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcGVyYW5kUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZUJpdE5vdCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wZXJhbmRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTQ3NTYsNyArNDc2Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rp
b24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmln
aHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdo
dFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00ODIxLDcgKzQ4MzIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAg
ICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3Mp
OwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdz
KTsKKyAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAK
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKQEAgLTQ4ODQsMTMgKzQ4OTUsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlQml0d2lzZU9wKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAg
ICBjYXNlIFZhbHVlQml0QW5kOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRBbmRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRBbmRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
VmFsdWVCaXRYb3I6Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhl
YXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhl
YXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZUJp
dE9yOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ5NzQsNyArNDk4NSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSog
bm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0
aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJl
Z3MsIHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVu
Y3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTA0MCw3ICs1MDUxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC5tb3ZlVmFsdWUocmlnaHRDaGlsZC0+YXNKU1ZhbHVl
KCksIHJpZ2h0UmVncyk7CiAgICAgfQogCi0gICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1Bh
dGhGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRS
ZWdzLCByaWdodFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rp
b24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywg
cmlnaHRSZWdzKTsKIAogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwpAQCAtNTA2OSw3ICs1MDgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVZhbHVlTFNoaWZ0T3AoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Qml0TFNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25C
aXRMU2hpZnRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1
cm47CkBAIC01MDk2LDcgKzUxMDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVCaXRSU2hpZnQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwpAQCAtNTE4NCw3ICs1MTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
QWRkKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKICAgICAgICAgLy8gRklYTUU6IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCi0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CkBAIC01MjA1LDcgKzUyMTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpA
QCAtNTIyMSw3ICs1MjMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRk
KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC01
Mjg0LDcgKzUyOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9k
ZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZh
bHVlU3ViLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRS
ZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTMwNSw3ICs1MzE2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVS
ZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyBy
ZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN1YkhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3Vi
SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTQxMiw5ICs1NDIzLDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKGFkZElDR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAg
ICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElD
KSk7CisgICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9
IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0
ZWRJbW1QdHIobWF0aElDKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRk
SUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRj
aGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5u
ZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJh
dGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5j
dGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVm
dFJlZ3MsIGlubmVyUmlnaHRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxh
bnMpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTU0NDMsNyArNTQ1
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklU
QmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgIH0KIAogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlv
biwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdo
dFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJl
Z3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNTQ3Niw3
ICs1NDg3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZDdXN0b20o
Tm9kZSogbm9kZSkKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQu
anVtcCgpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNl
LCB0aGlzLCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJl
Z3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRo
aXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHZhbHVlUmVncywgY29uc3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVn
cykpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpA
QCAtNTU3NSw5ICs1NTg2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvT2JqZWN0
T3JDYWxsT2JqZWN0Q29uc3RydWN0b3IoTm9kZSogbm9kZSkKICAgICAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIGVycm9yTWVzc2FnZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCkgIT0gVUlOVDMyX01BWCkKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGlk
ZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmpl
Y3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgZXJy
b3JNZXNzYWdlKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGVycm9yTWVzc2FnZSkpOwogICAgIH0gZWxz
ZQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxP
YmplY3RDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCB2YWx1ZVJlZ3MpKTsKIAog
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTU3MjEsNyArNTczMiw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEFicyhOb2RlKiBub2RlKQogICAgICAg
ICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhBYnMsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkFyaXRoQWJzLCByZXN1bHQuZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cDFSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgZG91Ymxl
UmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTc0NSw3ICs1
NzU2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQ2x6MzIoTm9kZSogbm9k
ZSkKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRSZWcg
PSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkFyaXRoQ2x6MzIsIHJlc3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhDbHozMiwgcmVz
dWx0UmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRSZWcsIG5v
ZGUpOwogfQpAQCAtNTc2OSw3ICs1NzgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFyaXRoRG91YmxlVW5hcnlPcChOb2RlKiBub2RlLCBkb3VibGUgKCpkb3VibGVGdW5jdGkKICAg
ICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uLCByZXN1bHQuZnByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFS
ZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTU4ODYs
NyArNTg5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBu
b2RlKQogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGF1dG8gb3BlcmF0
aW9uID0gbm9kZS0+b3AoKSA9PSBJbmMgPyBvcGVyYXRpb25JbmMgOiBvcGVyYXRpb25EZWM7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
IH0KQEAgLTYwMjUsOSArNjAzNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRo
SUMoTm9kZSogbm9kZSwgSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAg
ICAgICBzaWxlbnRTcGlsbChzYXZlUGxhbnMpOwogCiAgICAgICAgICAgICBpZiAoaWNHZW5lcmF0
aW9uU3RhdGUtPnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKLSAgICAgICAgICAgICAgICBpY0dlbmVy
YXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rp
b24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MsIFRy
dXN0ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUt
PnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRS
ZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzLCBUcnVzdGVkSW1t
UHRyKG1hdGhJQykpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGljR2VuZXJh
dGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5j
dGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7
CisgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChz
YXZlUGxhbnMpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTYwNDgs
NyArNjA1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9k
ZSwgSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgIH0pOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgY2hpbGRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVu
Y3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJl
Z3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNjExMyw3
ICs2MTI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5v
ZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwpAQCAtNjEzMSw3ICs2MTQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVl
TXVsKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZU11bCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVl
TXVsLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3Ms
IHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMTMsNyArNjMyNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRpdkhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMzEsNyAr
NjM0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2Rl
KQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRS
ZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CkBAIC02NDE1LDcgKzY0MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVl
KHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblZhbHVlRGl2LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTY1NzksNyArNjU5MCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEZSb3VuZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVS
ZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25B
cml0aEZSb3VuZCwgcmVzdWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0LmZw
cigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsK
IH0KQEAgLTY2MDQsNyArNjYxNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZU1vZChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKQEAgLTY2MjEsNyArNjYzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZU1vZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
SlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJl
Z3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25WYWx1ZU1vZCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MsIG9wMlJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CiB9CkBAIC03MDE4LDcgKzcwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhSb3VuZGluZyhOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+b3Ao
KSA9PSBBcml0aFRydW5jKTsKICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uQXJpdGhUcnVu
YzsKICAgICB9Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
dW1lbnRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC03MDUxLDcgKzcwNjIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhTcXJ0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mg
b3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
RlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRo
U3FydCwgcmVzdWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CkBAIC03
MTc5LDcgKzcxOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9k
ZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Qb3dIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CkBAIC03MTk4LDcgKzcyMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVQb3coTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVS
ZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVQ
b3csIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmln
aHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlUG93LCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CkBAIC03OTM1LDcgKzc5NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaW5nRXF1YWxpdHkoCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNl
LCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dD
YXNlLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKICAgICAKICAgICBi
bGVzc2VkQm9vbGVhblJlc3VsdChsZWZ0VGVtcEdQUiwgbm9kZSk7CiB9CkBAIC04MDg1LDcgKzgw
OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiBu
b2RlLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbAogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24o
Y29tcGFyZUZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihjb21wYXJlRnVuY3Rpb24sIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BS
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtODE4Niw3ICs4MTk3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVNhbWVWYWx1ZShOb2RlKiBub2RlKQogCiAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtODIwMyw3ICs4MjE0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvQm9vbGVhblN0cmluZyhOb2RlKiBub2RlLCBib29sIGludmVy
dCkKICAgICBHUFJUZW1wb3JhcnkgZXEodGhpcyk7CiAgICAgR1BSUmVnIGVxR1BSID0gZXEuZ3By
KCk7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBlcUdQUik7CisgICAgbV9qaXQubG9hZFVubGlu
a2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwg
anNFbXB0eVN0cmluZyh2bSgpKSksIGVxR1BSKTsKICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVy
dCA/IENDYWxsSGVscGVyczo6RXF1YWwgOiBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzdHJHUFIs
IGVxR1BSLCBlcUdQUik7CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChlcUdQUiwgbm9kZSk7
CiB9CkBAIC04MjIwLDcgKzgyMzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9C
b29sZWFuU3RyaW5nT3JPdGhlcihOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICBERkdfVFlQ
RV9DSEVDSygKICAgICAgICAgdmFsdWVSZWdzLCBub2RlLT5jaGlsZDEoKSwgKH5TcGVjQ2VsbENo
ZWNrKSB8IFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaElmTm90U3RyaW5nKGNlbGxHUFIpKTsKIAot
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
anNFbXB0eVN0cmluZyh2bSgpKSksIHRlbXBHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENv
bnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1w
dHlTdHJpbmcodm0oKSkpLCB0ZW1wR1BSKTsKICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVydCA/
IENDYWxsSGVscGVyczo6RXF1YWwgOiBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjZWxsR1BSLCB0
ZW1wR1BSLCB0ZW1wR1BSKTsKICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAKQEAgLTgy
NDEsNyArODI1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdCcmFuY2goRWRn
ZSBub2RlVXNlLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG9jCiAKICAgICBzcGVjdWxhdGVT
dHJpbmcobm9kZVVzZSwgc3RyR1BSKTsKIAotICAgIGJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVx
dWFsLCBzdHJHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpz
RW1wdHlTdHJpbmcodm0oKSkpLCBub3RUYWtlbik7CisgICAgYnJhbmNoVW5saW5rZWRDb25zdGFu
dChDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzdHJHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBub3RUYWtlbik7CiAgICAg
anVtcCh0YWtlbik7CiAKICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTgyNTgsNyAr
ODI2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdPck90aGVyQnJhbmNoKEVk
Z2Ugbm9kZVVzZSwgQmFzaWNCbG9jayogdGFrZW4sIEJhCiAgICAgR1BSUmVnIGNlbGxHUFIgPSB2
YWx1ZVJlZ3MucGF5bG9hZEdQUigpOwogICAgIERGR19UWVBFX0NIRUNLKHZhbHVlUmVncywgbm9k
ZVVzZSwgKH5TcGVjQ2VsbENoZWNrKSB8IFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaElmTm90U3Ry
aW5nKGNlbGxHUFIpKTsKIAotICAgIGJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBjZWxs
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3Ry
aW5nKHZtKCkpKSwgbm90VGFrZW4pOworICAgIGJyYW5jaFVubGlua2VkQ29uc3RhbnQoQ0NhbGxI
ZWxwZXJzOjpFcXVhbCwgY2VsbEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9q
aXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyh2bSgpKSksIG5vdFRha2VuKTsKICAgICBqdW1wKHRh
a2VuLCBGb3JjZUp1bXApOwogCiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC04MjcyLDcg
KzgyODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcihOb2RlKiBub2RlKQogewogICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAg
IEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobm9kZS0+c3RvcmFnZVBvaW50ZXIoKSksIHN0b3JhZ2VHUFIpOworICAgIG1faml0
LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50Ojpub25D
ZWxsUHRyKG1fZ3JhcGgsIG5vZGUtPnN0b3JhZ2VQb2ludGVyKCkpLCBzdG9yYWdlR1BSKTsKICAg
ICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VHUFIsIG5vZGUpOwogfQogCkBAIC04MzI1LDcgKzgzMzYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZShOb2RlKiBub2RlKQogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJ
bXBsKHN0b3JhZ2VSZWcpLAotICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvblJlc29sdmVS
b3BlLCBzdG9yYWdlUmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZykpOwor
ICAgICAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvblJlc29sdmVSb3BlLCBzdG9yYWdlUmVnLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZykpOwogCiAgICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgU3RyaW5nSW1wbDo6
ZGF0YU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7CiAgICAgICAgIGJyZWFrOwpAQCAtODQzNiw3ICs4
NDQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25EaXJlY3RBcmd1
bWVudHMoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGEKICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgaXNPdXRP
ZkJvdW5kcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAg
ICAgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgZXh0cmFjdFJlc3VsdChy
ZXN1bHRSZWdzKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3Bl
cnR5UmVnKSk7CiAgICAgfQogICAgIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CkBAIC04NTQyLDggKzg1NTMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
R2xvYmFsVGhpcyhOb2RlKiBub2RlKQogewogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBhdXRvKiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwotICAgIG1faml0LmxvYWRQdHIoZ2xvYmFsT2JqZWN0LT5hZGRyZXNzT2ZHbG9iYWxUaGlz
KCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0dsb2JhbE9iamVjdDo6b2Zmc2V0
T2ZHbG9iYWxUaGlzKCkpLCByZXN1bHRHUFIpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KIApAQCAtODcwNSw3ICs4NzE2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3QK
ICAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2Ny
YXRjaDJHUFIsIHNsb3dQYXRoLCBzaXplKTsKICAgICAKICAgICBtX2ppdC5zdG9yZVB0cihzY29w
ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRP
ZlNjb3BlQ2hhaW4oKSkpOwotICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1faml0LmdyYXBoKCksIGV4ZWN1dGFibGUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSkpOwor
ICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1faml0LmdyYXBoKCksIGV4ZWN1dGFibGUpLCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQu
c3RvcmVQdHIoc2NyYXRjaDFHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNG
dW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSk7CiAgICAgbV9qaXQubXV0
YXRvckZlbmNlKHZtKCkpOwogfQogCkBAIC04ODAwLDcgKzg4MTIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlU2V0RnVuY3Rpb25OYW1lKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJl
Z3MgbmFtZVZhbHVlUmVncyA9IG5hbWVWYWx1ZS5qc1ZhbHVlUmVncygpOwogCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmNHUFIsIG5hbWVWYWx1ZVJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgZnVuY0dQUiwgbmFtZVZhbHVlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtODgxNyw3ICs4ODI5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhcmFyZ3NMZW5ndGgoTm9kZSogbm9kZSkKICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgIHVubG9jayhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRzUmVncywg
ZGF0YS0+b2Zmc2V0KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVPZlZhcmFyZ3Ms
IEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJndW1lbnRzUmVncywgZGF0YS0+b2Zmc2V0KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogCiAgICAgbG9jayhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CkBAIC04ODU0LDcgKzg4NjYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9hZFZhcmFyZ3MoTm9kZSogbm9kZSkK
IAogICAgIG1faml0LnN0b3JlMzIoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIEpJVENvbXBp
bGVyOjpwYXlsb2FkRm9yKGRhdGEtPm1hY2hpbmVDb3VudCkpOwogCi0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Mb2FkVmFyYXJncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGRhdGEt
Pm1hY2hpbmVTdGFydC5vZmZzZXQoKSwgYXJndW1lbnRzUmVncywgZGF0YS0+b2Zmc2V0LCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgZGF0YS0+bWFuZGF0b3J5TWluaW11bSk7CisgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Mb2FkVmFyYXJncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGRhdGEtPm1hY2hpbmVTdGFydC5vZmZzZXQoKSwgYXJndW1lbnRzUmVncywgZGF0YS0+
b2Zmc2V0LCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgZGF0YS0+bWFuZGF0b3J5TWluaW11
bSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpA
QCAtODk4NSwxMCArODk5Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVB
Y3RpdmF0aW9uKE5vZGUqIG5vZGUpCiAgICAgLy8gRG9uJ3QgbmVlZCBhIG1lbW9yeSBiYXJyaWVy
cyBzaW5jZSB3ZSBqdXN0IGZhc3QtY3JlYXRlZCB0aGUgYWN0aXZhdGlvbiwgc28gdGhlCiAgICAg
Ly8gYWN0aXZhdGlvbiBtdXN0IGJlIHlvdW5nLgogICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BS
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgp
KSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2Vs
bE9wZXJhbmQoKSksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNM
ZXhpY2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mU3ltYm9sVGFibGUoKSkpOwotICAgICAgICAKKyAg
ICBtX2ppdC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBKU0xleGljYWxFbnZpcm9ubWVudDo6b2Zmc2V0T2ZTeW1ib2xUYWJs
ZSgpKSk7CisKICAgICAvLyBNdXN0IGluaXRpYWxpemUgYWxsIG1lbWJlcnMgdG8gdW5kZWZpbmVk
IG9yIHRoZSBURFogZW1wdHkgdmFsdWUuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRh
YmxlLT5zY29wZVNpemUoKTsgKytpKSB7CiAgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVl
KApAQCAtOTExNSwxMiArOTEyNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVh
dGVEaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6YWRkcmVzc0ZvcigKICAgICAgICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5jYWxs
ZWVSZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCiAgICAgICAgICAgICAgICAgc2NyYXRjaDFH
UFIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcigKLSAgICAgICAgICAgICAgICAgICAg
bV9qaXQuZ3JhcGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgp
LmFzQ2VsbCgpKSwKLSAgICAgICAgICAgICAgICBzY3JhdGNoMUdQUik7Ci0gICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBpbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLCBzY3JhdGNoMUdQUik7CiAgICAg
fSBlbHNlCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoQ2Fs
bEZyYW1lU2xvdDo6Y2FsbGVlKSwgc2NyYXRjaDFHUFIpOwogCkBAIC05MjE4LDcgKzkyMjQsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlU2NvcGVkQXJndW1lbnRzKE5vZGUq
IG5vZGUpCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBmbHVzaFJl
Z2lzdGVycygpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOwogICAgIAogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJndW1lbnRzIG91cnNlbHZlcywg
YmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4KICAgICAv
LyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVudCByZWdpc3RlcnMuIFRoaXMg
YWxzbyBtZWFucyB0aGF0IHdlIGRvbid0IGhhdmUgdG8KQEAgLTkyMzUsMTEgKzkyNDEsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhOb2RlKiBu
b2RlKQogICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBl
bWl0R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsK
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0gKEdQUlJlZyBkZXN0R1BS
KSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdC0+c2NvcGVkQXJndW1l
bnRzU3RydWN0dXJlKCkpLAotICAgICAgICAgICAgICAgIGRlc3RHUFIpOworICAgICAgICAgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0LT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSks
IGRlc3RHUFIpOworICAgICAgICB9KTsKKyAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAorICAgICAg
ICAwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5r
ZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZGVzdEdQUik7
CiAgICAgICAgIH0pOwotICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcgZGVz
dEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGds
b2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKICAgICAKICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwpAQCAtOTI1Myw3ICs5MjYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICAv
LyBXZSBzZXQgdXAgdGhlIGFyZ3VtZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ugd2UgaGF2ZSB0aGUg
d2hvbGUgcmVnaXN0ZXIgZmlsZSBhbmQgd2UgY2FuCiAgICAgLy8gc2V0IHRoZW0gdXAgZGlyZWN0
bHkgaW50byB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgpAQCAtOTI2NCwxMiArOTI3MSwxMiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqIG5v
ZGUpCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVt
aXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwog
ICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIp
IHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCksIGdsb2Jh
bE9iamVjdC0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAotICAgICAgICAgICAgICAgIGRl
c3RHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0LT5jbG9uZWRB
cmd1bWVudHNTdHJ1Y3R1cmUoKSksIGRlc3RHUFIpOworICAgICAgICB9KTsKKyAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50KAorICAgICAgICAwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2ppdC5ncmFwaCgpLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgZGVzdEdQUik7CiAgICAgICAgIH0pOwotICAgIG1faml0LnNldHVwQXJndW1l
bnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKICAgICAKICAg
ICBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVz
dWx0R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtOTI4MywxNSArOTI5MCwx
NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5
KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBm
bHVzaFJlZ2lzdGVycygpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotCiAgICAgLy8gV2Ug
c2V0IHVwIHRoZSBhcmd1bWVudHMgb3Vyc2VsdmVzLCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdob2xl
IHJlZ2lzdGVyIGZpbGUgYW5kIHdlIGNhbgogICAgIC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5IGlu
dG8gdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KIAogICAgIC8vIEFyZ3VtZW50czogMDpKU0dsb2Jh
bE9iamVjdCosIDE6c3RhcnQsIDM6bGVuZ3RoCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBb
Jl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRMZW5ndGgobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgxLCBbJl0gKEdQUlJlZyBk
ZXN0R1BSKSB7IGVtaXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVz
dEdQUik7IH0pOwotICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQ
UikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIGRlc3RHUFIpOyB9KTsKKyAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAorICAgICAg
ICAwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5r
ZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZGVzdEdQUik7
CisgICAgICAgIH0pOwogCiAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVB
cmd1bWVudHNCdXR0ZXJmbHksIHJlc3VsdEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKQEAgLTkzNjAsNyArOTM2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVh
dGVSZXN0KE5vZGUqIG5vZGUpCiAKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNyZWF0ZVJlc3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50c1N0YXJ0R1BSLCBJbW0zMihub2RlLT5udW1iZXJPZkFyZ3VtZW50c1Rv
U2tpcCgpKSwgYXJyYXlMZW5ndGhHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3Jl
YXRlUmVzdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1l
bnRzU3RhcnRHUFIsIEltbTMyKG5vZGUtPm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkpLCBhcnJh
eUxlbmd0aEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTk0NTQsNyArOTQ2Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGRvbmUuYXBwZW5k
KG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uU3ByZWFkRmFz
dEFycmF5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCkp
OworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRo
aXMsIG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYXJndW1lbnQpKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
ICAgICAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZtKCkpOwpAQCAtOTQ2NCw3ICs5NDcyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBub2RlKQogCiAgICAgICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TcHJl
YWRGYXN0QXJyYXksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3Vt
ZW50KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TcHJlYWRGYXN0QXJyYXksIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50KTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCkBAIC05NDczLDcgKzk0ODEsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVh
ZEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TcHJlYWRHZW5lcmljLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCk7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICB9CkBAIC05NjEwLDcgKzk2MTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3QXJyYXkoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogCiAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0
KSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUo
KSkpLAorICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBtX2ppdC5ncmFwaCgpLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSksCiAgICAgICAgIHN0YXRp
Y19jYXN0PHZvaWQqPihidWZmZXIpLCBzaXplX3Qobm9kZS0+bnVtQ2hpbGRyZW4oKSkpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTk3NjksNyArOTc3Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQoTm9kZSogbm9kZSkKICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U3ByZWFkU2xvdywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBnbG9iYWxPYmplY3QpLCBidWZmZXIsIG5vZGUtPm51bUNoaWxkcmVuKCkpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU3ByZWFkU2xvdywgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBidWZmZXIs
IG5vZGUtPm51bUNoaWxkcmVuKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC05OTQ5LDcgKzk5NTcsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOb2RlKiBub2RlKQogICAgICAgICB9
CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxv
Y2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4o
Ci0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2Jq
ZWN0KSwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CisgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgdGVt
cFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSKSk7CiAgICAgfQogCiAgICAgR1BSVGVt
cG9yYXJ5IHRlbXA0KHRoaXMpOwpAQCAtMTAxNjgsNyArMTAxNzYsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhP
ZlN0cmluZywgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQ
Uiwgc2VhcmNoRWxlbWVudEdQUiwgaW5kZXhHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkFycmF5SW5kZXhPZlN0cmluZywgbGVuZ3RoR1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudEdQUiwgaW5kZXhHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIHN0cmljdEludDMyUmVzdWx0
KGxlbmd0aEdQUiwgbm9kZSk7CkBAIC0xMDE4MywxMSArMTAxOTEsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFycmF5SW5kZXhPZihOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewog
ICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlRG91YmxlLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hFbGVtZW50UmVncywgaW5kZXhHUFIpOwor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZWYWx1ZURvdWJs
ZSwgbGVuZ3RoR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwg
c2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKLSAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVJbnQzMk9y
Q29udGlndW91cywgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RvcmFn
ZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVJbnQzMk9yQ29udGlndW91cywgbGVuZ3Ro
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxl
bWVudFJlZ3MsIGluZGV4R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwMjU2LDcg
KzEwMjY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBu
b2RlKQogICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxlbmd0aEdQUiwgcmVzdWx0
UmVncyk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBiYXNlR1BSKSk7
CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25B
cnJheVB1c2gsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZ3MsIGJhc2VHUFIpKTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMzAyLDcgKzEwMzEwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogCiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PEVu
Y29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOwogCi0gICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9w
ZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkp
OworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVtcCgp
LCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVs
ZW1lbnRDb3VudCkpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBzdG9yYWdlLnVz
ZSgpOwpAQCAtMTAzMjcsNyArMTAzMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihzdG9yYWdl
TGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25BcnJheVB1c2hEb3VibGUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZUZQUiwgYmFzZUdQUikpOworICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93
UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlLCByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVGUFIsIGJhc2VHUFIpKTsKIAogICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTEwMzcxLDcgKzEwMzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5
UHVzaChOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRo
ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBU
cnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+
ZGF0YUJ1ZmZlcigpKSkpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZU11bHRpcGxl
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVy
R1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOworICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1
c2hEb3VibGVNdWx0aXBsZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKIAog
ICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBzdG9yYWdlLnVzZSgpOwpAQCAtMTA0MDQsNyAr
MTA0MTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihzdG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRS
ZWdzKTsKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGJhc2VHUFIpKTsK
KyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFy
cmF5UHVzaCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVl
UmVncywgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0NDgsNyArMTA0NTYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PEVuY29k
ZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOwogCiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAo
KSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVt
ZW50Q291bnQpKSk7CisgICAgICAgICAgICBzbG93UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlz
LCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRD
b3VudCkpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBzdG9yYWdlLnVzZSgpOwpA
QCAtMTA1MDMsOCArMTA1MTEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNPYmpl
Y3QoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZklzT2Jq
ZWN0KE5vZGUqIG5vZGUpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0xMDUz
Niw3ICsxMDU0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2ZJc09iamVj
dChOb2RlKiBub2RlKQogICAgIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uVHlwZU9m
SXNPYmplY3QsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgc2xvd1BhdGgs
IHRoaXMsIG9wZXJhdGlvblR5cGVPZklzT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgdmFsdWVSZWdzLnBheWxv
YWRHUFIoKSkpOwogICAgIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTA1NDYsOCArMTA1
NTIsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mSXNPYmplY3QoTm9kZSog
bm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ2FsbGFibGUoTm9kZSogbm9k
ZSwgU19KSVRPcGVyYXRpb25fR0Mgc2xvd1BhdGhPcGVyYXRpb24pCiB7Ci0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgCiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFs
dWVSZWdzKCk7CiAgICAgCkBAIC0xMDU3Myw3ICsxMDU3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVJc0NhbGxhYmxlKE5vZGUqIG5vZGUsIFNfSklUT3BlcmF0aW9uX0dDIHNsb3dQ
YXRoT3BlCiAgICAgCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRo
Q2FsbCgKLSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBzbG93UGF0aE9wZXJhdGlvbiwgcmVz
dWx0R1BSLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgc2xvd1Bh
dGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9q
aXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksCiAgICAgICAgICAgICB2YWx1ZVJlZ3MucGF5bG9hZEdQUigpKSk7CiAgICAgCiAg
ICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xMDU4OSwxNCArMTA1OTMsMTIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUlzQ29uc3RydWN0b3IoTm9kZSogbm9kZSkKICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSXNDb25zdHJ1Y3RvciwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbklzQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlw
ZU9mKE5vZGUqIG5vZGUpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEpT
VmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgCkBAIC0xMDYw
OCw3ICsxMDYxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2YoTm9kZSog
bm9kZSkKICAgICBtX2ppdC5lbWl0VHlwZU9mKAogICAgICAgICB2YWx1ZVJlZ3MsIHJlc3VsdEdQ
UiwKICAgICAgICAgWyZdIChUeXBlb2ZUeXBlIHR5cGUsIGJvb2wgZmFsbHNUaHJvdWdoKSB7Ci0g
ICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIHZtKCkuc21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1bHRHUFIpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgdm0oKS5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0
eXBlKSksIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBpZiAoIWZhbGxzVGhyb3VnaCkKICAgICAg
ICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9LApAQCAtMTA2
MTksNyArMTA2MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mKE5vZGUq
IG5vZGUpCiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblR5cGVPZk9iamVjdCwgcmVz
dWx0R1BSLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uVHlwZU9mT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLAogICAgICAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSkpOwogICAg
IAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEwNjY4LDcgKzEwNjcwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSXNDb25zdGFudChOb2RlKiBub2Rl
KQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkgewogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDb25zdGFudFZhbHVlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChjZWxsLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaFdlYWtQ
dHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBub2RlLT5jZWxsT3BlcmFuZCgp
LT5jZWxsKCkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDb25zdGFudFZhbHVlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1f
aml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdw
cigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3Bl
cmFuZCgpLT5jZWxsKCkpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKCFub2RlLT5j
b25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpIHx8ICFub2RlLT5jb25zdGFudCgpLT52YWx1ZSgp
KTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CkBAIC0xMDkzOSwxMyArMTA5NDEsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNh
bGxET00oTm9kZSogbm9kZSkKICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCArIDE7CiAgICAgc3dpdGNoIChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcykgewogICAgIGNhc2UgMToKLSAgICAgICAgY2FsbE9wZXJhdGlvbihy
ZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJh
Y3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBd
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0dQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSAyOgotICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRp
b25fR1BQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdLCByZWdzWzFdKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUD4oZnVuY3Rpb24uZ2V0
KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgcmVnc1swXSwgcmVnc1sxXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUFA+
KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOworICAgICAgICBjYWxs
T3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fR1BQUD4oZnVuY3Rpb24u
Z2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVnc1syXSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDk2
OSw5ICsxMDk3MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NR2V0dGVy
KE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZUpJVENhZ2UoKSkKLSAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpf
SklUT3BlcmF0aW9uX0dKSVA+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVy
RGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyKSwgZ2V0dGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
ICAgICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Sl9KSVRPcGVyYXRpb25fR0pJUD4oSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBpZGVudGlmaWVyVUlEKG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJO
dW1iZXIpLCBnZXR0ZXIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKST4oVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVu
dGlmaWVyVUlEKG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpKTsK
KyAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKST4oSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBpZGVudGlmaWVyVUlEKG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJO
dW1iZXIpKTsKIAogICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgJnZtKCkudG9wQ2FsbEZyYW1lKTsKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9y
aWdpbihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtMTExMTIsMTAgKzExMTE0
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5vZGUqCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VG9TdHJpbmcsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENh
bGxTdHJpbmdDb25zdHJ1Y3Rvcik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxT
dHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3AxUmVncyk7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTExNDIsMTIgKzExMTQ0
LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5vZGUqCiAgICAgICAgICAgICBzbG93UGF0aDIubGlu
aygmbV9qaXQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5n
KQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBT
dHJpbmdWYWx1ZU9mKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdW
YWx1ZU9mLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAg
ICAgICAgfQogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBpZiAoZG9u
ZS5pc1NldCgpKQpAQCAtMTEyMTgsMTAgKzExMjIwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5v
ZGUqCiAgICAgICAgICAgICBuZWVkQ2FsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG5vZGUtPm9wKCkgPT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblRvU3RyaW5nT25DZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBvcDFHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0
cmluZ09uQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBD
YWxsU3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25DYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMUdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3AxR1BSKTsKICAgICAgICAgfQogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQpAQCAtMTEyNzQsNyArMTEyNzYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBu
b2RlKQogICAgIGNvbnRpbnVhdGlvbi5saW5rKCZtX2ppdCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkp
KTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkZ1bmN0aW9uVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGZ1bmN0aW9uLmdwcigpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRnVuY3Rpb25Ub1N0cmlu
ZywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZnVuY3Rpb24u
Z3ByKCkpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KQEAgLTEx
Mjg4LDcgKzExMjkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3Ry
aW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiBub2RlLCBpbnQKIHsKICAgICBhdXRvIGNh
bGxUb1N0cmluZyA9IFsmXSAoYXV0byBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRHUFIsIGF1dG8g
dmFsdWVSZWcpIHsKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlUmVnLCBUcnVzdGVkSW1tMzIocmFkaXgpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVn
LCBUcnVzdGVkSW1tMzIocmFkaXgpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH07CkBAIC0xMTMzMyw3
ICsxMTMzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dp
dGhSYWRpeChOb2RlKiBub2RlKQogCiAgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8g
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnLCBHUFJSZWcgcmFkaXhH
UFIpIHsKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVn
LCByYWRpeEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgcmFkaXhHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgfTsKQEAgLTExNDMxLDcgKzExNDMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld1N5bWJvbChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTmV3U3ltYm9sV2l0aFN0cmluZ0Rlc2NyaXB0aW9uLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSKTsKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMTQ0Miw3ICsxMTQ0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdTeW1ib2woTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0
aERlc2NyaXB0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1
dFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0
aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3Mp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogfQpAQCAtMTE1NjUsNyArMTE1NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0TmV3VHlwZWRBcnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5
VAogICAgIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5
cGVkQXJyYXlUeXBlKSwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RydWN0dXJlLCBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3Rv
cmFnZUdQUikpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTE1
OTAsMTMgKzExNTkyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdSZWdleHAo
Tm9kZSogbm9kZSkKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7
CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8UmVnRXhwT2JqZWN0PihyZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIs
IHNsb3dQYXRoKTsKIAotICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRy
KG5vZGUtPmNlbGxPcGVyYW5kKCkpLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVz
dWx0R1BSLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOworICAgIG1f
aml0LnN0b3JlVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MocmVzdWx0R1BSLCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOwog
ICAgIG1faml0LnN0b3JlVmFsdWUobGFzdEluZGV4UmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgpKSk7CiAgICAgbV9q
aXQubXV0YXRvckZlbmNlKHZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdleHAsIGxhc3RJbmRleFJl
Z3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRo
aXMsIG9wZXJhdGlvbk5ld1JlZ2V4cFdpdGhMYXN0SW5kZXgsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ2V4cCwgbGFzdEluZGV4UmVncykpOwogCiAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTI1MjIsNyArMTI1MjIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhclN0cmluZ0p1bXAoTm9kZSogbm9kZSwgU3dp
dGNoRGF0YSogZGF0YSwgR1BSUgogewogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModmFsdWUsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzY3JhdGNoKTsKICAg
ICBhdXRvIGlzUm9wZSA9IG1faml0LmJyYW5jaElmUm9wZVN0cmluZ0ltcGwoc2NyYXRjaCk7Ci0g
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0
aW9uUmVzb2x2ZVJvcGUsIHNjcmF0Y2gsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMs
IG9wZXJhdGlvblJlc29sdmVSb3BlLCBzY3JhdGNoLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgdmFsdWUpKTsKICAgICAKICAgICBhZGRCcmFuY2goCiAgICAgICAgIG1faml0LmJyYW5j
aDMyKApAQCAtMTI3NjQsNyArMTI3NjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoU3RyaW5nT25TdHJpbmcoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BSUgogCiAg
ICAgaWYgKCFjYW5Eb0JpbmFyeVN3aXRjaCB8fCB0b3RhbExlbmd0aCA+IE9wdGlvbnM6Om1heGlt
dW1CaW5hcnlTdHJpbmdTd2l0Y2hUb3RhbExlbmd0aCgpKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJp
bmcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEt
PnN3aXRjaFRhYmxlSW5kZXgpLCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YS0+c3dpdGNoVGFibGVJbmRl
eCksICZ1bmxpbmtlZFRhYmxlLCBzdHJpbmcpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICBtX2ppdC5mYXJKdW1wKHN0cmluZywgSlNTd2l0Y2hQdHJUYWcpOwogICAg
ICAgICByZXR1cm47CkBAIC0xMjgwMSw3ICsxMjgwMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyhOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhLCBH
UFJSCiAgICAgCiAgICAgc2xvd0Nhc2VzLmxpbmsoJm1faml0KTsKICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhzdHJpbmcpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3Ry
aW5nLCBzdHJpbmcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpLCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJs
ZUluZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmluZyk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbV9qaXQuZmFySnVtcChz
dHJpbmcsIEpTU3dpdGNoUHRyVGFnKTsKQEAgLTEyOTQ4LDcgKzEyOTQ4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEFjY2Vzc29yQnlJZChOb2RlKiBub2RlKQogICAgIEdQUlJl
ZyBhY2Nlc3NvckdQUiA9IGFjY2Vzc29yLmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlv
blB1dEdldHRlckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOworICAgIGNhbGxP
cGVyYXRpb24obm9kZS0+b3AoKSA9PSBQdXRHZXR0ZXJCeUlkID8gb3BlcmF0aW9uUHV0R2V0dGVy
QnlJZCA6IG9wZXJhdGlvblB1dFNldHRlckJ5SWQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5v
ZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTI5NjYsNyArMTI5NjYsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0R2V0dGVyU2V0dGVyQnlJZChOb2RlKiBu
b2RlKQogICAgIEdQUlJlZyBzZXR0ZXJHUFIgPSBzZXR0ZXIuZ3ByKCk7CiAKICAgICBmbHVzaFJl
Z2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyR1BS
LCBzZXR0ZXJHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVy
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0
dGVyR1BSLCBzZXR0ZXJHUFIpOwogI2Vsc2UKICAgICAvLyBUaGVzZSBKU1ZhbHVlcyBtYXkgYmUg
SlNVbmRlZmluZWQgT1IgSlNGdW5jdGlvbiouCiAgICAgLy8gQXQgdGhhdCB0aW1lLApAQCAtMTI5
NzgsNyArMTI5NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0R2V0dGVyU2V0
dGVyQnlJZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHNldHRlclJlZ3MgPSBzZXR0ZXIu
anNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmFj
Y2Vzc29yQXR0cmlidXRlcygpLCBnZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSwgc2V0dGVyUmVncy5w
YXlsb2FkR1BSKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVy
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgZ2V0
dGVyUmVncy5wYXlsb2FkR1BSKCksIHNldHRlclJlZ3MucGF5bG9hZEdQUigpKTsKICNlbmRpZgog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTEyOTkyLDcgKzEyOTkyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlc29sdmVTY29wZShOb2RlKiBub2RlKQogICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25SZXNvbHZlU2NvcGUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHNjb3BlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCkpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTEzMDA0LDcgKzEzMDA0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJ
bkV2YWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdz
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNj
b3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKSkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9pc3Rp
bmdGdW5jRGVjbEluRXZhbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHNjb3BlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKIH0KQEAgLTEzMDMyLDcgKzEzMDMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldER5bmFtaWNWYXIoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uR2V0RHluYW1pY1ZhciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHNjb3BlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5v
ZGUtPmdldFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWlj
VmFyLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIs
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5m
bygpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CiB9CkBAIC0xMzA0Niw3ICsxMzA0Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mg
dmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZp
ZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1
dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXREeW5hbWljVmFyTm9uU3RyaWN0LCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIHZhbHVlUmVncywgaWRlbnRpZmll
clVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC0xMzEx
Miw3ICsxMzExMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5
VmFsKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGFjY2Vzc29yR1BSID0gYWNjZXNzb3IuZ3ByKCk7
CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgc3Vic2NyaXB0UmVncywgbm9kZS0+
YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGFjY2Vzc29yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHN1YnNjcmlw
dFJlZ3MsIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTMyODksNyAr
MTMyODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nUmVwbGFjZShOb2Rl
KiBub2RlKQogCiAgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlT
dHIsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwg
cmVnRXhwR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmlu
Z1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0ciwgcmVzdWx0LmdwcigpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCByZWdFeHBHUFIpOwogICAgICAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgICAgIGlmIChzYW1wbGUpCkBAIC0xMzMx
MCw3ICsxMzMxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNl
KE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBTdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSLCByZXBsYWNlR1BS
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNl
UmVnRXhwU3RyaW5nLCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBzdHJpbmdHUFIsIHJlZ0V4cEdQUiwgcmVwbGFjZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAg
ICAgICAgaWYgKHNhbXBsZSkKQEAgLTEzMzMyLDcgKzEzMzMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVN0cmluZ1JlcGxhY2UoTm9kZSogbm9kZSkKIAogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMsIHJlc3VsdC5n
cHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ1JlZ3MsIHNlYXJjaFJlZ3Ms
IHJlcGxhY2VSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVu
Y1JlcGxhY2VHZW5lcmljLCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzdHJpbmdSZWdzLCBzZWFyY2hSZWdzLCByZXBsYWNlUmVncyk7CiAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAg
aWYgKHNhbXBsZSkKQEAgLTEzMzUzLDcgKzEzMzUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlZ0V4cEV4ZWNOb25HbG9iYWxPclN0aWNreShOb2RlKiBub2RlKQogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGNhbGxPcGVyYXRpb24oCiAg
ICAgICAgIG9wZXJhdGlvblJlZ0V4cEV4ZWNOb25HbG9iYWxPclN0aWNreSwgcmVzdWx0UmVncywK
LSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5k
KCkpLCBhcmd1bWVudEdQUik7CisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwg
YXJndW1lbnRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtMTMzNzMsNyArMTMzNzMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwTWF0Y2hGYXN0R2xvYmFsKE5vZGUqIG5vZGUpCiAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgY2FsbE9wZXJh
dGlvbigKICAgICAgICAgb3BlcmF0aW9uUmVnRXhwTWF0Y2hGYXN0R2xvYmFsU3RyaW5nLCByZXN1
bHRSZWdzLAotICAgICAgICBnbG9iYWxPYmplY3RHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2Vs
bE9wZXJhbmQoKSksIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5j
ZWxsKCkpLCBhcmd1bWVudEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC0xMzU1Nyw3ICsxMzU1Nyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9k
ZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJp
bmcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFs
dWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWZpbmVEYXRhUHJvcGVydHlTdHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM1NzQs
NyArMTM1NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3Bl
cnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0
YVByb3BlcnR5U3RyaW5nSWRlbnQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BS
LCBpZGVudEdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0
ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC0xMzU4Niw3ICsxMzU4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9k
ZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTeW1ib2wsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVS
ZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM1OTcsNyArMTM1OTcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVz
ZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5LCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNH
UFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFs
dWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM2MzgsNyArMTM2MzgsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAg
ICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVy
R1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0
dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMzY1NSw3ICsxMzY1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNo
aWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0
dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25E
ZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSLCBpZGVudEdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0
ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsK
ICAgICB9CkBAIC0xMzY2Nyw3ICsxMzY2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVu
KG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN5bWJvbCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwg
YXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eVN5bWJvbCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTEzNjc4LDcgKzEzNjc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZUFj
Y2Vzc29yUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWZpbmVBY2Nlc3NvclByb3BlcnR5LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZUdQUiwgcHJvcGVydHlSZWdzLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgZ2V0
dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzgxMCw3ICsxMzgxMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRNYXBCdWNrZXROZXh0KE5vZGUqIG5vZGUp
CiAgICAgICAgIEFTU0VSVChub2RlLT5idWNrZXRPd25lclR5cGUoKSA9PSBCdWNrZXRPd25lclR5
cGU6OlNldCk7CiAgICAgICAgIHNlbnRpbmVsID0gdm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpOwog
ICAgIH0KLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIHNlbnRpbmVsKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25z
dGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBzZW50aW5l
bCksIHJlc3VsdEdQUik7CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMzg3Miw3ICsxMzg3Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVUaHJvdyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1
ZS5qc1ZhbHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25UaHJvd0RGRywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVn
cyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd0RGRywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHZhbHVlUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMzg4NCw3
ICsxMzg4NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUaHJvd1N0YXRpY0Vycm9y
KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIG1lc3NhZ2VHUFIgPSBtZXNzYWdlLmdwcigpOwogICAg
IHNwZWN1bGF0ZVN0cmluZyhub2RlLT5jaGlsZDEoKSwgbWVzc2FnZUdQUik7CiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhdGljRXJyb3Is
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtZXNzYWdlR1BSLCBub2RlLT5lcnJvclR5cGUo
KSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWVzc2FnZUdQUiwgbm9kZS0+ZXJyb3JUeXBlKCkpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAg
IG5vUmVzdWx0KG5vZGUpOwpAQCAtMTM5NzQsNyArMTM5NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUoTm9kZSogbm9kZSkK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFu
ZE1vZGUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywg
aW5kZXhHUFIsIG1vZGVHUFIsIGVudW1lcmF0b3JHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIG1vZGVHUFIsIGVu
dW1lcmF0b3JHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTE0MDQ3LDEyICsxNDA0NywxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUo
Tm9kZSogbm9kZSkKICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAg
ICAgICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCB2bSgpLnNtYWxsU3RyaW5ncy5zZW50aW5l
bFN0cmluZygpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3Rh
bnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0oKS5zbWFsbFN0cmlu
Z3Muc2VudGluZWxTdHJpbmcoKSksIHJlc3VsdEdQUik7CiAgICAgICAgIGRvbmVDYXNlcy5hcHBl
bmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgb3BlcmF0aW9uQ2FsbC5saW5rKCZtX2ppdCk7CiAg
ICAgfQogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVBy
b3BlcnR5TmFtZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5kZXgs
IG1vZGUsIGVudW1lcmF0b3IpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRv
ck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGluZGV4LCBtb2RlLCBlbnVtZXJhdG9yKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsKQEAgLTE0MDk2LDkgKzE0MDk2
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JIYXNQcm9wZXJ0eShO
b2RlKiBub2RlLCBTbG93UGF0aEZ1bmN0aW9uVHkKICAgICAgICAgb3BlcmF0aW9uQ2FzZXMubGlu
aygmbV9qaXQpOwogCiAgICAgICAgIGlmIChiYXNlUmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BS
UmVnKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1vZGVH
UFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRS
ZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1v
ZGVHUFIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHNsb3dQYXRo
RnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
cywgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1vZGVHUFIpOworICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2Rl
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKQEAgLTE0MjAwLDcgKzE0MjAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5SWRXaXRoVGhpcyhOb2RlKiBub2RlKQogCiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJh
dGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKLSAg
ICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFs
dWVSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAgICAg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgdmFsdWVS
ZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDI4MSw3ICsxNDI4
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0eUVudW1lcmF0b3Io
Tm9kZSogbm9kZSkKIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENl
bGxPck90aGVyVXNlKSB7CiAgICAgICAgICAgICBhdXRvIG5vdE90aGVyID0gbV9qaXQuYnJhbmNo
SWZOb3RPdGhlcihiYXNlUmVncywgc2NyYXRjaDFHUFIpOwotICAgICAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCB2bSgpLmVtcHR5UHJvcGVydHlO
YW1lRW51bWVyYXRvcigpKSwgc2NyYXRjaDFHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVu
bGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0o
KS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKICAgICAgICAg
ICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgIG5vdE90aGVy
LmxpbmsoJm1faml0KTsKICAgICAgICAgfQpAQCAtMTQzMzksNyArMTQzMzksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxS
ZWdpc3RlcnMoc2NyYXRjaDFHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdl
dFByb3BlcnR5RW51bWVyYXRvckNlbGwsIHNjcmF0Y2gxR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IApAQCAtMTQzNTQsNyArMTQzNTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5
RW51bWVyYXRvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJl
Z3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncyk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiB9CkBAIC0xNDQ0Myw5ICsxNDQ0Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJDYXQoTm9kZSogbm9kZSkKIAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICBpZiAobm9kZS0+Y2hpbGQzKCkpCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU3RyQ2F0MywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
UmVncywgb3AyUmVncywgb3AzUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U3RyQ2F0MywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
UmVncywgb3AyUmVncywgb3AzUmVncyk7CiAgICAgZWxzZQotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblN0ckNhdDIsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wMVJlZ3MsIG9wMlJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0
ckNhdDIsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MsIG9wMlJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC0xNDUxNSw3ICsxNDUxNSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiAgICAgYmln
TGVuZ3RoLmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQu
Z3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzdHJ1Y3R1cmVHUFIsIHNpemVHUFIsIG51bGxwdHIpOworICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
QEAgLTE0NTQzLDcgKzE0NTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5
cGVkQXJyYXkoTm9kZSogbm9kZSkKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFy
cmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKLSAgICAg
ICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1faml0LmdyYXBo
KCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29u
Y3VycmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpKSwgYXJndW1lbnRSZWdzKTsKKyAgICAg
ICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJl
Q29uY3VycmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpKSwgYXJndW1lbnRSZWdzKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CkBAIC0xNDU3OCw3ICsxNDU3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb1RoaXMoTm9kZSogbm9kZSkKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25U
b1RoaXNTdHJpY3Q7CiAgICAgZWxzZQogICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhp
czsKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlz
LCBmdW5jdGlvbiwgdGVtcFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0aGlzVmFs
dWVSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNl
cywgdGhpcywgZnVuY3Rpb24sIHRlbXBSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgdGhpc1ZhbHVlUmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdCh0ZW1wUmVncywgbm9kZSk7
CiB9CkBAIC0xNDYyOCw3ICsxNDYyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RLZXlzT3JPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93QnV0QXJyYXlCdWZm
ZXJDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdEdQUiwgJnZtKCks
IGFycmF5U3RydWN0dXJlLCBzY3JhdGNoM0dQUikpOwogCi0gICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5vcCgpID09IE9i
amVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0
T3duUHJvcGVydHlOYW1lc09iamVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb2JqZWN0R1BSKSk7CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVy
YXRpb25PYmplY3RLZXlzT2JqZWN0IDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1l
c09iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0
R1BSKSk7CiAKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTQ2NDMsNyArMTQ2NDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2Rl
KQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0
aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNP
YmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0
aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNP
YmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
Uik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ2NTgsNyArMTQ2NTgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2Rl
KiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8g
b3BlcmF0aW9uT2JqZWN0S2V5cyA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXMs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdFJlZ3MpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9i
amVjdEtleXMgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RSZWdzKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CkBAIC0xNDY4NSw3ICsxNDY4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RBc3NpZ24oTm9kZSogbm9kZSkKICAgICAgICAgc3BlY3VsYXRlT2JqZWN0KG5vZGUtPmNo
aWxkMigpLCBzb3VyY2VHUFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWduT2JqZWN0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgdGFyZ2V0R1BSLCBzb3VyY2VHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk9iamVjdEFzc2lnbk9iamVjdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHRhcmdldEdQUiwgc291cmNlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTE0Njk4LDcgKzE0Njk4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEFzc2lnbihOb2RlKiBub2RlKQogICAg
ICAgICBKU1ZhbHVlUmVncyBzb3VyY2VSZWdzID0gc291cmNlLmpzVmFsdWVSZWdzKCk7CiAKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25P
YmplY3RBc3NpZ25VbnR5cGVkLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFyZ2V0R1BS
LCBzb3VyY2VSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RBc3Np
Z25VbnR5cGVkLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGFyZ2V0R1BSLCBzb3Vy
Y2VSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jl
c3VsdChub2RlKTsKQEAgLTE0NzIzLDcgKzE0NzIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdENyZWF0ZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uT2JqZWN0Q3JlYXRlT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBwcm90b3R5cGVHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9i
amVjdENyZWF0ZU9iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgcHJvdG90eXBlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xNDczOCw3ICsxNDczOCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90eXBlUmVncyk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uT2JqZWN0Q3JlYXRlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBwcm90b3R5cGVSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xNDc5MCwx
NCArMTQ3OTAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVRoaXMoTm9k
ZSogbm9kZSkKICAgICBtX2ppdC5lbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0R1BS
LCBpbmxpbmVDYXBhY2l0eUdQUik7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZtKCkpOwogCi0g
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBj
YWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5KCkpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZVRoaXMsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNhbGxlZUdQUiwgbm9kZS0+
aW5saW5lQ2FwYWNpdHkoKSkpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKiBub2Rl
KQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
IAogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTE0ODE1LDcgKzE0ODE1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKICAg
ICBHUFJSZWcgcmFyZURhdGFHUFIgPSBzdHJ1Y3R1cmVHUFI7CiAKICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShub2RlLT5pc0ludGVy
bmFsUHJvbWlzZSgpID8gZ2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VTdHJ1Y3R1cmUoKSA6
IGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKSksIHN0cnVjdHVyZUdQUik7Ci0gICAg
YXV0byBmYXN0UHJvbWlzZVBhdGggPSBtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpFcXVh
bCwgY2FsbGVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBu
b2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gZ2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3RvcigpIDogZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSkpOworICAg
IGF1dG8gZmFzdFByb21pc2VQYXRoID0gbV9qaXQuYnJhbmNoVW5saW5rZWRDb25zdGFudChDQ2Fs
bEhlbHBlcnM6OkVxdWFsLCBjYWxsZWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1faml0LmdyYXBoKCksIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBnbG9iYWxPYmplY3Qt
PmludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yKCkgOiBnbG9iYWxPYmplY3QtPnByb21pc2VDb25z
dHJ1Y3RvcigpKSk7CiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwog
CkBAIC0xNDgyNyw3ICsxNDgyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVh
dGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuZW1pdE5vbk51bGxEZWNvZGVTdHJ1Y3R1
cmVJRChzdHJ1Y3R1cmVHUFIsIHN0cnVjdHVyZUdQUik7CiAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyKG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBKU0ludGVybmFsUHJvbWlzZTo6aW5m
bygpIDogSlNQcm9taXNlOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFw
cGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZv
T2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7CisgICAgbV9qaXQubG9h
ZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSkpOwogCiAgICAgZmFzdFByb21pc2VQYXRoLmxpbmsoJm1faml0KTsKQEAgLTE0ODQw
LDcgKzE0ODQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2Uo
Tm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShqc1VuZGVmaW5lZCgpLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ludGVybmFsRmllbGRPYmplY3RJbXBs
PD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNQcm9taXNl
OjpGaWVsZDo6UmVhY3Rpb25zT3JSZXN1bHQpKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSht
X2ppdC52bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25DcmVhdGVJ
bnRlcm5hbFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9taXNlLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGNhbGxl
ZUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMs
IHRoaXMsIG5vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25DcmVhdGVJbnRlcm5h
bFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9taXNlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGNhbGxlZUdQ
UikpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTQ4NDksNyAr
MTQ4NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2Rl
KiBub2RlKQogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcywgdHlwZW5hbWUgT3BlcmF0aW9uPgog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUludGVybmFsRmllbGRPYmplY3QoTm9k
ZSogbm9kZSwgT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBj
YWxsZWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CkBAIC0xNDg3Niw3ICsxNDg3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAg
bV9qaXQuZW1pdE5vbk51bGxEZWNvZGVTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmVHUFIsIHN0cnVjdHVy
ZUdQUik7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKEpTQ2xhc3M6OmluZm8oKSksIHNj
cmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVj
dHVyZUdQUiwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkpKTsKLSAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCks
IHNjcmF0Y2gxR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNo
MUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJz
OjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpKSk7CiAKICAgICBhdXRvIGJ1dHRl
cmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CkBAIC0xNDg4Nyw3ICsxNDg4Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUq
IG5vZGUsIE9wZXJhdGlvbiBvcGVyCiAgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGlu
aXRpYWxWYWx1ZXNbaW5kZXhdLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0lu
dGVybmFsRmllbGRPYmplY3RJbXBsPD46Om9mZnNldE9mSW50ZXJuYWxGaWVsZChpbmRleCkpKTsK
ICAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb24sIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0
KSwgY2FsbGVlR1BSKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGNhbGxlZUdQUikpOwogCiAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTUwMTEsNyArMTUwMTEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9QcmltaXRpdmUoTm9kZSogbm9kZSkKICAg
ICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdz
KGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlzLCBvcGVyYXRpb25Ub1ByaW1pdGl2ZSwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOworICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChub3RQcmltaXRpdmUsIHRoaXMsIG9w
ZXJhdGlvblRvUHJpbWl0aXZlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJndW1lbnRSZWdzKSk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KQEAgLTE1
MDM1LDcgKzE1MDM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJvcGVydHlL
ZXkoTm9kZSogbm9kZSkKICAgICBhbHJlYWR5UHJvcGVydHlLZXkubGluaygmbV9qaXQpOwogICAg
IG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJndW1lbnRSZWdzLCByZXN1bHRSZWdzKTsKIAotICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
blRvUHJvcGVydHlLZXksIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBh
cmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5LCByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CiAKICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKU0NlbGwsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CiB9CkBAIC0xNTA2NSw3ICsxNTA2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVUb051bWVyaWMoTm9kZSogbm9kZSkKICAgICBpc0hlYXBCaWdJbnQubGluaygm
bV9qaXQpOwogICAgIG1faml0Lm1vdmVWYWx1ZVJlZ3MoYXJndW1lbnRSZWdzLCByZXN1bHRSZWdz
KTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvblRvTnVtZXJpYywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvTnVtZXJpYywgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMpOwogfQpAQCAtMTUxMDAsNyAr
MTUxMDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbE51bWJlckNvbnN0cnVj
dG9yKE5vZGUqIG5vZGUpCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdE51bWJlcihhcmd1bWVudFJlZ3Ms
IHRlbXBHUFIpKTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0
UmVncyk7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uQ2FsbE51bWJlckNvbnN0cnVjdG9yLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2FsbE51bWJlckNv
bnN0cnVjdG9yLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
dW1lbnRSZWdzKSk7CiAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpA
QCAtMTUxNDcsNyArMTUxNDcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9nU2hh
ZG93Q2hpY2tlblRhaWwoTm9kZSogbm9kZSkKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzY29w
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CiAgICAgR1BSUmVnIHNjb3BlUmVnID0gc2NvcGUuZ3By
KCk7CiAKLSAgICBtX2ppdC5sb2dTaGFkb3dDaGlja2VuVGFpbFBhY2tldChzaGFkb3dQYWNrZXRS
ZWcsIHRoaXNSZWdzLCBzY29wZVJlZywgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKG1faml0
LmNvZGVCbG9jaygpKSwgY2FsbFNpdGVJbmRleCk7CisgICAgbV9qaXQuZW1pdEdldEZyb21DYWxs
RnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBzY3JhdGNoMVJlZyk7Cisg
ICAgbV9qaXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQoc2hhZG93UGFja2V0UmVnLCB0aGlz
UmVncywgc2NvcGVSZWcsIHNjcmF0Y2gxUmVnLCBjYWxsU2l0ZUluZGV4KTsKICAgICBub1Jlc3Vs
dChub2RlKTsKIH0KIApAQCAtMTUxNjYsNyArMTUxNjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU2V0QWRkKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEFkZCwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2V0R1BSLCBrZXlSZWdzLCBoYXNoR1BS
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEFkZCwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2V0R1BSLCBrZXlSZWdzLCBoYXNoR1BSKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
IH0KQEAgLTE1MTg4LDcgKzE1MTg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1h
cFNldChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBTZXQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVncywgdmFsdWVSZWdzLCBoYXNoR1BS
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcFNldCwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlSZWdzLCB2YWx1ZVJlZ3MsIGhhc2hH
UFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogfQpAQCAtMTU0MDcsNyArMTU0MDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9kZSkKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dDYXNlczsKICAgICAgICAgbV9qaXQuZW1pdExvYWRQcm90b3R5cGUodm0o
KSwgb2JqZWN0R1BSLCByZXN1bHRSZWdzLCBzbG93Q2FzZXMpOwogICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcm90
b3R5cGVPZk9iamVjdCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvYmplY3RHUFIpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpKTsKIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNTQyNCw3ICsxNTQy
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm90b3R5cGVPZihOb2RlKiBu
b2RlKQogCiAgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90eXBlKHZtKCksIHZhbHVlR1BSLCBy
ZXN1bHRSZWdzLCBzbG93Q2FzZXMpOwogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcm90b3R5cGVPZiwKLSAgICAg
ICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3Mp
KTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MpKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwogICAgICAgICByZXR1cm47CkBAIC0xNTU1MSw3ICsxNTU1Miw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihtYWtlVW5pcXVlPENhbGxBcnJh
eUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAotICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLAor
ICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmpl
Y3QpLAogICAgICAgICBzdHJ1Y3R1cmUsCiAgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVU
b0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCiAgICAgICAgIHNpemVHUFIsIHN0b3JhZ2VH
UFIpKTsKQEAgLTE1Njg0LDcgKzE1Njg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUhhc0luZGV4ZWRQcm9wZXJ0eShOb2RlKiBub2RlLCBTX0pJVE9wZXJhdGlvbl9HQ1ogc2wKICAg
ICB9CiAgICAgfQogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIGluZGV4R1BSKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGluZGV4R1BSKSk7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFeHRyYWN0Q2F0Y2hMb2NhbChOb2Rl
KiBub2RlKQpAQCAtMTU4MDQsMTEgKzE1ODA1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgSlNWYWx1
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3dQYXRoR2VuZXJhdG9yPiBzbG93UGF0aDsKICAgICBp
ZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aElDQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0
dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIs
IFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGdlbi5zbG93UGF0
aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCB2YWx1
ZVJlZ3MsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBO
b1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAogICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9S
ZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKKyAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIHZhbHVlUmVncywKICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMo
KSk7CiAgICAgfQogCkBAIC0xNTgzNyw3ICsxNTgzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1i
bGVyCiAgICAgICAgIGFyZzIudXNlKCk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIAogICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTE1ODU4LDcgKzE1ODU5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZUNvbXBhcmUoTm9kZSogbm9k
ZSwgTWFjcm9Bc3NlbWJsZXIKICAgICBtX2ppdC5jb21wYXJlMzIoY29uZCwgYXJnMVJlZ3MucGF5
bG9hZEdQUigpLCBhcmcyUmVncy5wYXlsb2FkR1BSKCksIHJlc3VsdEdQUik7CiAKICAgICBpZiAo
IWlzS25vd25JbnRlZ2VyKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSkgfHwgIWlzS25vd25JbnRlZ2Vy
KG5vZGUtPmNoaWxkMigpLm5vZGUoKSkpCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncykpOworICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIGhlbHBlckZ1
bmN0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVn
cywgYXJnMlJlZ3MpKTsKIAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBu
b2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQpAQCAtMTU4OTgsNyArMTU4OTks
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZVBlZXBob2xlQnJhbmNoKE5v
ZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgICAgIGFyZzIudXNlKCk7CiAKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlv
biwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJS
ZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBicmFuY2hUZXN0MzIoY2FsbFJl
c3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CkBAIC0xNTkyMiw3ICsxNTkyMyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlUGVlcGhvbGVCcmFuY2goTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZSwKICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0
KTsKIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAgICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApA
QCAtMTU5NjIsNyArMTU5NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGVhcEJp
Z0ludEVxdWFsaXR5KE5vZGUqIG5vZGUpCiAgICAgbm90RXF1YWxDYXNlLmxpbmsoJm1faml0KTsK
IAogICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycygpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xNjExNSw3ICsxNjExNiw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogCiAgICAg
YXV0byBpc05vbkVtcHR5U3RyaW5nID0gbV9qaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVyczo6
Tm9uWmVybywgYWxsb2NhdG9yR1BSKTsKIAotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyhtX2ppdC5ncmFwaCgpLm1f
dm0pKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKG1faml0
LmdyYXBoKCkubV92bSkpLCByZXN1bHRHUFIpOwogCiAgICAgaXNOb25FbXB0eVN0cmluZy5saW5r
KCZtX2ppdCk7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKHZtKCkpOwpAQCAtMTYxMjMsMTEgKzE2
MTI0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2Rl
KQogICAgIHN3aXRjaCAobnVtT3BHUFJzKSB7CiAgICAgY2FzZSAyOgogICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywg
b3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcEdQUnNbMF0sIG9wR1BSc1sxXSkpOworICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0pKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBz
bG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFrZVJvcGUzLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSwgb3BHUFJzWzJdKSk7CisgICAg
ICAgICAgICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTWFrZVJvcGUzLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSwgb3BHUFJz
WzJdKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNjE0MSwxMSArMTYxNDIsMTEgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICBzd2l0Y2ggKG51bU9wR1BScykgewogICAgIGNhc2UgMjoK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTIsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUzLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSwgb3BHUFJzWzJdKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKQEAgLTE2MjQ4LDkgKzE2MjQ5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVu
dW1lcmF0b3JHZXRCeVZhbChOb2RlKiBub2RlKQogCiAgICAgICAgIGlmICghcmVjb3ZlckdlbmVy
aWNDYXNlLmVtcHR5KCkpIHsKICAgICAgICAgICAgIGlmIChiYXNlUmVncy50YWdHUFIoKSA9PSBJ
bnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JSZWNv
dmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgaW5kZXhH
UFIsIGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJh
dG9yUmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIo
KSksIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHJlY292ZXJHZW5lcmlj
Q2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIs
IGVudW1lcmF0b3JHUFIpKTsKKyAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9y
UmVjb3Zlck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VSZWdzLCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwogICAgICAgICB9
CiAKICAgICAgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2OTUzNDU1Nzk5ZTU4ZDYyZTljOWZl
M2U0NjY2M2E5ZWRiZGIyYTQ0Li5jZWI1ZGVmNDY1OTlmMGI2NWUwNzIwNzhkNWQ5NjFhMDEwMDU3
NmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xMjIsNyArMTIyLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBleHBs
aWNpdCBUcnVzdGVkSW1tUHRyKFQqIHZhbHVlKQogICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVl
KQogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8
SlNDZWxsLCBUPjo6dmFsdWUsICJUbyB1c2UgYSBHQyBwb2ludGVyLCB0aGUgZ3JhcGggbXVzdCBi
ZSBhd2FyZSBvZiBpdC4gVXNlIFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlciBpbnN0ZWFkLiIpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNl
X29mPEpTQ2VsbCwgVD46OnZhbHVlLCAiVG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBoIG11
c3QgYmUgYXdhcmUgb2YgaXQuIFVzZSBTcGVjdWxhdGl2ZUpJVDo6SklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQgaW5zdGVhZC4iKTsKICAgICAgICAgfQogCiAgICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW1QdHIoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCkBAIC05NzQsMTYgKzk3
NCwxNSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIGFwcGVuZENhbGwoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86Om5vbkFyZ0dQUjAsIGFkZHJlc3Mub2Zmc2V0KSk7CiAg
ICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVS
b2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxs
RnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFZfSklUT3BlcmF0aW9uX0NiIG9wZXJhdGlvbiwgR1BS
UmVnIGNvZGVCbG9ja0dQUikKICAgICB7Ci0gICAgICAgIC8vIERvIG5vdCByZWdpc3RlciBDb2Rl
QmxvY2sqIGFzIGEgd2Vhay1wb2ludGVyLgotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxW
X0pJVE9wZXJhdGlvbl9DYj4oVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDx2b2lkKj4oY29kZUJs
b2NrKSkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxWX0pJVE9wZXJhdGlvbl9DYj4o
Y29kZUJsb2NrR1BSKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb24pOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihaX0pJVE9w
ZXJhdGlvbl9HIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFt
ZVJvbGxiYWNrT25FeGNlcHRpb24oWl9KSVRPcGVyYXRpb25fRyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50czxaX0pJVE9wZXJhdGlvbl9HPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Wl9K
SVRPcGVyYXRpb25fRz4oZ2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxXaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvblNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogICAgIApAQCAtMTE1OCw2ICsxMTU3LDEyIEBAIGNsYXNzIFNwZWN1bGF0
aXZlSklUIHsKICAgICB7CiAgICAgICAgIHJldHVybiBhZGRCcmFuY2gobV9qaXQuYnJhbmNoUHRy
KGNvbmQsIGxlZnQsIHJpZ2h0KSwgZGVzdGluYXRpb24pOwogICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBicmFuY2hVbmxpbmtlZENvbnN0YW50
KEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgVSByaWdodCwg
QmFzaWNCbG9jayogZGVzdGluYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gYWRkQnJhbmNo
KG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoY29uZCwgbGVmdCwgcmlnaHQpLCBkZXN0aW5h
dGlvbik7CisgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
CiAgICAgdm9pZCBicmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpSZXN1bHRDb25kaXRpb24gY29u
ZCwgVCB2YWx1ZSwgVSBtYXNrLCBCYXNpY0Jsb2NrKiBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IDdmYjU2NTIzMzJmOWM2MGY2MjIyODZmZWFhOWU1NmJhNjMyN2Y2Y2EuLjFlOGIzOGM2ZGRjZjE1
NDNkZjJhMzYyYmU5YTJkZmFlMDQ5MTVlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMjE1LDEzICsyMTUsMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCgKICAgICBpZiAoYmFzZVRhZ0dQ
Uk9yTm9uZSA9PSBJbnZhbGlkR1BSUmVnKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3ByaWF0ZU9wdGltaXppbmdH
ZXRCeUlkRnVuY3Rpb24odHlwZSksCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLAor
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VQYXlsb2FkR1BSKSwKICAgICAgICAgICAgIGlkZW50aWZpZXIu
cmF3Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNW
YWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJh
d0JpdHMoKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBh
eWxvYWRHUFIpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVn
cyhiYXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiksIGlkZW50aWZpZXIucmF3Qml0cygp
KTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRo
VGhpcygKICAgICBpZiAoYmFzZVRhZ0dQUk9yTm9uZSA9PSBJbnZhbGlkR1BSUmVnICYmIHRoaXNU
YWdHUFIgPT0gSW52YWxpZEdQUlJlZykgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlz
T3B0aW1pemUsCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBh
eWxvYWRHUFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLAorICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VQYXlsb2FkR1BSKSwKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KHRoaXNQYXlsb2FkR1BSKSwKICAgICAgICAgICAgIGlkZW50aWZpZXIucmF3Qml0cygpKTsKQEAg
LTI2MSw3ICsyNjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoCiAgICAgICAgIAogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCi0g
ICAgICAgICAgICBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlVGFnR1BST3JO
b25lLCBiYXNlUGF5bG9hZEdQUiksIEpTVmFsdWVSZWdzKHRoaXNUYWdHUFIsIHRoaXNQYXlsb2Fk
R1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVz
dWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBK
U1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiksIGlkZW50aWZpZXIucmF3Qml0
cygpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRHZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0
aC5nZXQoKSk7CkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW4KICAg
ICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgR1BS
UmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3By
KCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubG9h
ZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlE
T2Zmc2V0KCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRD
b21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFy
ZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2Jh
bE9iamVjdEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaE51bGxPclVuZGVmaW5l
ZChFZGdlIG9wZXJhbmQsIE4KICAgIAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RH
UFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2Jh
bE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxH
bG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9i
YWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdEdQUik7
CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsK
ICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RH
UFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CkBA
IC00MjEsNyArNDIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVw
aG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMVBheWxvYWRHUFIsIGFyZzJQYXlsb2FkR1BSLCBp
bnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxv
YWRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUGF5bG9hZEdQUiwgYXJn
MlBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9k
ZSogYnJhbmNoTm9kZQogICAgICAgICAvLyBGSVhNRTogQWRkIGZhc3QgcGF0aHMgZm9yIHR3b0Nl
bGxzLCBudW1iZXIgZXRjLgogCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFS
ZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogCkBAIC00NjksNyArNDY5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUq
IG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAgICBub3RFcXVhbENhc2UubGluaygmbV9qaXQpOwog
ICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQ
Uik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwg
cmVzdWx0UGF5bG9hZEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFQYXlsb2Fk
R1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZzFQYXlsb2FkR1BSLCBhcmcyUGF5bG9hZEdQUik7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIApA
QCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9u
UGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICAgICAgLy8gRklY
TUU6IEFkZCBmYXN0IHBhdGhzLgogCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVT
dHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
ZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKQEAgLTYzMyw3ICs2
MzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uodm0oKSwgbV9qaXQsIHNjcmF0Y2hH
UFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJh
bWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93Q2FzZSk7CiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2Uu
bGluaygmbV9qaXQpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dGb3JWYXJhcmdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2lu
Z1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTY2
NSw3ICs2NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
CiAgICAgICAgICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNUYWdH
UFIvYXJndW1lbnRzUGF5bG9hZEdQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMKICAgICAgICAg
ICAgIC8vIGZsdXNoZWQuCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVG
cmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2Fk
R1BSKSwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVl
UmVncyhhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1BheWxvYWRHUFIpLCBudW1Vc2VkU3RhY2tT
bG90cywgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTm93IHdlIGhhdmUgdGhl
IGFyZ3VtZW50IGNvdW50IG9mIHRoZSBjYWxsZWUgZnJhbWUsIGJ1dCB3ZSd2ZSBsb3N0IHRoZSBh
cmd1bWVudHMgb3BlcmFuZC4KQEAgLTY3NSw3ICs2NzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgZW1pdFNldFZhcmFyZ3NGcmFtZSht
X2ppdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGZhbHNlLCBzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjEpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMigtKHNpemVvZihD
YWxsZXJGcmFtZUFuZFBDKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dEJ5dGVzKCksIDYgKiBzaXplb2Yodm9pZCopKSkpLCBzY3JhdGNoR1BSMSwgSklUQ29tcGlsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY3JhdGNoR1BSMSwgSlNWYWx1ZVJlZ3Mo
YXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSKSwgZGF0YS0+Zmlyc3RWYXJBcmdP
ZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIEpTVmFsdWVSZWdzKGFy
Z3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiksIGRhdGEtPmZpcnN0VmFyQXJnT2Zm
c2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgfQpAQCAtODE2LDcgKzgxNiw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIHJlcXVpcmVk
Qnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBy
ZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMihyZXF1aXJl
ZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwgR1BSSW5mbzo6
cmVnVDEpOwotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25D
YWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVj
dCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QxKTsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBt
X2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFsKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKQEAgLTkyOSw3ICs5MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOwogICAgIH0KIAotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOworICAgIG1faml0LmxvYWRV
bmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGds
b2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsKICAgICBpbmZvLT5lbWl0U2xvd1BhdGgodm0o
KSwgbV9qaXQpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xNTAyLDcgKzE1MDIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcihFZGdl
IG5vZGVVc2UsIGJvb2wgaW52ZXJ0KQogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMTYyNyw3ICsxNjI3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goRWRnZSBu
b2RlVXNlLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmEKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFs
T2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJl
bnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAgaXNO
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0xNzk3LDcg
KzE3OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9k
ZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOwogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZUdQUiwgcHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBwcm9wZXJ0eVJlZ3MpOwogICAgICAgICAgICAgaWYgKGNhblVzZUZsdXNoID09IENh
blVzZUZsdXNoOjpObykKICAgICAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMTg0MSwxMSArMTg0MSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29u
c3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgaWYgKGJhc2VSZWdzLnRh
Z0dQUigpID09IEludmFsaWRHUFJSZWcpIHsKICAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxW
YWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBwcm9wZXJ0eVJlZ3MpOworICAgICAgICAgICAg
ICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBu
dWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBw
cm9wZXJ0eVJlZ3MpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlUmVncywg
cHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIHByb3BlcnR5UmVn
cyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwg
c2xvd1BhdGguZ2V0KCkpOwpAQCAtMTk0Miw3ICsxOTQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1
cGxlPEoKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0
aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZh
bE9iamVjdEludCwKLSAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcpKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAg
ICBicmVhazsKQEAgLTIwMDgsNyArMjAwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJ
bnQsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CkBAIC0yMDY1LDcgKzIwNjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAg
ICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
UmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjY1
Miw3ICsyNjUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRo
aXNSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0yNzUzLDcgKzI3NTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292
ZXJMZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2
YWx1ZVBheWxvYWRHUFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwor
ICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2Fk
R1BSKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2Fk
R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc4OCw3ICsyNzg4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVu
Z3RoLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQ
YXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKKyAgICAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiks
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwg
bm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI4MjYsNyArMjgyNiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAg
ICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wLAotICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVU
YWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI5
ODMsNyArMjk4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgLy8gSW5zdGVhZCBvZiB0aGUgc2xvdyBwYXRoIGdlbmVyYXRvciwgd2UgZW1pdCBj
YWxsT3BlcmF0aW9uIGhlcmUuCiAgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1i
ZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3Mp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncyk7CiAgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90TnVtYmVyOwpAQCAtMjk5Nyw3ICsyOTk3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBu
b3ROdW1iZXIubGluaygmbV9qaXQpOwogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0UmVncyk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVt
YmVyLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdz
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpOwogICAgICAg
ICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIApAQCAtMzUyNCw3ICszNTI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9
IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2Jh
bE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQ
Uik7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAg
ICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC0zNTg4LDcg
KzM1ODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OdW1iZXJJc0ludGVnZXIsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTnVtYmVySXNJbnRlZ2VyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM2MzEsNyArMzYzMSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGlucHV0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjYyLDkgKzM2NjIsOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBP
YmplY3RVc2UpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTTWFwRmluZEJ1
Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlS
ZWdzLCBoYXNoR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBG
aW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBH
UFIsIGtleVJlZ3MsIGhhc2hHUFIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlSZWdzLCBoYXNoR1BSKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIGhhc2hHUFIpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzkyMyw3ICszOTIzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0ZW1wR1BSKTsKICAg
ICAgICAgICAgIGtleVJlZ3MgPSBKU1ZhbHVlUmVncyh0ZW1wR1BSLCBrZXlSZWdzLnBheWxvYWRH
UFIoKSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Q
cm9wZXJ0eSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BS
LCBrZXlSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0
eSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBr
ZXlSZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBhOTEyZWI1OThiOTgyMmEzNTk2YTFjMThjZTFl
NjIzZThhYWE2ODExLi5iNjlkNzM5MzMzODljMTQ3YTQwZTczN2FlMWQ2NDFiODYxZGNjMzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTE3OCwxMiArMTc4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVnCiAgICAgICAg
IHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJ
bmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBhcHBy
b3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCiAgICAgICAgICAgICBzcGls
bE1vZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAg
ICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUp
LAogICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVj
a05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWQoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yMTUsMTIgKzIxNSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZUdQUgogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzT3B0aW1pemUsCiAgICAgICAgICAg
ICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAg
ICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50
aWZpZXIucmF3Qml0cygpKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlJZFdp
dGhUaGlzT3B0aW1pemUsCiAgICAgICAgICAgICBEb250U3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVx
dWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAgICB9
CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkp
OwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGVlcGhvbGVDb21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuCiAKICAgICAgICAg
R1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3Qu
Z3ByKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQu
bG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1p
dExvYWRTdHJ1Y3R1cmUodm0oKSwgYXJnR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNv
bXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwpAQCAtMjk5LDYgKzI5OSw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQo
RWRnZSBvcGVyYW5kLCBOCiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0
aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAor
ICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5n
cHIoKTsKKyAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2Jh
bE9iamVjdC5ncHIoKTsKKwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsOwogICAg
ICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENl
bGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CkBAIC0zMDcs
OSArMzEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJy
YW5jaE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE4KICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGFyZ0dQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAKICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCksIG5vdFRha2VuKTsKIAotICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBs
b2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVj
dEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxP
YmplY3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmpl
Y3RHUFIpOwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBhcmdHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9i
YWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgdGFrZW4pOwpAQCAtNDUyLDcgKzQ1
Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RF
cShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIGJyYW5jaDY0KEpJVENvbXBp
bGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7
CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIApAQCAtNTAzLDcgKzUwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hO
b2RlCiAKICAgICAgICAganVtcChpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuLCBGb3JjZUp1bXAp
OwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENh
c2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpKTsKKyAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMUdQUiwgYXJnMkdQUikpOwogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29t
cGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CiAg
ICAgfQogCkBAIC01NDEsNyArNTQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pT
VmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAg
ICBub3RFcXVhbENhc2UubGluaygmbV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCkBAIC01OTcs
NyArNTk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogCiAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tNjQoMCksIHJlc3VsdEdQUik7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3Mp
KTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywg
dGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwogCkBAIC03MzQsNyArNzM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNl
KHZtKCksIG1faml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3Jh
dGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nh
c2UpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsK
ICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCkpOwogICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJl
YXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgZG9u
ZS5saW5rKCZtX2ppdCk7CkBAIC03NjMsNyArNzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIERGR19BU1NFUlQobV9qaXQuZ3JhcGgo
KSwgbm9kZSwgaXNGbHVzaGVkKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBSaWdo
dCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1bWVudHNHUFIgYW5kIHRoZSByZWdpc3RlciBmaWxl
IGlzIGZsdXNoZWQuCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFt
ZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJndW1lbnRzR1BSLCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJB
cmdPZmZzZXQpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVG
b3JWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZ3VtZW50c0dQUiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFy
QXJnT2Zmc2V0KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0
aGUgY2FsbGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCkBA
IC03NzMsNyArNzc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUobV9qaXQsIEdQUkluZm86OnJldHVy
blZhbHVlR1BSLCBmYWxzZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAg
IG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA1ICogc2l6ZW9m
KHZvaWQqKSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0
dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwgZGF0YS0+Zmlyc3RWYXJBcmdP
ZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIGFyZ3VtZW50c0dQUiwg
ZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIo
VHJ1c3RlZEltbTMyKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSksIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICB9CkBA
IC05MTAsNyArOTExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9k
ZSkKICAgICAgICAgcmVxdWlyZWRCeXRlcyA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIHJlcXVpcmVkQnl0ZXMpOwogICAgICAgICBtX2ppdC5zdWJQdHIo
VHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMpLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVn
aXN0ZXIpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpLCBHUFJJbmZvOjpyZWdUMSk7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
PGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwp
PihKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBH
UFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwogICAgICAgICBwcmVwYXJlRm9yRXh0ZXJu
YWxDYWxsKCk7CiAgICAgICAgIG1faml0LmFwcGVuZENhbGwob3BlcmF0aW9uQ2FsbEV2YWwpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtOTk5LDEzICsxMDAwLDE1IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIENhbGxGcmFt
ZVNodWZmbGVyIGNhbGxGcmFtZVNodWZmbGVyKG1faml0LCBzaHVmZmxlRGF0YSk7CiAgICAgICAg
IGNhbGxGcmFtZVNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUklu
Zm86OnJlZ1QwKSk7CiAgICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0
aCgpOworICAgICAgICAvLyBGSVhNRQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8g
SlNHbG9iYWxPYmplY3QgbmVlZHMgdG8gYmUgaW4gcmVnVDMKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2ppdC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMg
dG8gYmUgaW4gcmVnVDAKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6
cmVnVDMpOyAvLyBKU0dsb2JhbE9iamVjdCBuZWVkcyB0byBiZSBpbiByZWdUMwogICAgICAgICBp
ZiAoaXNUYWlsKQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAv
LyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAK
ICAgICB9CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxPYmplY3QgbmVl
ZHMgdG8gYmUgaW4gcmVnVDMKICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCh2bSgpLCBt
X2ppdCk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTE4OTAsNyArMTg5Myw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBH
UFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwor
ICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1faml0LmdyYXBoKCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIHJlc3VsdEdQ
Uik7CiAgICAgbV9qaXQuY29tcGFyZTY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdmFsdWVHUFIs
IHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CkBAIC0xOTMxLDEwICsxOTM0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVUb0Jvb2xlYW5PYmplY3RPck90aGVyKEVkZ2Ugbm9kZVVzZSwgYm9vbCBpbnZl
cnQpCiAKICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3ModmFsdWVHUFIpLCBub2RlVXNlLCAKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAg
ICAgICAgICAgIG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAK
LSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSkpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0yMDg2LDEwICsyMDg5LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKEVkZ2Ugbm9kZVVzZSwgQmFz
aWNCbG9jayogdGFrZW4sIEJhCiAKICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0o
KSwgdmFsdWVHUFIsIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLAotICAgICAgICAgICAgbV9qaXQu
YnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVW5saW5rZWRDb25zdGFudCgKICAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIxNTUsNyArMjE1
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQnJhbmNoKEVkZ2Ugbm9kZVVz
ZSwgQmFzaWNCbG9jayogdGFrZW4sIEJhc2ljQmxvCiAgICAgICAgICAgICBpZiAoIWlzRGVmaW5p
dGVseVN0cmluZykKICAgICAgICAgICAgICAgICBza2lwU3RyaW5nQ2FzZSA9IG1faml0LmJyYW5j
aElmTm90U3RyaW5nKHZhbHVlR1BSKTsKIAotICAgICAgICAgICAgYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgdmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0
LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBub3RUYWtlbik7CisgICAgICAgICAgICBi
cmFuY2hVbmxpbmtlZENvbnN0YW50KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdmFsdWVHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmco
dm0oKSkpLCBub3RUYWtlbik7CiAgICAgICAgICAgICBqdW1wKHRha2VuLCBGb3JjZUp1bXApOwog
CiAgICAgICAgICAgICBpZiAoIWlzRGVmaW5pdGVseVN0cmluZykKQEAgLTIxNzksOCArMjE4Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQnJhbmNoKEVkZ2Ugbm9kZVVzZSwg
QmFzaWNCbG9jayogdGFrZW4sIEJhc2ljQmxvCiAgICAgICAgIGlmIChzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpIHsKICAgICAgICAgICAgIGJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBl
SW5mb0ZsYWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCks
IHRha2VuKTsKICAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVl
R1BSLCB0ZW1wMUdQUik7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgdGVtcDJHUFIpOworICAgICAgICAgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHRlbXAyR1BSKTsKICAgICAgICAgICAgIGJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAxR1BS
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgdGVtcDJHUFIsIHRha2VuKTsKICAg
ICAgICAgICAgIGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7CiAgICAgICAgIH0gZWxzZQpAQCAt
MjM3OCw3ICsyMzgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgICAgICAgICBpZiAoY2FuVXNlRmx1c2gg
PT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0yNDM0LDExICsy
NDM2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2Rl
LCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGlmIChKSVRDb2RlOjp1
c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aElDQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5m
bygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1
Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAg
ICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwg
YmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlH
UFIpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgICAgICB9CiAK
ICAgICAgICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yNTEz
LDcgKzI1MTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSog
bm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAot
ICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWcs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwog
ICAgICAgICB9CiAKIApAQCAtMjYwNSw3ICsyNjA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxl
PEoKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncy5ncHIo
KSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLmdwcigpLCBub2RlKTsKICAgICAgICAgfQogCkBAIC0yNjYzLDcgKzI2
NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwg
Y29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAgICAgIHJl
c3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVn
KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZywgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjcwMywyOCArMjcwNSwyNCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZShOb2RlKiBub2RlKQog
CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZ2xvYmFsT2JqZWN0KHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKLSAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSID0gZ2xvYmFsT2JqZWN0LmdwcigpOwotICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKLSAgICBHUFJSZWcgYXJndW1lbnRHUFI7Ci0g
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisKICAgICBHUFJUZW1wb3Jhcnkgc3RyaW5nSW1wbCh0aGlzKTsK
ICAgICBHUFJUZW1wb3Jhcnkgc3RyaW5nRGF0YSh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc3Ry
TGVuZ3RoKHRoaXMpOwogICAgIEdQUlRlbXBvcmFyeSBvdXRwdXQodGhpcyk7Ci0gICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdDIodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAwKHRoaXMpOwogICAg
IEdQUlRlbXBvcmFyeSB0ZW1wMSh0aGlzKTsKLSAgICBHUFJUZW1wb3JhcnkgdGVtcDI7CisgICAg
c3RkOjpvcHRpb25hbDxHUFJUZW1wb3Jhcnk+IHRlbXAyOworCisgICAgR1BSUmVnIGdsb2JhbE9i
amVjdEdQUiA9IGdsb2JhbE9iamVjdC5ncHIoKTsKKyAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CiAgICAgR1BSUmVnIHN0cmluZ0ltcGxHUFIgPSBzdHJpbmdJbXBsLmdwcigpOwogICAg
IEdQUlJlZyBzdHJpbmdEYXRhR1BSID0gc3RyaW5nRGF0YS5ncHIoKTsKICAgICBHUFJSZWcgb3V0
cHV0R1BSID0gb3V0cHV0LmdwcigpOwogICAgIEdQUlJlZyBzdHJMZW5ndGhHUFIgPSBzdHJMZW5n
dGguZ3ByKCk7Ci0gICAgR1BSUmVnIHJlc3VsdDJHUFIgPSByZXN1bHQyLmdwcigpOwogICAgIEdQ
UlJlZyB0ZW1wMEdQUiA9IHRlbXAwLmdwcigpOwogICAgIEdQUlJlZyB0ZW1wMUdQUiA9IHRlbXAx
LmdwcigpOwogICAgIEdQUlJlZyB0ZW1wMkdQUiA9IEludmFsaWRHUFJSZWc7Ci0gICAgR1BSUmVn
IHN3YXBSZWcgPSBJbnZhbGlkR1BSUmVnOwogCiAgICAgYXV0byBqaXRDb2RlQmxvY2sgPSByZWdF
eHAtPmdldFJlZ0V4cEpJVENvZGVCbG9jaygpOwogICAgIEFTU0VSVChqaXRDb2RlQmxvY2spOwpA
QCAtMjczMiw0NCArMjczMCwzMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhw
VGVzdElubGluZShOb2RlKiBub2RlKQogCiAjaWYgIUNQVShYODZfNjQpCiAgICAgaWYgKGlubGlu
ZUNvZGVTdGF0czhCaXQubmVlZHNUZW1wMigpKSB7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZWFs
VGVtcDIodGhpcyk7Ci0gICAgICAgIHRlbXAyLmFkb3B0KHJlYWxUZW1wMik7Ci0gICAgICAgIHRl
bXAyR1BSID0gdGVtcDIuZ3ByKCk7CisgICAgICAgIHRlbXAyLmVtcGxhY2UodGhpcyk7CisgICAg
ICAgIHRlbXAyR1BSID0gdGVtcDItPmdwcigpOwogICAgIH0KICNlbmRpZgogCiAgICAgc3BlY3Vs
YXRlUmVnRXhwT2JqZWN0KG5vZGUtPmNoaWxkMigpLCBiYXNlR1BSKTsKIAotICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBkb25lOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBvcGVy
YXRpb25DYXNlczsKLQotICAgIGF1dG8gc3dhcFJlZ0lmTmVlZGVkID0gWyZdIHsKLSAgICAgICAg
aWYgKGdsb2JhbE9iamVjdEdQUiA9PSByZXN1bHRHUFIpIHsKLSAgICAgICAgICAgIHN3YXBSZWcg
PSBhbGxvY2F0ZSgpOwotICAgICAgICAgICAgbV9qaXQubW92ZShnbG9iYWxPYmplY3RHUFIsIHN3
YXBSZWcpOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0R1BSID0gc3dhcFJlZzsKLSAgICAgICAg
fSBlbHNlIGlmIChiYXNlR1BSID09IHJlc3VsdEdQUikgewotICAgICAgICAgICAgc3dhcFJlZyA9
IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKGJhc2VHUFIsIHN3YXBSZWcpOwot
ICAgICAgICAgICAgYmFzZUdQUiA9IHN3YXBSZWc7Ci0gICAgICAgIH0gZWxzZSBpZiAoYXJndW1l
bnRHUFIgPT0gcmVzdWx0R1BSKSB7Ci0gICAgICAgICAgICBzd2FwUmVnID0gYWxsb2NhdGUoKTsK
LSAgICAgICAgICAgIG1faml0Lm1vdmUoYXJndW1lbnRHUFIsIHN3YXBSZWcpOwotICAgICAgICAg
ICAgYXJndW1lbnRHUFIgPSBzd2FwUmVnOwotICAgICAgICB9Ci0gICAgfTsKKyAgICBDQ2FsbEhl
bHBlcnM6Okp1bXBMaXN0IHNsb3dDYXNlczsKKworICAgIGF1dG8gcmVnRXhwVGVzdElubGluZUNh
c2UgPSBbJl0oR1BSUmVnIGFyZ3VtZW50R1BSLCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93
Q2FzZXMpIHsKKyAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhh
cmd1bWVudEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHN0cmluZ0ltcGxHUFIpOwor
ICAgICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIGEgcm9wZSBvciAxNiBiaXQsIHdlIGNhbGwgdGhl
IG9wZXJhdGlvbi4KKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZlJvcGVT
dHJpbmdJbXBsKHN0cmluZ0ltcGxHUFIpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0MzIoCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKKyAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmluZ0ltcGxHUFIsIFN0cmluZ0ltcGw6
OmZsYWdzT2Zmc2V0KCkpLAorICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZs
YWdJczhCaXQoKSkpKTsKIAotICAgIGF1dG8gcmVnRXhwVGVzdElubGluZUNhc2UgPSBbJl0gewog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmluZ0ltcGxH
UFIsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0cmluZ0RhdGFHUFIpOwogICAgICAgICBt
X2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyaW5nSW1wbEdQUiwgU3RyaW5n
SW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCBzdHJMZW5ndGhHUFIpOwogCi0gICAgICAgIEdQ
UlJlZyBpbmRleEdQUiA9IHN0cmluZ0ltcGxHUFI7Ci0KLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tMzIoMCksIGluZGV4R1BSKTsKLQorICAgICAgICAvLyBDbG9iYmVyaW5nIGlucHV0IHJl
Z2lzdGVycyBpcyBPSyBzaW5jZSB3ZSBhbHJlYWR5IGNhbGxlZCBmbHVzaFJlZ2lzdGVycy4KICAg
ICAgICAgWWFycjo6WWFyckpJVFJlZ2lzdGVycyB5YXJyUmVnaXN0ZXJzOwogICAgICAgICB5YXJy
UmVnaXN0ZXJzLmlucHV0ID0gc3RyaW5nRGF0YUdQUjsKLSAgICAgICAgeWFyclJlZ2lzdGVycy5p
bmRleCA9IGluZGV4R1BSOworICAgICAgICB5YXJyUmVnaXN0ZXJzLmluZGV4ID0gc3RyaW5nSW1w
bEdQUjsKICAgICAgICAgeWFyclJlZ2lzdGVycy5sZW5ndGggPSBzdHJMZW5ndGhHUFI7CiAgICAg
ICAgIHlhcnJSZWdpc3RlcnMub3V0cHV0ID0gb3V0cHV0R1BSOwogICAgICAgICB5YXJyUmVnaXN0
ZXJzLnJlZ1QwID0gdGVtcDBHUFI7CkBAIC0yNzgwLDEwMSArMjc2NSw3NyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZShOb2RlKiBub2RlKQogICAgICAgICBp
ZiAoaW5saW5lQ29kZVN0YXRzOEJpdC5uZWVkc1RlbXAyKCkpCiAgICAgICAgICAgICB5YXJyUmVn
aXN0ZXJzLnJlZ1QyID0gdGVtcDJHUFI7CiAKLSAgICAgICAgeWFyclJlZ2lzdGVycy5yZXR1cm5S
ZWdpc3RlciA9IHJlc3VsdEdQUjsKLSAgICAgICAgeWFyclJlZ2lzdGVycy5yZXR1cm5SZWdpc3Rl
cjIgPSByZXN1bHQyR1BSOworICAgICAgICB5YXJyUmVnaXN0ZXJzLnJldHVyblJlZ2lzdGVyID0g
dGVtcDBHUFI7CisgICAgICAgIHlhcnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIyID0gc3RyaW5n
RGF0YUdQUjsKIAogICAgICAgICBhdXRvIGNvbW1vbkRhdGEgPSBtX2ppdC5qaXRDb2RlKCktPmRm
Z0NvbW1vbigpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgeWFyclJlZ2lz
dGVycy5pbmRleCk7CiAgICAgICAgIFlhcnI6OmppdENvbXBpbGVJbmxpbmVkVGVzdCgmbV9ncmFw
aC5tX3N0YWNrQ2hlY2tlciwgcmVnRXhwLT5wYXR0ZXJuKCksIHJlZ0V4cC0+ZmxhZ3MoKSwgWWFy
cjo6Q2hhclNpemU6OkNoYXI4LCAmdm0oKSwgY29tbW9uRGF0YS0+bV9ib3llck1vb3JlRGF0YSwg
bV9qaXQsIHlhcnJSZWdpc3RlcnMpOwogCi0gICAgICAgIGF1dG8gZmFpbGVkTWF0Y2ggPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bTMyKDApKTsKKyAgICAgICAgYXV0byBmYWlsZWRNYXRjaCA9IG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpMZXNzVGhhbiwgeWFyclJlZ2lzdGVycy5yZXR1cm5SZWdpc3RlciwgVHJ1c3Rl
ZEltbTMyKDApKTsKIAogICAgICAgICAvLyAgU2F2ZWQgY2FjaGVkIHJlc3VsdAogI2lmIENQVShY
ODZfNjQpCiAgICAgICAgIGlmIChpbmxpbmVDb2RlU3RhdHM4Qml0Lm5lZWRzVGVtcDIoKSkgewog
ICAgICAgICAgICAgLy8gU2luY2Ugd2UgcmV1c2VkIGdsb2JhbE9iamVjdEdQUiBmb3IgdGVtcDIs
IGxldCdzIHJlc3RvcmUgdGhlIGdsb2JhbCBvYmplY3QuCi0gICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0Q29uc3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihub2RlLT5j
ZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdENvbnN0KSwgZ2xvYmFsT2JqZWN0R1BSKTsK
KyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KG5vZGUtPmNlbGxP
cGVyYW5kKCktPnZhbHVlKCkpKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgfQogI2VuZGlm
CiAKICAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IEpTR2xvYmFsT2JqZWN0OjpyZWdFeHBHbG9i
YWxEYXRhT2Zmc2V0KCkgKyBSZWdFeHBHbG9iYWxEYXRhOjpvZmZzZXRPZkNhY2hlZFJlc3VsdCgp
OwogCi0gICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIHJlZ0V4cCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgb2Zm
c2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOworICAgICAg
ICBtX2ppdC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgcmVnRXhwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BS
LCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4cCgpKSk7CiAg
ICAgICAgIG1faml0LnN0b3JlUHRyKGFyZ3VtZW50R1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0
SW5wdXQoKSkpOwotICAgICAgICBtX2ppdC5zdG9yZTMyKHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9m
ZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkpOwot
ICAgICAgICBtX2ppdC5zdG9yZTMyKHJlc3VsdDJHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGds
b2JhbE9iamVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3Vs
dCgpICsgT0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBlbmQpKSk7CisgICAgICAgIG1faml0
LnN0b3JlMzIoeWFyclJlZ2lzdGVycy5yZXR1cm5SZWdpc3RlciwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9m
UmVzdWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkpOworICAgICAg
ICBtX2ppdC5zdG9yZTMyKHlhcnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIyLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6
b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgZW5kKSkpOwog
ICAgICAgICBtX2ppdC5zdG9yZTgoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhnbG9iYWxPYmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZS
ZWlmaWVkKCkpKTsKIAotICAgICAgICBpZiAoc3dhcFJlZyAhPSBJbnZhbGlkR1BSUmVnKQotICAg
ICAgICAgICAgdW5sb2NrKHN3YXBSZWcpOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
IGRvbmVDYXNlczsKIAotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tMzIoMSksIHRlbXAwR1BSKTsKKyAgICAgICAgZG9uZUNhc2VzLmFwcGVu
ZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIGZhaWxlZE1hdGNoLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdEdQUik7Ci0gICAgICAgIGRv
bmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMy
KDApLCB0ZW1wMEdQUik7CisgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsK
KworICAgICAgICByZXR1cm4gZG9uZUNhc2VzOwogICAgIH07CiAKICAgICBpZiAobm9kZS0+Y2hp
bGQzKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7Ci0gICAgICAgIGFyZ3VtZW50R1BS
ID0gYXJndW1lbnQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50
LmdwcigpOwogICAgICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQzKCksIGFyZ3VtZW50
R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgICAgIHN3YXBSZWdJZk5l
ZWRlZCgpOwotCi0gICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YXJndW1lbnRHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzdHJpbmdJbXBsR1BSKTsK
LSAgICAgICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIHJvcGUgb3IgMTYgYml0LCB3ZSBjYWxsIHRo
ZSBvcGVyYXRpb24uCi0gICAgICAgIG9wZXJhdGlvbkNhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
ZlJvcGVTdHJpbmdJbXBsKHN0cmluZ0ltcGxHUFIpKTsKLSAgICAgICAgb3BlcmF0aW9uQ2FzZXMu
YXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMigKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyaW5nSW1wbEdQUiwg
U3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSksCi0gICAgICAgICAgICBUcnVzdGVkSW1tMzIoU3Ry
aW5nSW1wbDo6ZmxhZ0lzOEJpdCgpKSkpOwotCi0gICAgICAgIHJlZ0V4cFRlc3RJbmxpbmVDYXNl
KCk7Ci0KLSAgICAgICAgb3BlcmF0aW9uQ2FzZXMubGluaygmbV9qaXQpOwotCi0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZywgcmVzdWx0R1BSLCBnbG9iYWxP
YmplY3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKKyAgICAgICAgYXV0byBkb25lQ2FzZXMg
PSByZWdFeHBUZXN0SW5saW5lQ2FzZShhcmd1bWVudEdQUiwgc2xvd0Nhc2VzKTsKIAorICAgICAg
ICBzbG93Q2FzZXMubGluaygmbV9qaXQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blJlZ0V4cFRlc3RTdHJpbmcsIHRlbXAwR1BSLCBnbG9iYWxPYmplY3RHUFIsIGJhc2VHUFIsIGFy
Z3VtZW50R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAotICAgICAgICBk
b25lLmxpbmsoJm1faml0KTsKLSAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwotCisgICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgICAgIHVu
Ymxlc3NlZEJvb2xlYW5SZXN1bHQodGVtcDBHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS0+Y2hpbGQzKCkp
OwotICAgIGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7CisgICAgR1BSUmVnIGFyZ3VtZW50
R1BSID0gYXJndW1lbnQuZ3ByKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgc3dh
cFJlZ0lmTmVlZGVkKCk7Ci0KLSAgICBvcGVyYXRpb25DYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RDZWxsKGFyZ3VtZW50R1BSKSk7Ci0gICAgb3BlcmF0aW9uQ2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90U3RyaW5nKGFyZ3VtZW50R1BSKSk7Ci0KLSAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFyZ3VtZW50R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1
ZSgpKSwgc3RyaW5nSW1wbEdQUik7Ci0gICAgLy8gSWYgdGhlIHN0cmluZyBpcyBhIHJvcGUgb3Ig
MTYgYml0LCB3ZSBjYWxsIHRoZSBvcGVyYXRpb24uCi0gICAgb3BlcmF0aW9uQ2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaElmUm9wZVN0cmluZ0ltcGwoc3RyaW5nSW1wbEdQUikpOwotICAgIG9wZXJh
dGlvbkNhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpaZXJvLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmdJbXBsR1BS
LCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwKLSAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmlu
Z0ltcGw6OmZsYWdJczhCaXQoKSkpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbChhcmd1bWVudEdQUikpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoSWZOb3RTdHJpbmcoYXJndW1lbnRHUFIpKTsKIAotICAgIHJlZ0V4cFRlc3RJbmxpbmVDYXNl
KCk7CisgICAgYXV0byBkb25lQ2FzZXMgPSByZWdFeHBUZXN0SW5saW5lQ2FzZShhcmd1bWVudEdQ
Uiwgc2xvd0Nhc2VzKTsKIAotICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsoJm1faml0KTsKLQotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCwgcmVzdWx0R1BSLCBnbG9iYWxPYmpl
Y3RHUFIsIGJhc2VHUFIsIGFyZ3VtZW50R1BSKTsKLQotICAgIGRvbmUubGluaygmbV9qaXQpOwor
ICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25S
ZWdFeHBUZXN0LCB0ZW1wMEdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQ
Uik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAotICAgIHVuYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOworICAg
IHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQodGVtcDBHUFIsIG5vZGUpOwogfQogI2Vsc2UKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBUZXN0SW5saW5lKE5vZGUqIG5vZGUpCkBAIC0z
NTQ4LDcgKzM1MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAKICAgICAgICAgaWYgKCFzdG9yYWdlRWRnZSkgewogICAgICAgICAgICAgYXV0byBjYWxsU2xv
d1BhdGggPSBbJl0gKCkgewotICAgICAgICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRy
ID0gVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgYXV0byBnbG9i
YWxPYmplY3RJbW1QdHIgPSBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKICAgICAgICAgICAgICAgICBjYXNlIEF0b21p
Y3NBZGQ6CiAgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWlj
c0FkZCwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBh
cmdHUFJzWzBdKTsKQEAgLTM3NTcsNyArMzcxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb3BlcmFuZEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkF0b21pY3NJc0xvY2tGcmVlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcGVyYW5kR1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTM4OTksNyArMzg2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW02NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCB2YWx1ZUdQUikpOwogICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KAotICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3BB
bmRSZWNvdmVyTGVuZ3RoLCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFy
cmF5UG9wQW5kUmVjb3Zlckxlbmd0aCwgdmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFdlIGNhbid0
IGtub3cgZm9yIHN1cmUgdGhhdCB0aGUgcmVzdWx0IGlzIGFuIGludCBiZWNhdXNlIG9mIHRoZSBz
bG93IHBhdGhzLiA6LS8KICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVHUFIsIG5vZGUp
OwpAQCAtMzkzMiw3ICszODkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcCwgdmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uQXJyYXlQb3AsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVlR1BSLCBub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDA1OCw3ICs0MDE5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBJbnN0ZWFkIG9mIHRoZSBz
bG93IHBhdGggZ2VuZXJhdG9yLCB3ZSBlbWl0IGNhbGxPcGVyYXRpb24gaGVyZS4KICAgICAgICAg
aWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiBTcGVjQnl0ZWNv
ZGVOdW1iZXIpKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE51bWJl
ciA9IG1faml0LmJyYW5jaElmTm90TnVtYmVyKGFyZ3VtZW50R1BSKTsKQEAgLTQwNjcsNyArNDAy
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAg
ICAgICAgbm90TnVtYmVyLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvTnVtYmVyLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVu
dEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudEdQUik7CiAgICAg
ICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCkBAIC00NTQzLDcgKzQ1MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdw
cigpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
bm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9u
UHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5
R1BSLCB2YWx1ZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CkBAIC00NjgxLDcgKzQ2NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpc01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0
R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2pp
dC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAg
ICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZS5ncHIoKSwgcmVzdWx0
LmdwcigpKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSKTsgCiAgICAgICAgICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVy
OjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVz
dWx0LmdwcigpKTsKQEAgLTQ4ODYsNyArNDg0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwog
ICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKICAgICAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKQEAgLTQ5MzEsNyArNDg5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKIAogICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgSlNW
YWx1ZVJlZ3MoaW5wdXRHUFIpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBI
YXNoLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVlUmVn
cyhpbnB1dEdQUikpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTUwNzksOSArNTA0MCw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoQ2Fz
ZXMubGluaygmbV9qaXQpOwogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoaW5k
ZXhHUFIpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBP
YmplY3RVc2UpCi0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01hcEZp
bmRCdWNrZXQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwg
a2V5R1BSLCBoYXNoR1BSKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkpTTWFwRmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7Cisg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5R1BSLCBo
YXNoR1BSKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2pp
dC5qdW1wKCkpOwpAQCAtNTA4OSw5ICs1MDUwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIG5vdFByZXNlbnRJblRhYmxlLmxpbmsoJm1faml0
KTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmplY3RVc2Up
Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0
LmdyYXBoKCksIHZtKCkuc2VudGluZWxNYXBCdWNrZXQoKSksIHJlc3VsdEdQUik7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2ppdC5ncmFwaCgpLCB2bSgpLnNlbnRpbmVsTWFwQnVja2V0KCkpLCByZXN1bHRHUFIp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1faml0LmdyYXBoKCksIHZtKCkuc2VudGluZWxTZXRCdWNrZXQoKSksIHJlc3Vs
dEdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCB2bSgpLnNlbnRpbmVsU2V0QnVja2V0
KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTUzOTQsNyArNTM1
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAg
ICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJvcGVy
dHksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUiwga2V5
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBrZXlHUFIp
OwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
VGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcAppbmRl
eCAwYzRkMTk1ZDkxNDg1NzIyOTM4NGU5ODQ4ZDE3OTk0ZGEzOTQxMjZkLi5kZjA4YjUwNWExODAx
MTA5NDFhNmYxMjc0YmZmYTJkOTY5MTgxN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUaHVua3MuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1
ZGUgIlByb2JlQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAK
QEAgLTE0MSw2ICsxNDIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIHB0cmRpZmZfdCBvZmZzZXRPZkZy
YW1lU2l6ZSA9IDA7IC8vIFRoaXMgaXMgdGhlIERGRyBmcmFtZSBjb3VudC4KICAgICBwdHJkaWZm
X3Qgb2Zmc2V0T2ZUYXJnZXRQQyA9IG9mZnNldE9mRnJhbWVTaXplICsgc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKTsKICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZQYXlsb2FkID0gb2Zmc2V0T2ZUYXJnZXRQ
QyArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgcHRyZGlmZl90IG9mZnNldE9mQ29kZUJs
b2NrID0gb2Zmc2V0T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVyKSAqIENhbGxGcmFtZVNsb3Q6
OmNvZGVCbG9jazsKICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZMb2NhbHMgPSBvZmZzZXRPZlBheWxv
YWQgKyBzaXplb2YoUmVnaXN0ZXIpICogQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnM7
CiAgICAgCiAgICAgaml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBHUFJJbmZvOjpy
ZWdUMCk7CkBAIC0xNTEsMTAgKzE1Myw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYgdm0pCiAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkxhYmVsIGxvb3AgPSBqaXQubGFiZWwoKTsKICAgICBqaXQuc3ViUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoMSksIEdQUkluZm86OnJlZ1QxKTsKICAgICBqaXQubmVnUHRyKEdQ
UkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUNCk7Ci0gICAgaml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzRWlnaHQsIG9mZnNldE9mTG9jYWxzKSwgR1BSSW5mbzo6cmVnVDIpOwotICAg
IGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpyZWdUMCwgR1BS
SW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBvZmZzZXRPZkxvY2FscyAr
IHNpemVvZihpbnQzMl90KSksIEdQUkluZm86OnJlZ1QzKTsKLSAgICBqaXQuc3RvcmUzMihHUFJJ
bmZvOjpyZWdUMiwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpKSk7Ci0gICAgaml0LnN0b3JlMzIo
R1BSSW5mbzo6cmVnVDMsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwg
LXN0YXRpY19jYXN0PGludHB0cl90PihzaXplb2YoUmVnaXN0ZXIpKSArIHN0YXRpY19jYXN0PGlu
dHB0cl90PihzaXplb2YoaW50MzJfdCkpKSk7CisgICAgaml0LmxvYWRWYWx1ZShNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSwgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzRWlnaHQsIG9mZnNldE9mTG9jYWxzKSwgSlNWYWx1ZVJlZ3M6OndpdGhUd29B
dmFpbGFibGVSZWdzKEdQUkluZm86OnJlZ1QyLCBHUFJJbmZvOjpyZWdUMykpOworICAgIGppdC5z
dG9yZVZhbHVlKEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVncyhHUFJJbmZvOjpyZWdU
MiwgR1BSSW5mbzo6cmVnVDMpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUNCwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQsIC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICBqaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgR1BSSW5mbzo6cmVnVDEsIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oLXN0YXRpY19jYXN0
PGludHB0cl90PihDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVycykpKSkubGlua1RvKGxv
b3AsICZqaXQpOwogICAgIAogICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwLCBvZmZzZXRPZlRhcmdldFBDKSwgR1BSSW5mbzo6cmVnVDEpOwpAQCAt
MTYyLDggKzE2MiwyMSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9z
ckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIGppdC5hYm9ydFdpdGhSZWFzb24oREZH
VW5yZWFzb25hYmxlT1NSRW50cnlKdW1wRGVzdGluYXRpb24pOwogCiAgICAgb2subGluaygmaml0
KTsKKworICAgIGppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwLCBvZmZzZXRPZkNvZGVCbG9jayksIEdQUkluZm86OnJlZ1QyKTsKKyAgICBqaXQuZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKEdQUkluZm86OnJlZ1QyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2spOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgaml0LnByb2JlRGVidWcoWz1dKFByb2JlOjpD
b250ZXh0JiBjdHgpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8Q2Fs
bEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6
OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmppdFR5cGUoKSkpOworICAgIH0pOworI2VuZGlm
CisKICAgICBqaXQucmVzdG9yZUNhbGxlZVNhdmVzRnJvbUVudHJ5RnJhbWVDYWxsZWVTYXZlc0J1
ZmZlcih2bS50b3BFbnRyeUZyYW1lKTsKICAgICBqaXQuZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tS
ZWdpc3RlcnMoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMiwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEo
KSksIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyNlbmRpZgogCiAgICAgaml0LmZhckp1
bXAoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IDAyNGRkZjBh
ZjY3NzJiODVjZjQ2NDllOWJhYjI0ZmM0ODY0MGU1OTYuLjQ1ODhhMWU1MzIzZWZhYzZjOTBjNjA5
Y2E0Mjc4YTQzMWExNjA0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAKQEAgLTQ1LDE0ICs0NSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1F
eGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotewotICAgIGF1dG8qIGlu
bGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIHJldHVybiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpOwotICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKTsKLX0KLQogQXNzZW1ibHlIZWxwZXJzOjpKdW1wIEFzc2VtYmx5SGVscGVy
czo6YnJhbmNoSWZGYXN0VHlwZWRBcnJheShHUFJSZWcgYmFzZUdQUikKIHsKICAgICByZXR1cm4g
YnJhbmNoMzIoCkBAIC0xMzc0LDYgKzEzNjYsMjIgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXRTYXZlT3JDb3B5TExJbnRCYXNlbGluZUNhbGxlZVNhdmVzRm9yKENvZGVCbG9jayogY29kZUIK
ICAgICBzcG9vbGVyLmZpbmFsaXplR1BSKCk7CiB9CiAKK3ZvaWQgQXNzZW1ibHlIZWxwZXJzOjpl
bWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCwgYm9vbCBpc0Nv
bnN0cnVjdG9yKQoreworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFt
ZVNsb3Q6OmNhbGxlZSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCByZXN1bHQpOworICAgIGF1
dG8gaGFzRXhlY3V0YWJsZSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVzdWx0LCBUcnVzdGVkSW1t
MzIoSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkV4ZWN1dGFibGUoKSAtIEpTRnVuY3Rpb246OnJh
cmVEYXRhVGFnKSwgcmVzdWx0KTsKKyAgICBoYXNFeGVjdXRhYmxlLmxpbmsodGhpcyk7CisgICAg
aWYgKGlzQ29uc3RydWN0b3IpCisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3QoKSksIHJlc3VsdCk7
CisgICAgZWxzZQorICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1
dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0KTsKKworICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6Om9mZnNldE9mQ29k
ZUJsb2NrKCkpLCByZXN1bHQpOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXN1bHQs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCmluZGV4IDI3ZGQ1OTc5MGI3MWY5OGEyMTdiMTI1ODc3Njc3MTY1YWM2OGVlMGMu
Ljk4YjNjMzVlOGE4NWU2NDk4NjVlZTMwMjllZjY1ZGYxZDAyZGNkOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaApAQCAtNDA1LDYgKzQwNSw4IEBAIGNs
YXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAjZW5kaWYKICAg
ICB9CiAKKyAgICB2b2lkIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcg
cmVzdWx0LCBib29sIGlzQ29uc3RydWN0b3IpOworCiAjaWYgQ1BVKFg4Nl82NCkKICAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBwcm9sb2d1ZVN0YWNrUG9pbnRlckRlbHRhKCkKICAgICB7CkBA
IC0xNTUwLDEzICsxNTUyLDYgQEAgY2xhc3MgQXNzZW1ibHlIZWxwZXJzIDogcHVibGljIE1hY3Jv
QXNzZW1ibGVyIHsKICAgICB2b2lkIGNsZWFyU2FtcGxpbmdGbGFnKGludDMyX3QgZmxhZyk7CiAj
ZW5kaWYKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbik7Ci0gICAgfQotICAgIAotICAgIEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlRm9yKENvZGVCbG9jayosIGNvbnN0IENvZGVPcmlnaW4mKTsKLSAgICAKICAgICBDb2Rl
QmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4p
CiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNl
bGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jaygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDY4N2VmZGIwMGVhYzdkMTg1OWU2
OTcxNTM5ZGYwYWE1ZWQzOThhNzUuLmE2NTI1ZjYwYjMwODVjMjY3NDVmYjJjZTc1MTM3NGZlMjU3
YjkyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtNjks
NiArNjksMTAgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7
CiAgICAgICAgIEdQUlJlZyBtX2dwcjsKICAgICB9OwogCisgICAgLy8gQmFzZSBjbGFzcyBmb3Ig
Y29uc3RhbnQgbWF0ZXJpYWxpemVycy4KKyAgICAvLyBJdCBvZmZlcnMgRGVyaXZlZENsYXNzOjpt
YXRlcmlhbGl6ZSBhbmQgcG9rZSBmdW5jdGlvbnMuCisgICAgY2xhc3MgQ29uc3RhbnRNYXRlcmlh
bGl6ZXIgeyB9OworCiAgICAgLy8gVGhlIG1vc3QgZ2VuZXJhbCBoZWxwZXIgZm9yIHNldHRpbmcg
YXJndW1lbnRzIHRoYXQgZml0IGluIGEgR1BSLCBpZiB5b3UgY2FuIGNvbXB1dGUgZWFjaAogICAg
IC8vIGFyZ3VtZW50IHdpdGhvdXQgdXNpbmcgYW55IGFyZ3VtZW50IHJlZ2lzdGVycy4gWW91IHVz
dWFsbHkgd2FudCBvbmUgb2YgdGhlIHNldHVwQXJndW1lbnRzKigpCiAgICAgLy8gbWV0aG9kcyBi
ZWxvdyBpbnN0ZWFkIG9mIHRoaXMuIFRoaXMgdGhpbmcgaXMgbW9zdCB1c2VmdWwgaWYgeW91IGhh
dmUgKmEgbG90KiBvZiBhcmd1bWVudHMuCkBAIC0zNjUsNyArMzY5LDEwIEBAIGNsYXNzIENDYWxs
SGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBwb2tlRm9yQXJndW1lbnQoQXJnVHlwZSBhcmcsIHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVu
dCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMs
IHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0
cmFQb2tlKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgcG9rZU9mZnNldCA9IGNhbGN1bGF0ZVBv
a2VPZmZzZXQoY3VycmVudEdQUkFyZ3VtZW50LCBjdXJyZW50RlBSQXJndW1lbnQsIG51bUNyb3Nz
U291cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOwotICAgICAgICBw
b2tlKGFyZywgcG9rZU9mZnNldCk7CisgICAgICAgIGlmIGNvbnN0ZXhwciAoc3RkOjppc19iYXNl
X29mX3Y8Q29uc3RhbnRNYXRlcmlhbGl6ZXIsIEFyZ1R5cGU+KQorICAgICAgICAgICAgYXJnLnBv
a2UoKnRoaXMsIGFkZHJlc3NGb3JQb2tlKHBva2VPZmZzZXQpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBzdGFja0FsaWduZWQodW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50LCB1bnNpZ25l
ZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQg
ZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UpCkBA
IC02NDcsNiArNjU0LDI3IEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhl
bHBlcnMgewogICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291
cmNlUmVncywgVHJ1c3RlZEltbVB0cihhcmcuZ2V0KCkpLCBhcmdzLi4uKTsKICAgICB9CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcGVyYXRpb25UeXBlLCB1bnNpZ25lZCBudW1HUFJBcmdzLCB1
bnNpZ25lZCBudW1HUFJTb3VyY2VzLCB1bnNpZ25lZCBudW1GUFJBcmdzLCB1bnNpZ25lZCBudW1G
UFJTb3VyY2VzLCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJn
cywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlLCB0eXBlbmFtZSBBcmcs
IHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgQUxXQVlTX0lOTElORSBzdGQ6OmVuYWJsZV9pZl90PHN0
ZDo6aXNfYmFzZV9vZl92PENvbnN0YW50TWF0ZXJpYWxpemVyLCBBcmc+PgorICAgIHNldHVwQXJn
dW1lbnRzSW1wbChBcmdDb2xsZWN0aW9uPG51bUdQUkFyZ3MsIG51bUdQUlNvdXJjZXMsIG51bUZQ
UkFyZ3MsIG51bUZQUlNvdXJjZXMsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2U+IGFyZ1NvdXJjZVJlZ3MsIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykK
KyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8Q1VS
UkVOVF9BUkdVTUVOVF9UWVBFPjo6dmFsdWUsICJXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBm
bG9hdHMvZG91YmxlcyBpbiBzZXR1cEFyZ3VtZW50cyIpOworICAgICAgICBhdXRvIG51bUFyZ1Jl
Z2lzdGVycyA9IEdQUkluZm86Om51bWJlck9mQXJndW1lbnRSZWdpc3RlcnM7CisjaWYgT1MoV0lO
RE9XUykgJiYgQ1BVKFg4Nl82NCkKKyAgICAgICAgYXV0byBjdXJyZW50QXJnQ291bnQgPSBudW1H
UFJBcmdzICsgbnVtRlBSQXJncyArIChzdGQ6OmlzX3NhbWU8UkVTVUxUX1RZUEUsIFNsb3dQYXRo
UmV0dXJuVHlwZT46OnZhbHVlID8gMSA6IDApOworI2Vsc2UKKyAgICAgICAgYXV0byBjdXJyZW50
QXJnQ291bnQgPSBudW1HUFJBcmdzICsgZXh0cmFHUFJBcmdzOworI2VuZGlmCisgICAgICAgIGlm
IChjdXJyZW50QXJnQ291bnQgPCBudW1BcmdSZWdpc3RlcnMpIHsKKyAgICAgICAgICAgIHNldHVw
QXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3VyY2VSZWdzLmFkZEdQUkFyZygpLCBh
cmdzLi4uKTsKKyAgICAgICAgICAgIGFyZy5tYXRlcmlhbGl6ZSgqdGhpcywgR1BSSW5mbzo6dG9B
cmd1bWVudFJlZ2lzdGVyKGN1cnJlbnRBcmdDb3VudCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgcG9rZUZvckFyZ3VtZW50KGFyZywgbnVtR1BSQXJncywgbnVt
RlBSQXJncywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJh
UG9rZSk7CisgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLmFkZEdQUkFyZygpLCBhcmdzLi4uKTsKKyAgICB9CisKICN1bmRlZiBDVVJSRU5UX0FS
R1VNRU5UX1RZUEUKICN1bmRlZiBSRVNVTFRfVFlQRQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BS
SW5mby5oCmluZGV4IDAwMjJiZDliOTg1OTVhODMwYzFlZTA5NTZmODEwODNlZDQ3ODFlODYuLjY3
ZTQ3YjNjNmM2ZjYwZmIwMTU4ZmFjOGYxOWU3MDJlZGE3ZTE1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oCkBAIC00MjAsMTMgKzQyMCwxNCBAQCBjbGFzcyBHUFJJbmZvIHsKIGNs
YXNzIEdQUkluZm8gewogcHVibGljOgogICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsK
LSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTE7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDEwOwogICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IE5V
TUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlM7CiAKICAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0
Y2ggdGhlIGJhc2VsaW5lIEpJVC4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJh
bWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIG51bWJlclRhZ1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTQ7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNvbnN0YW50c1JlZ2lzdGVyID0gWDg2UmVnaXN0
ZXJzOjpyMTM7CiAKICAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ1QwID0gWDg2UmVnaXN0ZXJzOjplYXg7CkBAIC00NTAsMTYgKzQ1MSwx
NiBAQCBjbGFzcyBHUFJJbmZvIHsKIAogI2lmICFPUyhXSU5ET1dTKQogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTMSA9IFg4NlJlZ2lzdGVyczo6cjEyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTMiA9IFg4NlJlZ2lzdGVyczo6cjEzOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTMyA9IFg4NlJlZ2lzdGVyczo6cjE0OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTNCA9IFg4NlJlZ2lzdGVyczo6cjE1OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTMiA9IFg4NlJlZ2lzdGVyczo6cjEzOyAvLyBjb25zdGFudHNSZWdp
c3RlcgorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMyA9IFg4NlJlZ2lzdGVyczo6
cjE0OyAvLyBudW1iZXJUYWdSZWdpc3RlcgorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJl
Z0NTNCA9IFg4NlJlZ2lzdGVyczo6cjE1OyAvLyBub3RDZWxsTWFza1JlZ2lzdGVyCiAjZWxzZQog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9IFg4NlJlZ2lzdGVyczo6ZXNpOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMiA9IFg4NlJlZ2lzdGVyczo6ZWRpOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMyA9IFg4NlJlZ2lzdGVyczo6cjEyOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNCA9IFg4NlJlZ2lzdGVyczo6cjEzOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IFg4NlJlZ2lzdGVyczo6cjE0Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNiA9IFg4NlJlZ2lzdGVyczo6cjE1Owor
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNCA9IFg4NlJlZ2lzdGVyczo6cjEzOyAv
LyBjb25zdGFudHNSZWdpc3RlcgorICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9
IFg4NlJlZ2lzdGVyczo6cjE0OyAvLyBudW1iZXJUYWdSZWdpc3RlcgorICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTNiA9IFg4NlJlZ2lzdGVyczo6cjE1OyAvLyBub3RDZWxsTWFza1Jl
Z2lzdGVyCiAjZW5kaWYKIAogICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1l
cyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3Rl
cnMuCkBAIC00OTcsOSArNDk4LDkgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgewogICAgICAgICBB
U1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CiAjaWYgIU9TKFdJTkRPV1MpCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVy
c10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCBy
ZWdUNywgcmVnQ1MwLCByZWdDUzEsIHJlZ0NTMiB9OworICAgICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEs
IHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ0NTMCwgcmVnQ1Mx
IH07CiAjZWxzZQotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhb
bnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQs
IHJlZ1Q1LCByZWdDUzAsIHJlZ0NTMSwgcmVnQ1MyLCByZWdDUzMsIHJlZ0NTNCB9OworICAgICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNd
ID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdDUzAsIHJl
Z0NTMSwgcmVnQ1MyLCByZWdDUzMgfTsKICNlbmRpZgogICAgICAgICByZXR1cm4gcmVnaXN0ZXJG
b3JJbmRleFtpbmRleF07CiAgICAgfQpAQCAtNjM0LDYgKzYzNSw3IEBAIGNsYXNzIEdQUkluZm8g
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gQVJNNjRS
ZWdpc3RlcnM6OmZwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG51bWJlclRhZ1JlZ2lz
dGVyID0gQVJNNjRSZWdpc3RlcnM6OngyNzsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBu
b3RDZWxsTWFza1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngyODsKKyAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBjb25zdGFudHNSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgZGF0YVRlbXBSZWdpc3RlciA9IE1hY3JvQXNzZW1i
bGVyOjpkYXRhVGVtcFJlZ2lzdGVyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1lbW9y
eVRlbXBSZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjptZW1vcnlUZW1wUmVnaXN0ZXI7CiAgICAg
Ly8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KQEAgLTY2MCw3ICs2NjIsNyBAQCBjbGFzcyBHUFJJbmZv
IHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBBUk02NFJlZ2lzdGVyczo6
eDIzOyAvLyBVc2VkIGJ5IEZUTCBvbmx5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVn
Q1M1ID0gQVJNNjRSZWdpc3RlcnM6OngyNDsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNiA9IEFSTTY0UmVnaXN0ZXJzOjp4MjU7Ci0gICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKKyAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBBUk02NFJlZ2lzdGVyczo6eDI2OyAvLyBj
b25zdGFudHMKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzggPSBBUk02NFJlZ2lz
dGVyczo6eDI3OyAvLyBudW1iZXJUYWcKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdD
UzkgPSBBUk02NFJlZ2lzdGVyczo6eDI4OyAvLyBub3RDZWxsTWFzawogICAgIC8vIFRoZXNlIGNv
bnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVu
dCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCkBAIC03NzcsNyArNzc5LDcgQEAgY2xhc3MgR1BS
SW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVn
VDE7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BS
ID0gcmVnVDI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MwID0gTUlQU1JlZ2lz
dGVyczo6czA7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxID0gTUlQU1JlZ2lz
dGVyczo6czE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxID0gTUlQU1JlZ2lz
dGVyczo6czE7IC8vIGNvbnN0YW50cwogCiAgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVu
c2lnbmVkIGluZGV4KQogICAgIHsKQEAgLTgzMiw2ICs4MzQsNyBAQCBjbGFzcyBHUFJJbmZvIHsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFJJU0NWNjRS
ZWdpc3RlcnM6OmZwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG51bWJlclRhZ1JlZ2lz
dGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI1OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IG5vdENlbGxNYXNrUmVnaXN0ZXIgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjY7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4
MjQ7CiAKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdUMCA9IFJJU0NWNjRSZWdpc3Rl
cnM6OngxMDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdUMSA9IFJJU0NWNjRSZWdp
c3RlcnM6OngxMTsKQEAgLTg1NCw3ICs4NTcsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjE7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDIyOwog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNiA9IFJJU0NWNjRSZWdpc3RlcnM6Ongy
MzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBSSVNDVjY0UmVnaXN0ZXJz
Ojp4MjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gUklTQ1Y2NFJlZ2lz
dGVyczo6eDI0OyAvLyBjb25zdGFudHMKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdD
UzggPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjU7IC8vIG51bWJlclRhZwogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHJlZ0NTOSA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNjsgLy8gbm90Q2VsbE1h
c2sKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEwID0gUklTQ1Y2NFJlZ2lzdGVy
czo6eDI3OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGU5YzBlY2MzMGVhY2M2OGM1
NTlmOGFjNDYzZTEwNjIyMzFkZGViNmEuLmZlNmUyNjc5MGNkNzU5NDlkZDQ3ZjQzNWI0YjM4OTVh
ZjM5NDc1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIwNSwxOSArMjA1LDcg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93Q2FzZUNhbGwoVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYgaXRlciwgU2xvd1BhdGhGdW5jdGkKIHZvaWQgSklUOjplbWl0UHV0Q29kZUJsb2NrVG9G
cmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3Vu
bGlua2VkQ29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7Ci0gICAgZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlLCByZXN1bHQpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEpTRnVuY3Rpb246Om9mZnNldE9mRXhlY3V0YWJs
ZU9yUmFyZURhdGEoKSksIHJlc3VsdCk7Ci0gICAgYXV0byBoYXNFeGVjdXRhYmxlID0gYnJhbmNo
VGVzdFB0cihaZXJvLCByZXN1bHQsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTRnVuY3Rp
b246OnJhcmVEYXRhVGFnKSk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25S
YXJlRGF0YTo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyks
IHJlc3VsdCk7Ci0gICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOwotICAgIGlmIChtX3VubGlu
a2VkQ29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkpCi0gICAgICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZXN1bHQsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6b2Zmc2V0T2ZDb2RlQmxvY2tGb3JDb25zdHJ1Y3Qo
KSksIHJlc3VsdCk7Ci0gICAgZWxzZQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBG
dW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ2FsbCgpKSwgcmVzdWx0KTsK
LQotICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6
Om9mZnNldE9mQ29kZUJsb2NrKCkpLCByZXN1bHQpOwotICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhl
YWRlcihyZXN1bHQsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7Ci0KKyAgICBBc3NlbWJseUhl
bHBlcnM6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShyZXN1bHQsIG1fdW5saW5r
ZWRDb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBw
cm9iZURlYnVnKFs9XSAoUHJvYmU6OkNvbnRleHQmIGN0eCkgewogICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKQEAgLTI3NCw3
ICsyNjIsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIGlm
IChvcGNvZGVJRCAhPSBvcF9jYXRjaCkgewogICAgICAgICAgICAgbG9hZFB0cihhZGRyZXNzRm9y
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKICAgICAgICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk1ldGFkYXRhVGFibGUoKSksIHJlZ1Qx
KTsKLSAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkJhc2VsaW5lSklURGF0YSgpKSwgcmVnVDIpOworICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNz
KHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURGF0YSgpKSwgcmVnVDIpOwogCiAgICAgICAg
ICAgICBhdXRvIG1ldGFkYXRhT0sgPSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QxLCBzX21ldGFkYXRh
R1BSKTsKICAgICAgICAgICAgIGJyZWFrcG9pbnQoKTsKQEAgLTY5OCw3ICs2ODYsNyBAQCB2b2lk
IEpJVDo6ZW1pdE1hdGVyaWFsaXplTWV0YWRhdGFBbmRDb25zdGFudFBvb2xSZWdpc3RlcnMoKQog
ewogICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdU
MCk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRh
dGFUYWJsZSgpKSwgc19tZXRhZGF0YUdQUik7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBD
b2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURGF0YSgpKSwg
c19jb25zdGFudHNHUFIpOwogfQogCiB2b2lkIEpJVDo6ZW1pdFNhdmVDYWxsZWVTYXZlcygpCkBA
IC03NjcsNyArNzU1LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXpp
bmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogCiAgICAgZW1pdEZ1bmN0aW9uUHJvbG9n
dWUoKTsKICAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlv
bkNvZGUpCi0gICAgICAgIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSgpOworICAg
ICAgICBlbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUocmVnVDApOwogCiAgICAgTGFi
ZWwgYmVnaW5MYWJlbCh0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYjhmZGE1
ZDFiNDMxNWU5ZjdkNzA0YzQ2YWFhNWE1YjFiYjAzNDRmYi4uYjEzMGUzZWM5NmZmOGJlZTMxMzE0
YTFiMGRjODk0MWUwMTMxMDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0yNjIsNyAr
MjYyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbG9hZENvZGVCbG9ja0NvbnN0
YW50VGFnKFZpcnR1YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCk7CiAjZW5kaWYKIAotICAgICAgICB2
b2lkIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJSZWcgcmVzdWx0ID0gcmVn
VDApOworICAgICAgICB2b2lkIGVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJS
ZWcgcmVzdWx0KTsKIAogICAgICAgICB2b2lkIGV4Y2VwdGlvbkNoZWNrKEp1bXAganVtcFRvSGFu
ZGxlcikKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
aW5kZXggNWI4NWM3YWM1MTdhNzAyZGNmZDdhNjJlZGYwOTIxMWEzZDVkMzMzZS4uNDRjMTJkOGQ2
OTI0Mjk0YTA1ODhmYzQ2MmVmNTgyOTI1MmI4MWQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMDI1LDcgKzEwMjUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9jYXRjaChjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8g
U28gd2UgcmVwbGVuaXNoIGl0IGhlcmUuCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwotICAgICAgICBsb2FkUHRyKEFk
ZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHNfY29u
c3RhbnRzR1BSKTsKKyAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9m
ZnNldE9mSklURGF0YSgpKSwgc19jb25zdGFudHNHUFIpOwogICAgIH0KIAogICAgIGNhbGxPcGVy
YXRpb25Ob0V4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvblJldHJpZXZlQW5kQ2xlYXJFeGNlcHRpb25J
ZkNhdGNoYWJsZSwgJnZtKCkpOwpAQCAtMTA0Niw2ICsxMDQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfY2F0Y2goY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAg
Y2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNo
QW5kVmFsdWVQcm9maWxlLCAmdm0oKSwgbV9ieXRlY29kZUluZGV4LmFzQml0cygpKTsKICAgICBh
dXRvIHNraXBPU1JFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0dXJuVmFsdWVHUFIpOwor
ICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXR1cm5WYWx1ZUdQUjIsIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayk7CiAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIGZhckp1
bXAocmV0dXJuVmFsdWVHUFIsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcpOwogICAgIHNraXBPU1JF
bnRyeS5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggZWZjOWEwZThiYjAyZTIyNTgxMTg0NjIzZDEwNjBhODkzNWNkZjJhMS4uNWI1
ZGE3OGRiYTcxNTYyMzEyZTk3MDY3ZjQ2N2I0NTczOTA4NGEyMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMDU2LDcgKzIwNTYsNyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT3B0aW1pemUsIFNsb3dQYXRoUmV0dXJuVHlw
ZSwgKFZNKiB2bVBvaW50ZXIsCiAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxs
cHRyKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVy
QXRDYXRjaCwgY2hhciosIChWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlY29kZUluZGV4Qml0
cykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNo
QW5kVmFsdWVQcm9maWxlLCBTbG93UGF0aFJldHVyblR5cGUsIChWTSogdm1Qb2ludGVyLCB1aW50
MzJfdCBieXRlY29kZUluZGV4Qml0cykpCiB7CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERFQ0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDY2
LDM3ICsyMDY2LDEzIEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JF
bnRlckF0Q2F0Y2gsIGNoYXIqLCAoVk0qIHZtUG9pbnRlciwgdWluCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIENvZGVCbG9jayogb3B0aW1p
emVkUmVwbGFjZW1lbnQgPSBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCk7CiAgICAgaWYgKFVOTElL
RUxZKCFvcHRpbWl6ZWRSZXBsYWNlbWVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgc3dpdGNoIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0VHlwZSgpKSB7Ci0gICAgY2FzZSBK
SVRUeXBlOjpERkdKSVQ6Ci0gICAgY2FzZSBKSVRUeXBlOjpGVExKSVQ6IHsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWc+IGVudHJ5ID0gREZHOjpw
cmVwYXJlQ2F0Y2hPU1JFbnRyeSh2bSwgY2FsbEZyYW1lLCBjb2RlQmxvY2ssIG9wdGltaXplZFJl
cGxhY2VtZW50LCBieXRlY29kZUluZGV4KTsKLSAgICAgICAgcmV0dXJuIGVudHJ5LmV4ZWN1dGFi
bGVBZGRyZXNzPGNoYXIqPigpOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUpTQ19ERUZJTkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUsIGNoYXIqLCAoVk0q
IHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpKQotewotICAgIFZNJiB2bSA9
ICp2bVBvaW50ZXI7Ci0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJB
TUUodm0pOwotICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgY2FsbEZyYW1lKTsKLSAgICBCeXRlY29kZUluZGV4IGJ5dGVjb2RlSW5kZXggPSBCeXRlY29k
ZUluZGV4Ojpmcm9tQml0cyhieXRlY29kZUluZGV4Qml0cyk7Ci0KLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgQ29kZUJsb2NrKiBvcHRpbWl6
ZWRSZXBsYWNlbWVudCA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKLSAgICBpZiAoVU5MSUtF
TFkoIW9wdGltaXplZFJlcGxhY2VtZW50KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBzd2l0Y2gg
KG9wdGltaXplZFJlcGxhY2VtZW50LT5qaXRUeXBlKCkpIHsKICAgICBjYXNlIEpJVFR5cGU6OkRG
R0pJVDoKICAgICBjYXNlIEpJVFR5cGU6OkZUTEpJVDogewogICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8RXhjZXB0aW9uSGFuZGxlclB0clRhZz4gZW50cnkgPSBERkc6OnByZXBhcmVDYXRj
aE9TUkVudHJ5KHZtLCBjYWxsRnJhbWUsIGNvZGVCbG9jaywgb3B0aW1pemVkUmVwbGFjZW1lbnQs
IGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICByZXR1cm4gZW50cnkuZXhlY3V0YWJsZUFkZHJlc3M8
Y2hhcio+KCk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoZW50cnkuZXhlY3V0YWJsZUFk
ZHJlc3M8Y2hhcio+KCksIG9wdGltaXplZFJlcGxhY2VtZW50KTsKICAgICB9CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CkBAIC0yMTA5LDcgKzIwODUsNyBAQCBKU0NfREVGSU5FX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBjaGFy
KiwgKFZNKgogICAgICAgICBwcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShj
YWxsRnJhbWUtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAg
fSk7CiAKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxw
dHIsIG51bGxwdHIpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgKaW5kZXggMmE1OWY2NGU4ODVhZDVhMjVlMTg2NzJmOTZjM2RkNWJiODY1YmQw
Zi4uYzVjZTU4ZGVmZjk4ZWViNmFmYWNjNDZjZGIxZTgzNjgxNzY0ZWUzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTI1OSw4ICsyNTksNyBAQCBKU0Nf
REVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRocm93LCB2b2lkLCAoSlNHbG9iYWxPYmpl
Y3QqLCBFbmNvZGVkSlNWYWx1ZQogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25E
ZWJ1Zywgdm9pZCwgKFZNKiwgaW50MzJfdCkpOwogI2lmIEVOQUJMRShERkdfSklUKQogSlNDX0RF
Q0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PcHRpbWl6ZSwgU2xvd1BhdGhSZXR1cm5UeXBl
LCAoVk0qLCB1aW50MzJfdCkpOwotSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVyYXRpb25U
cnlPU1JFbnRlckF0Q2F0Y2gsIGNoYXIqLCAoVk0qLCB1aW50MzJfdCkpOwotSlNDX0RFQ0xBUkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUs
IGNoYXIqLCAoVk0qLCB1aW50MzJfdCkpOworSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUsIFNsb3dQYXRoUmV0dXJuVHlw
ZSwgKFZNKiwgdWludDMyX3QpKTsKICNlbmRpZgogSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25QdXRHZXR0ZXJCeUlkLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqLCBKU0NlbGwqLCBV
bmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlNDZWxsKikpOwogSlNDX0RFQ0xB
UkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRTZXR0ZXJCeUlkLCB2b2lkLCAoSlNHbG9iYWxP
YmplY3QqLCBKU0NlbGwqLCBVbmlxdWVkU3RyaW5nSW1wbCosIGludDMyX3Qgb3B0aW9ucywgSlND
ZWxsKikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcAppbmRleCAz
OGM2Nzk0OWZkZGYwNzNhODhmYTU1ODI5NzJjOTI1YzE2MWNkZWQ0Li4xYzMxMjc1NGQwYzM5YTIx
YWI2MDBkNzZlYTVjOTVkNTllY2RjNmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
Z2lzdGVyU2V0LmNwcApAQCAtMjAwLDE2ICsyMDAsMTggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJT
ZXQ6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICNlbGlmIENQVShYODZfNjQp
CiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MyID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lz
dGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BS
SW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxzZQogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86
OnJlZ0NTNCA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0
ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAgICBzdGF0aWNfYXNzZXJ0
KEdQUkluZm86OnJlZ0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIsICIiKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzYpOwogI2VuZGlmCkBAIC0yMTgsOSArMjIwLDEwIEBAIFJlZ2lz
dGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwogI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUo
UklTQ1Y2NCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CisgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdDUzcgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7Ci0gICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbHNlCkBAIC0yMzYsMTcgKzIz
OSwyMCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
CiAjZWxpZiBDUFUoWDg2XzY0KQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzIpOwogI2lmICFPUyhXSU5ET1dTKQotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVn
Q1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MyID09IEdQUkluZm86OmNvbnN0YW50c1Jl
Z2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxzZQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1My
KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CisgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
KyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7Ci0gICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRpZgpAQCAtMjU0LDggKzI2MCwxMCBA
QCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MxKTsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCi0gICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzcgPT0gR1BSSW5m
bzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4
ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbHNlCkBAIC0yNzIsOCArMjgwLDgg
QEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MwKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTMSk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOwotICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0g
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlciwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NT
NCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwogI2VsaWYgQ1BV
KEFSTTY0KQpAQCAtMjg2LDggKzI5NCw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxD
YWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M3KTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5
ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
cik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1M5KTsKICAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MwKTsKQEAgLTMw
Nyw4ICszMTUsOCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lz
dGVycygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7Ci0gICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdD
UzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuaAppbmRleCBjMDMzM2QzNDJiMDliMDMwNDAxMGY0NDYyODQzZmMwODk0
ODI5ZWU0Li4xNTExNWVlMDdkMjRmMTRiZWU2ZGJhZmU2MjI2MmM2ODAyNDUwMjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCkBAIC0zOTUsMTMgKzM5NSwxMyBAQCBz
dHJ1Y3QgUmVnaXN0ZXJzIHsKIAogI2lmIENQVShYODZfNjQpICYmICFPUyhXSU5ET1dTKQogICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdD
UzE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzI7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZvOjpjb25zdGFudHNS
ZWdpc3RlcjsKICNlbGlmIENQVShYODZfNjQpICYmIE9TKFdJTkRPV1MpCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJlZ0NTMzsKLSAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NTNDsKKyAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyOwog
I2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1M2OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1M3OworICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXI7CiAjZWxpZiBDUFUo
TUlQUykgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWV0
YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJlZ0NTMDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NTMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBhOGU3YzczOTlkNTgxYTU5
NjBkMGFhN2FhNzI0MzM1ZGIwMzU0Yzc1Li4xM2IxNzhjZmNkNzM2YjA4ZjY0YzkxODI0ZDAyYTAy
N2EwMzkwY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNjI1LDcgKzI2MjUsNyBAQCBpZiBKSVQKICAgICBtYWNy
byBsb2FkQmFzZWxpbmVKSVRDb25zdGFudFBvb2woKQogICAgICAgICAjIEJhc2VsaW5lIHVzZXMg
TExJbnQncyBQQiByZWdpc3RlciBmb3IgaXRzIEpJVCBjb25zdGFudCBwb29sLgogICAgICAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKLSAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Jhc2Vs
aW5lSklURGF0YVtQQl0sIFBCCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9qaXREYXRhW1BC
XSwgUEIKICAgICBlbmQKIAogICAgIG1hY3JvIHNldHVwUmV0dXJuVG9CYXNlbGluZUFmdGVyQ2hl
Y2twb2ludEV4aXRJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCBkOWRhMWU0NjZiOWM5ODdkNzYzMTBhMmE2NzM5ODM3NTY3
MTRkMzExLi5mNDcwMGQ2NmVhMDhkNzZlNDYwZGEzNGY1ZTdlZjU1NTU5YmFhMGIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTkyMSw2
ICs5MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBSZWdFeHBHbG9iYWxEYXRhJiByZWdFeHBHbG9iYWxEYXRhKCkgeyBy
ZXR1cm4gbV9yZWdFeHBHbG9iYWxEYXRhOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCByZWdFeHBH
bG9iYWxEYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0
LCBtX3JlZ0V4cEdsb2JhbERhdGEpOyB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9m
R2xvYmFsVGhpcygpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9n
bG9iYWxUaGlzKTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV92bSk7IH0KICAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2dsb2JhbExleGljYWxFbnZpcm9ubWVudCk7IH0K
ICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455076</attachid>
            <date>2022-03-18 01:31:53 -0700</date>
            <delta_ts>2022-04-05 00:30:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220318013152.patch</filename>
            <type>text/plain</type>
            <size>294345</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZmI5ZDM3ZDg1YWQ3OGQxMzI4YWYzY2FlNzUyZDE0OWRkMDM0ODg5Li42ZThiNmMyMTNkNmRhYzhh
OWViNGE3NmFiNmM2MDYwMDgxOWY4Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDggQEAKKzIwMjItMDMtMTggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJSSVNDVjY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVND
VjY0Ojp0cmFuc2ZlclB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6
YnJhbmNoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmJyYW5jaFB0
cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRyYW5zZmVyUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmJyYW5jaFB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmFsaXplSklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dERGR0pJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVFbnRyeSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lzdGVyc0ZvckVu
dHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om1hdGVyaWFs
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6
cG9rZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OmJyYW5jaFVubGlua2VkQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcv
REZHSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5hbGl6ZXI6OmZp
bmFsaXplKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6YWRkVW5saW5rZWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Zmlu
YWxpemVKSVREYXRhKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9E
RkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmVtaXRHZXRDYWxsZWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxl
bnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlbGV0
ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5CeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3BlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJDYXNlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jayk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1RyYXBzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnRpZ3VvdXNQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQ
dXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZy
b21DaGFyQ29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjpU
cnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9w
ZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoVW5saW5rZWRDb25zdGFudCk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xlYW4pOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUmFuZG9tKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRH
ZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxs
T3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdU
aHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmVtaXRQdXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcik6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6Omds
b2JhbE9iamVjdEZvcik6IERlbGV0ZWQuCisgICAgICAgICogaml0L0NDYWxsSGVscGVycy5oOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnBva2VGb3JBcmd1bWVudCk6CisgICAgICAgIChK
U0M6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNJbXBsKToKKyAgICAgICAgKiBqaXQvR1BS
SW5mby5oOgorICAgICAgICAoSlNDOjpHUFJJbmZvOjp0b1JlZ2lzdGVyKToKKyAgICAgICAgKiBq
aXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0UHV0Q29kZUJsb2NrVG9GcmFtZUlu
UHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRNYXRlcmlhbGl6ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29s
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5h
bGl6aW5nKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAgICAgICAqIGppdC9K
SVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9SZWdpc3Rl
clNldC5jcHA6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVl
U2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZl
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdp
c3RlcnMpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om9mZnNldE9mR2xvYmFsVGhpcyk6CisK
IDIwMjItMDMtMTYgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI5MDcyMCk6IERlYnVnZ2VyOiBTdGVwIG5leHQg
c2hvdWxkIG5vdCBiZWhhdmUgdGhlIHNhbWUgYXMgU3RlcCBpbnRvCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCmluZGV4IDYz
Mzc3M2FlZWM5ZDFjOTY3ZmE5OGE1YWNiMmExMjQ1MmViMjUwN2MuLjliNzc5YzkzNjYxZTlhMGYx
ZmZmOTYyOGNmYjVkZmI2ODNlYTNkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xOTYwLDYgKzE5NjAsMTcg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlcj4gewogICAgICAgICBzdG9yZTY0KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MpOwogICAgIH0KIAorICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNyYywgQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0KHNyYywgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3Rl
cklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgc3RvcmU2NChnZXRDYWNoZWREYXRhVGVtcFJl
Z2lzdGVySURBbmRJbnZhbGlkYXRlKCksIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdHJhbnNm
ZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHRyYW5zZmVy
NjQoc3JjLCBkZXN0KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWwzMiBzdG9yZTY0V2l0aEFkZHJl
c3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKICAg
ICAgICAgRGF0YUxhYmVsMzIgbGFiZWwodGhpcyk7CkBAIC0zMzQ0LDYgKzMzNTUsMTkgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbWVtb3J5VGVtcFJlZ2lz
dGVyLCByaWdodCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7CisgICAgICAgIC8v
IGxvYWQ2NCBjbG9iYmVycyBtZW1vcnlUZW1wUmVnaXN0ZXIsIHRodXMgd2Ugc2hvdWxkIGZpcnN0
IHVzZSBkYXRhVGVtcFJlZ2lzdGVyIGhlcmUuCisgICAgICAgIGxvYWQ2NChsZWZ0LCBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAgICAvLyBBbmQgYnJh
bmNoNjQgd2lsbCB1c2UgbWVtb3J5VGVtcFJlZ2lzdGVyIHRvIGxvYWQgcmlnaHQgdG8gYSByZWdp
c3Rlci4KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJp
Z2h0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBi
cmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hQdHIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgUmVnaXN0ZXJJRCByaWdo
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UklTQ1Y2NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clJJU0NWNjQuaAppbmRleCAzNjQ2ODZkZmY2ODk5NGRlYWEwNGU5NTY2MzZhZDYyZjAyZWMxMTU1
Li5kY2UzYTBlMzU2ZGJkNTg5YTA0ODlmYmRmYjY5MTZhY2ZlNDE0MWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0
LmgKQEAgLTExNzEsNiArMTE3MSwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgOiBw
dWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgbV9hc3Nl
bWJsZXIuc2RJbnNuKHRlbXAubWVtb3J5KCksIGltbVJlZ2lzdGVyLCBJbW06OlM8MD4oKSk7CiAg
ICAgfQogCisgICAgdm9pZCB0cmFuc2ZlcjY0KEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisg
ICAgeworICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxEYXRhPigpOworICAgICAgICBsb2FkNjQo
c3JjLCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIHN0b3JlNjQodGVtcC5kYXRhKCksIGRlc3QpOwor
ICAgIH0KKworICAgIHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkK
KyAgICB7CisgICAgICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsKKyAgICB9CisKICAgICB2b2lk
IHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMyLCBkZXN0LCBUcnVz
dGVkSW1tMzIoMCkpOwpAQCAtMjE1NCw2ICsyMTY2LDE2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
UklTQ1Y2NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAg
ICAgICByZXR1cm4gbWFrZUJyYW5jaChjb25kLCB0ZW1wLmRhdGEoKSwgcmhzKTsKICAgICB9CiAK
KyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBBZGRyZXNzIHJpZ2h0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0gdGVtcHM8RGF0YSwg
TWVtb3J5PigpOworICAgICAgICBhdXRvIGxlZnRSZXNvbHV0aW9uID0gcmVzb2x2ZUFkZHJlc3Mo
bGVmdCwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkSW5zbih0ZW1wLmRh
dGEoKSwgbGVmdFJlc29sdXRpb24uYmFzZSwgSW1tOjpJKGxlZnRSZXNvbHV0aW9uLm9mZnNldCkp
OworICAgICAgICBhdXRvIHJpZ2h0UmVzb2x1dGlvbiA9IHJlc29sdmVBZGRyZXNzKHJpZ2h0LCB0
ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRJbnNuKHRlbXAubWVtb3J5KCks
IHJpZ2h0UmVzb2x1dGlvbi5iYXNlLCBJbW06OkkocmlnaHRSZXNvbHV0aW9uLm9mZnNldCkpOwor
ICAgICAgICByZXR1cm4gbWFrZUJyYW5jaChjb25kLCB0ZW1wLmRhdGEoKSwgdGVtcC5tZW1vcnko
KSk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxmV29yZHMoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIGlt
bSkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRyZXNzLCBpbW0pOwpA
QCAtMjY0NSw2ICsyNjY3LDExIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyUklTQ1Y2NCA6IHB1Ymxp
YyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gYnJh
bmNoNjQoY29uZCwgYWRkcmVzcywgcmhzKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQor
CiAgICAgRGF0YUxhYmVsMzIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBSSVNDVjY0QXNzZW1ibGVyOjpJbW1lZGlhdGVMb2Fk
ZXIgaW1tbChSSVNDVjY0QXNzZW1ibGVyOjpJbW1lZGlhdGVMb2FkZXI6OlBsYWNlaG9sZGVyLCBp
bW0ubV92YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYjJlOTExYWExMzY2M2EyNTA5ODQwYTA1Njg4
NDEyZjI5MjhlZjQ2My4uYzdmZTYyNzk2ZDA0MTY5YmRkNGIwYjQ0MWQ1N2RjYTc3OGVjMDBjOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZfNjQuaApAQCAtMTAyNiw2ICsxMDI2LDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
WDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICAgICAgbW92ZShp
bW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92cV9ybShzY3Jh
dGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQorCisgICAgdm9pZCB0cmFuc2ZlcjY0KEFkZHJlc3Mg
c3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBsb2FkNjQoc3JjLCBzY3JhdGNoUmVn
aXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyKCksIGRlc3QpOworICAg
IH0KKworICAgIHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsKKyAgICB9CiAgICAgCiAgICAgRGF0
YUxhYmVsMzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFk
ZHJlc3MgYWRkcmVzcykKICAgICB7CkBAIC0xMTM0LDYgKzExNDUsMTIgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAg
ICBtX2Fzc2VtYmxlci5jbXBxX3JtKHJpZ2h0LCBhZGRyZXNzLm9mZnNldCwgYWRkcmVzcy5iYXNl
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgcmV0dXJuIEp1bXAobV9h
c3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KKworICAgIEp1bXAgYnJh
bmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIEFkZHJlc3Mgcmln
aHQpCisgICAgeworICAgICAgICBsb2FkNjQocmlnaHQsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAg
ICB9CiAgICAgCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKQEAgLTExNTIsNiAr
MTE2OSwxMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbiB7CiAgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgc2Ny
YXRjaFJlZ2lzdGVyKCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9CisKICAgICBKdW1w
IGJyYW5jaFRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lz
dGVySUQgbWFzaykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKHJlZywgbWFz
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4
IDA5OGFlZDkzNWE2OGY3ZDY2ODdiZDM1MjMyNTMwNzdmMzFlZDE5ZjIuLjI1OTZmODM0OTA2YjNk
ODFkYzNjNzM0MzdlYjEyMTM2ZDAyZWQxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC03ODcsOSArNzg3LDkgQEAgdm9pZCBDb2RlQmxvY2s6
OnNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENv
ZGUpCiAKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsK
LSAgICAgICAgQVNTRVJUKCFtX2Jhc2VsaW5lSklURGF0YSk7Ci0gICAgICAgIG1fYmFzZWxpbmVK
SVREYXRhID0gQmFzZWxpbmVKSVREYXRhOjpjcmVhdGUoaml0Q29kZS0+bV9jb25zdGFudFBvb2wu
c2l6ZSgpKTsKLSAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPm1fc3R1YkluZm9zID0gRml4ZWRW
ZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+KGppdENvZGUtPm1fdW5saW5rZWRTdHViSW5mb3Muc2l6
ZSgpKTsKKyAgICAgICAgQVNTRVJUKCFtX2ppdERhdGEpOworICAgICAgICBhdXRvIGJhc2VsaW5l
SklURGF0YSA9IEJhc2VsaW5lSklURGF0YTo6Y3JlYXRlKGppdENvZGUtPm1fY29uc3RhbnRQb29s
LnNpemUoKSk7CisgICAgICAgIGJhc2VsaW5lSklURGF0YS0+bV9zdHViSW5mb3MgPSBGaXhlZFZl
Y3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0Q29kZS0+bV91bmxpbmtlZFN0dWJJbmZvcy5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIHVubGlua2VkQ2FsbExpbmtJbmZvIDogaml0Q29kZS0+
bV91bmxpbmtlZENhbGxzKSB7CiAgICAgICAgICAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IGdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCB1bmxpbmtlZENhbGxM
aW5rSW5mby5ieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm8p
OwpAQCAtODAwLDI4ICs4MDAsMjkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVwV2l0aFVubGlua2Vk
QmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAgICAgICAgICAgICBh
dXRvIGVudHJ5ID0gaml0Q29kZS0+bV9jb25zdGFudFBvb2wuYXQoaSk7CiAgICAgICAgICAgICBz
d2l0Y2ggKGVudHJ5LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6
OlR5cGU6Okdsb2JhbE9iamVjdDoKLSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+
YXQoaSkgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZUpJ
VERhdGEtPmF0KGkpID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6U3RydWN0dXJlU3R1
YkluZm86IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KGVudHJ5LnBvaW50ZXIoKSk7CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJ1
Y3R1cmVTdHViSW5mbyYgdW5saW5rZWRTdHViSW5mbyA9IGppdENvZGUtPm1fdW5saW5rZWRTdHVi
SW5mb3NbaW5kZXhdOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9IG1fYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJbmZvc1tpbmRleF07CisgICAgICAgICAgICAg
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJ
bmZvc1tpbmRleF07CiAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdGlhbGl6ZUZyb21Vbmxp
bmtlZFN0cnVjdHVyZVN0dWJJbmZvKHRoaXMsIHVubGlua2VkU3R1YkluZm8pOwotICAgICAgICAg
ICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9ICZzdHViSW5mbzsKKyAgICAgICAgICAg
ICAgICBiYXNlbGluZUpJVERhdGEtPmF0KGkpID0gJnN0dWJJbmZvOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6
OlR5cGU6OkZ1bmN0aW9uRGVjbDogewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKLSAgICAgICAgICAgICAg
ICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkRlY2woaW5kZXgpOworICAgICAg
ICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkRlY2woaW5kZXgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBK
SVRDb25zdGFudFBvb2w6OlR5cGU6OkZ1bmN0aW9uRXhwcjogewogICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsK
LSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkV4cHIo
aW5kZXgpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlv
bkV4cHIoaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIG1faml0RGF0YSA9IGJhc2VsaW5lSklURGF0
YS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChjb2RlVHlwZSgpKSB7CkBAIC05MDYs
MjAgKzkwNywyNCBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIC8vIGRlc3RydWN0b3Jz
LgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVK
SVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5t
X3N0dWJJbmZvcykgewotICAgICAgICAgICAgc3R1YkluZm8uYWJvdXRUb0RpZSgpOwotICAgICAg
ICAgICAgc3R1YkluZm8uZGVyZWYoKTsKLSAgICAgICAgfQotICAgIH0KLSNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUo
KS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9zKSB7CiAgICAgICAgICAgICBzdHViSW5mby0+YWJv
dXRUb0RpZSgpOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAgICAgICAgIH0KLSAg
ICB9CisgICAgICAgIGlmIChtX2ppdERhdGEpCisgICAgICAgICAgICBkZWxldGUgYml0d2lzZV9j
YXN0PERGRzo6REZHSklURGF0YSo+KG1faml0RGF0YSk7CiAjZW5kaWYKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAg
ICAgICAgICAgICBzdHViSW5mby5hYm91dFRvRGllKCk7CisgICAgICAgICAgICAgICAgc3R1Yklu
Zm8uZGVyZWYoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0ZSBqaXREYXRhOwor
ICAgICAgICB9CisgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKQEAgLTEyNDgsMTgg
KzEyNTMsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImIHZpc2l0b3IKICAgICB9CiAKICNpZiBFTkFCTEUo
SklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgICAgIGZv
ciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKLSAgICAgICAgICAgICAg
ICBzdHViSW5mby5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAgICAgICAgfQotICAg
IH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgZm9yIChhdXRvKiBz
dHViSW5mbyA6IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9zKQogICAgICAgICAg
ICAgc3R1YkluZm8tPnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwotICAgIH0KICNlbmRp
ZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVRE
YXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0
dWJJbmZvcykKKyAgICAgICAgICAgICAgICBzdHViSW5mby5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2
aXNpdG9yKTsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAog
I2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTU4NSwxNSArMTU4OSw4IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICNpZiBFTkFCTEUoSklUKQogdm9pZCBDb2Rl
QmxvY2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKCkKIHsKLSAgICBpZiAoYXV0byogaml0RGF0
YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1Yklu
Zm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKLSAgICAgICAgICAgIHN0dWJJbmZv
LnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlzKTsKLSAgICAgICAgfQotICAgIH0KLQot
I2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBERkc6OkNvbW1vbkRhdGEq
IGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAgIGZvciAoYXV0byog
Y2FsbExpbmtJbmZvIDogZGZnQ29tbW9uLT5tX2NhbGxMaW5rSW5mb3MpCiAgICAgICAgICAgICBj
YWxsTGlua0luZm8tPnZpc2l0V2Vhayh2bSgpKTsKQEAgLTE2MDEsOCArMTU5OCwxNSBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVKSVRJbmxpbmVDYWNoZXMoKQogICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICAgICAgICAg
IHN0dWJJbmZvLT52aXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdGhpcyk7CiAgICAgICAgIH0K
LSAgICB9CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9
IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDog
aml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICAgICAgICAgIHN0dWJJ
bmZvLnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlzKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KIH0KICNlbmRpZgogCkBAIC0xNjg5LDEyICsxNjkzLDggQEAgdm9pZCBD
b2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3Rh
dHVzTWFwJiByZXN1bHQpCiAgICAgfQogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6
OmlzSklUKGppdFR5cGUoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2Vs
aW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGpp
dERhdGEtPm1fc3R1YkluZm9zKQotICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8u
Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJ
bmZvOwotICAgICAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAg
ICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1v
bigpOwogICAgICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9zdHVi
SW5mb3MpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwg
SUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CkBAIC0xNzEw
LDggKzE3MTAsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuaW5TdGF0dXMg
PSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0Nv
bW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVzKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmRlbGV0ZVN0YXR1cyA9
IHBhaXIuc2Vjb25kLmdldCgpOwotICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3Mp
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNT
dGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZvOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
QEAgLTE3MjgsMjEgKzE3MzMsMjEgQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKElD
U3RhdHVzTWFwJiByZXN1bHQpCiBTdHJ1Y3R1cmVTdHViSW5mbyogQ29kZUJsb2NrOjpmaW5kU3R1
YkluZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9sb2NrKTsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRh
LmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJ
bmZvcykgewotICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvZGVPcmlnaW4gPT0gY29kZU9yaWdp
bikKLSAgICAgICAgICAgICAgICByZXR1cm4gJnN0dWJJbmZvOwotICAgICAgICB9Ci0gICAgfQot
Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChq
aXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGZvciAoYXV0byogc3R1
YkluZm8gOiBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3N0dWJJbmZvcykgewogICAgICAgICAg
ICAgaWYgKHN0dWJJbmZvLT5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0dWJJbmZvOwogICAgICAgICB9Ci0gICAgfQogI2VuZGlmCisgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvZGVPcmlnaW4gPT0gY29kZU9yaWdpbikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICZzdHViSW5mbzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTc4MSw3ICsxNzg2LDcg
QEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKICAgICBSRUxFQVNFX0FT
U0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CiAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwogICAgIAotICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGlu
ZUpJVERhdGEuZ2V0KCkpIHsKKyAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0
YSgpKSB7CiAgICAgICAgIC8vIFdlIGNhbiBjbGVhciB0aGVzZSBiZWNhdXNlIG5vIG90aGVyIHRo
cmVhZCB3aWxsIGhhdmUgcmVmZXJlbmNlcyB0byBhbnkgc3R1YiBpbmZvcywgY2FsbAogICAgICAg
ICAvLyBsaW5rIGluZm9zLCBvciBieSB2YWwgaW5mb3MgaWYgd2UgZG9uJ3QgaGF2ZSBKSVQgY29k
ZS4gQXR0ZW1wdHMgdG8gcXVlcnkgdGhlc2UgZGF0YQogICAgICAgICAvLyBzdHJ1Y3R1cmVzIHVz
aW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwg
cmV0dXJuIG5vdGhpbmcgaWYgd2UKQEAgLTE4MDIsNyArMTgwNyw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpyZXNldEJhc2VsaW5lSklURGF0YSgpCiAgICAgICAgIC8vIFdlIGNhbiBjbGVhciB0aGlzIGJl
Y2F1c2UgdGhlIERGRydzIHF1ZXJpZXMgdG8gdGhlc2UgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBndWFy
ZGVkIGJ5IHdoZXRoZXIKICAgICAgICAgLy8gdGhlcmUgaXMgSklUIGNvZGUuCiAKLSAgICAgICAg
bV9iYXNlbGluZUpJVERhdGEgPSBudWxscHRyOworICAgICAgICBtX2ppdERhdGEgPSBudWxscHRy
OwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTg0OCwxOSArMTg1MywxOSBAQCB2b2lkIENvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiBsb2NrZXIsCiAgICAgfSk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChhdXRvKiBqaXRE
YXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzdHVi
SW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQotICAgICAgICAgICAgc3R1YkluZm8udmlzaXRB
Z2dyZWdhdGUodmlzaXRvcik7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENv
ZGUtPmRmZ0NvbW1vbigpOwogICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogZGZnQ29tbW9u
LT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0dWJJbmZvLT52aXNpdEFnZ3JlZ2F0ZSh2aXNp
dG9yKTsKICAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnZpc2l0QWdncmVnYXRl
KHZpc2l0b3IpOwogICAgICAgICB2aXNpdE9TUkV4aXRUYXJnZXRzKGxvY2tlciwgdmlzaXRvcik7
CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2Vs
aW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0
YS0+bV9zdHViSW5mb3MpCisgICAgICAgICAgICAgICAgc3R1YkluZm8udmlzaXRBZ2dyZWdhdGUo
dmlzaXRvcik7CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIH0KQEAgLTM0NzcsMjEgKzM0ODIs
MjIgQEAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBDb2RlQmxvY2s6OmZpbmRQQyh2b2lkKiBw
YykKIAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwot
ICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsK
LSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY29udGFpbnNQQyhwYykpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBzdHViSW5mby5jb2RlT3JpZ2luOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICAgICAg
REZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAg
ICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9zdHViSW5mb3MpIHsK
ICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnRhaW5zUEMocGMpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc3R1YkluZm8tPmNvZGVPcmlnaW47CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0KICNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGF1dG8q
IGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoc3R1YkluZm8uY29udGFpbnNQQyhwYykpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3R1YkluZm8uY29kZU9yaWdpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbV9qaXRDb2RlLT5maW5kUEModGhp
cywgcGMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4
IDQ2OTYzZDczZGUyM2UwMWZkMTUyNTQ1MWE4MzQ3YjZjNzc1YzE4MjYuLjQ1NzlhZWQ3NDAwODg4
ZTkwYWI4MTI2M2FmZGZhNWMwNTBjNDBhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTc5LDYgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKIG5hbWVzcGFjZSBERkcgeworY2xhc3MgREZHSklURGF0YTsKIHN0
cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRpZgpAQCAtMjQ3LDcg
KzI0OCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RkOjpv
cHRpb25hbDxCeXRlY29kZUluZGV4PiBieXRlY29kZUluZGV4RnJvbUNhbGxTaXRlSW5kZXgoQ2Fs
bFNpdGVJbmRleCk7CiAKLSAgICAvLyBCZWNhdXNlIHdlIG1pZ2h0IHRocm93IG91dCBiYXNlbGlu
ZSBKSVQgY29kZSBhbmQgYWxsIGl0cyBiYXNlbGluZSBKSVQgZGF0YSAobV9iYXNlbGluZUpJVERh
dGEpLAorICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhyb3cgb3V0IGJhc2VsaW5lIEpJVCBjb2Rl
IGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhIChtX2ppdERhdGEpLAogICAgIC8vIHlvdSBu
ZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhlIGxpZmV0aW1lIG9mIHdoZW4geW91IHVzZSB0aGUg
cmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgLy8gVGhlIHJldHVybiB2YWx1ZSBt
YXkgaGF2ZSByYXcgcG9pbnRlcnMgaW50byB0aGlzIGRhdGEgc3RydWN0dXJlIHRoYXQgZ2V0cyB0
aHJvd24gYXdheS4KICAgICAvLyBTcGVjaWZpY2FsbHksIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0
IG5vIEdDIGNhbiBiZSBmaW5hbGl6ZWQgKHR5cGljYWxseSB0aGF0IG1lYW5zIG5vCkBAIC0yNTgs
NyArMjU5LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAjaWYgRU5BQkxF
KEpJVCkKICAgICB2b2lkIHNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGlu
ZUpJVENvZGU+KTsKIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZCYXNlbGluZUpJVERh
dGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2Jhc2VsaW5lSklURGF0
YSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklURGF0YSgpIHsgcmV0dXJuIE9C
SkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1faml0RGF0YSk7IH0KIAogICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBhZGRPcHRpbWl6aW5nU3R1YkluZm8oQWNjZXNzVHlwZSwgQ29kZU9yaWdpbik7CiAK
QEAgLTUzNCw5ICs1MzUsMjUgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgU3RyaW5nSnVtcFRhYmxlJiBiYXNlbGluZVN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFi
bGVJbmRleCk7CiAgICAgQmFzZWxpbmVKSVREYXRhKiBiYXNlbGluZUpJVERhdGEoKQogICAgIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklU
KTsKLSAgICAgICAgcmV0dXJuIG1fYmFzZWxpbmVKSVREYXRhLmdldCgpOworICAgICAgICBpZiAo
IUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxCYXNlbGluZUpJVERhdGEqPihtX2ppdERhdGEpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICB2b2lkIHNldERG
R0pJVERhdGEoc3RkOjp1bmlxdWVfcHRyPERGRzo6REZHSklURGF0YT4mJiBqaXREYXRhKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCFtX2ppdERhdGEpOworICAgICAgICBtX2ppdERhdGEgPSBqaXRE
YXRhLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBERkc6OkRGR0pJVERhdGEqIGRmZ0pJVERhdGEo
KQorICAgIHsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkp
KQorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxERkc6OkRGR0pJVERhdGEqPihtX2pp
dERhdGEpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKICNlbmRpZgog
ICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygpOyB9
CiAgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2VkU3dpdGNoSnVtcFRh
YmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+dW5saW5rZWRTd2l0
Y2hKdW1wVGFibGUodGFibGVJbmRleCk7IH0KQEAgLTkzNyw3ICs5NTQsNyBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOwog
I2lmIEVOQUJMRShKSVQpCiBwdWJsaWM6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJhc2VsaW5lSklU
RGF0YT4gbV9iYXNlbGluZUpJVERhdGE7CisgICAgdm9pZCogbV9qaXREYXRhIHsgbnVsbHB0ciB9
OwogcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDIzZmQ0NTQ3YzU5YjkyYTkzNDM3NDJhNTg0ZjdkZGNk
ZjI5MWY5ZWIuLjRlMDNhYTNlZGU0Mjg5ZTA4YzI1ODg4MjkwOGI1NGI2M2YzOWFkYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxB
cnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3Mg
Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFs
IDogcHVibGljIEp1bXBpbmcKIHB1YmxpYzoKICAgICBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFy
aWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlvbl9HU3RaQiBmdW5j
dGlvbiwKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQorICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudCBnbG9iYWxPYmplY3QsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
Y29udGlndW91c1N0cnVjdHVyZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0b3JhZ2VTdHJ1
Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKICAgICAgICAgOiBKdW1w
aW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBqaXQp
CiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX2NvbnRpZ3VvdXNT
dHJ1Y3R1cmUoY29udGlndW91c1N0cnVjdHVyZSkKQEAgLTExNSw3ICsxMTUsNyBAQCBjbGFzcyBD
YWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwg
OiBwdWJsaWMgSnVtcGluZwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9jb250aWd1b3VzU3Ry
dWN0dXJlOwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3Vv
dXNTdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9iamVjdDsKKyAgICBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudCBtX2dsb2JhbE9iamVjdDsKICAgICBHUFJSZWcgbV9zaXplR1BSOwogICAgIEdQUlJl
ZyBtX3N0b3JhZ2VHUFI7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1f
cGxhbnM7CkBAIC0xMjUsNyArMTI1LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwKIHB1Ymxp
YzoKICAgICBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJsZVNp
emVTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZy
b20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFBfSklUT3BlcmF0aW9uX0dTdFpCIGZ1bmN0aW9uLAot
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgZ2xv
YmFsT2JqZWN0LCBHUFJSZWcgc3RydWN0dXJlR1BSLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0
b3JhZ2VHUFIpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50IGdsb2JhbE9iamVjdCwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRv
cjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKQEAgLTE1Miw3
ICsxNTIsNyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVW
YXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvciBmaW5hbAogCiAgICAgUF9KSVRPcGVyYXRpb25f
R1N0WkIgbV9mdW5jdGlvbjsKICAgICBHUFJSZWcgbV9yZXN1bHRHUFI7Ci0gICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX3N0cnVjdHVyZUdQUjsK
ICAgICBHUFJSZWcgbV9zaXplR1BSOwogICAgIEdQUlJlZyBtX3N0b3JhZ2VHUFI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCmluZGV4IDQ1M2MzZGNkYWVkMWYzYzNjMmFmMTRi
ODEyYjhhMjNhNTZkMTFjYTIuLjQwNTg3ZTlhZDVlZDkwNTFkMWMyMTBiY2ExZGZlYjhiYjVlZDEy
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC00OSw2ICs0OSwy
MyBAQCBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgSklUQ29tcGlsZXI7CiAKK2NsYXNzIERGR0pJ
VERhdGEgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdBcnJheTxERkdKSVREYXRhLCB2b2lkKj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJyYXk8REZH
SklURGF0YSwgdm9pZCo+OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRh
PiBjcmVhdGUodW5zaWduZWQgcG9vbFNpemUpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPERGR0pJVERhdGE+IHsgbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFs
bG9jYXRpb25TaXplKHBvb2xTaXplKSkpIERGR0pJVERhdGEocG9vbFNpemUpIH07CisgICAgfQor
CisgICAgZXhwbGljaXQgREZHSklURGF0YSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uo
c2l6ZSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgSklUQ29kZSBmaW5hbCA6IHB1YmxpYyBE
aXJlY3RKSVRDb2RlIHsKIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDQ1ZjM0M2YwZGQwNTkwN2YwOTkx
N2RiMDNhMWY0MTRkZDY4MDE0Y2IuLjkyZTNiYjYxODA0M2UyMDU5ODk3NjJmNWYxZjFlMGY1MTBm
YjI3YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAiTWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENh
bGwuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRv
cnMuaCIKICNpbmNsdWRlICJWTS5oIgogCkBAIC0xMTAsMTMgKzExMSwzMCBAQCB2b2lkIEpJVENv
bXBpbGVyOjpjb21waWxlRW50cnkoKQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVu
ZGVudCBvbiBzdGFjayBsYXlvdXQuIChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgog
ICAgIC8vIGJvdGggbm9ybWFsIHJldHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhj
ZXB0aW9uIGhhbmRsZXIpLgogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1
dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2sp
OworICAgIGlmIChtX2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpIHsKKyAg
ICAgICAgaWYgKG1fZ3JhcGgubV9wbGFuLmlzVW5saW5rZWQoKSkKKyAgICAgICAgICAgIGVtaXRQ
dXRDb2RlQmxvY2tUb0ZyYW1lSW5Qcm9sb2d1ZShHUFJJbmZvOjpyZWdUMCwgbV9jb2RlQmxvY2st
PmlzQ29uc3RydWN0b3IoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyAg
ICB9CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBwcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4
dCYgY3R4KSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFt
ZSo+KCktPmNvZGVCbG9jaygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoY29kZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgogfQog
CiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpCiB7CiAg
ICAgZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVn
aXN0ZXJzKCk7ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG1fZ3JhcGgubV9wbGFu
LmlzVW5saW5rZWQoKSkgeworICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihD
YWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyLCBDb2RlQmxv
Y2s6Om9mZnNldE9mSklURGF0YSgpKSwgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAg
IH0KKyNlbmRpZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnlFeGVjdXRpb25G
bGFnKCkKQEAgLTM0MCw3ICszNTgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlKCkKICAg
ICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVz
dGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhD
YWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKIAotICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dFcnJvciwgbV9jb2RlQmxvY2spOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1l
SGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICBtX3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNr
T25FeGNlcHRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CiAKICAgICAvLyBHZW5lcmF0ZSBzbG93IHBhdGggY29kZS4KICAgICBtX3Nw
ZWN1bGF0aXZlLT5ydW5TbG93UGF0aEdlbmVyYXRvcnMobV9wY1RvQ29kZU9yaWdpbk1hcEJ1aWxk
ZXIpOwpAQCAtNDEzLDcgKzQzMiw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlv
bigpCiAgICAgaWYgKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICBhZGRQ
dHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAKLSAgICBtX3NwZWN1bGF0aXZl
LT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9u
VGhyb3dTdGFja092ZXJmbG93RXJyb3IsIG1fY29kZUJsb2NrKTsKKyAgICBlbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVS
b2xsYmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApOwogICAgIAogICAgIC8vIFRoZSBmYXN0IGVudHJ5IHBvaW50IGlu
dG8gYSBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgY29ycmVjdCBudW1iZXIgb2YgYXJndW1l
bnRzCiAgICAgLy8gaGF2ZSBiZWVuIHBhc3NlZCB0byB0aGUgY2FsbCAod2Ugb25seSB1c2UgdGhl
IGZhc3QgZW50cnkgcG9pbnQgd2hlcmUgd2UgY2FuIHN0YXRpY2FsbHkKQEAgLTQzMiw3ICs0NTIs
OSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oKQogICAgICAgICBlbWl0U3Rv
cmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgwKSkpOwogICAgICAgICBpZiAo
bWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgICAgICBhZGRQdHIoVHJ1c3Rl
ZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2Fs
bCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxP
cGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+aXND
b25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNh
bGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZWdUMCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
KTsKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBsb2FkUHRyKEFkZHJl
c3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9mZnNldE9mR2xvYmFsT2JqZWN0
KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBtX3NwZWN1bGF0aXZlLT5jYWxs
T3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24obV9jb2RlQmxvY2stPmlz
Q29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5Q2hlY2sgOiBvcGVyYXRpb25D
YWxsQXJpdHlDaGVjaywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCkKICAgICAg
ICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwp
LCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIGJyYW5jaFRlc3QzMihaZXJvLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNoZWNrLCB0aGlzKTsKQEAgLTY0
Myw2ICs2NjUsNTcgQEAgdm9pZCBKSVRDb21waWxlcjo6bWFrZUNhdGNoT1NSRW50cnlCdWZmZXIo
KQogICAgIH0KIH0KIAordm9pZCBKSVRDb21waWxlcjo6bG9hZFVubGlua2VkQ29uc3RhbnQoVW5s
aW5rZWRDb25zdGFudCBjb25zdGFudCwgR1BSUmVnIGRlc3QpCit7CisgICAgY29uc3RhbnQubWF0
ZXJpYWxpemUoKnRoaXMsIGRlc3QpOworfQorCit2b2lkIEpJVENvbXBpbGVyOjpzdG9yZVVubGlu
a2VkQ29uc3RhbnQoVW5saW5rZWRDb25zdGFudCBjb25zdGFudCwgQWRkcmVzcyBkZXN0KQorewor
ICAgIGNvbnN0YW50LnBva2UoKnRoaXMsIGRlc3QpOworfQorCitKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudChHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2VsbCkK
K3sKKyAgICBncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMoKS5hZGRMYXppbHkoY2VsbCk7Cisg
ICAgaWYgKGdyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAgICAgICAgbV9pbmRleCA9IGdy
YXBoLm1fcGxhbi5hZGRVbmxpbmtlZENvbnN0YW50KGNlbGwpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fcG9pbnRlciA9IGNlbGw7Cit9CisKK0pJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50OjpVbmxpbmtlZENvbnN0YW50KEdyYXBoJiBncmFwaCwgdm9pZCogcG9pbnRlciwgTm9u
Q2VsbFRhZykKK3sKKyAgICBpZiAoZ3JhcGgubV9wbGFuLmlzVW5saW5rZWQoKSkgeworICAgICAg
ICBtX2luZGV4ID0gZ3JhcGgubV9wbGFuLmFkZFVubGlua2VkQ29uc3RhbnQocG9pbnRlcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wb2ludGVyID0gcG9pbnRlcjsKK30KKwordm9p
ZCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6bWF0ZXJpYWxpemUoQ0NhbGxIZWxwZXJz
JiBqaXQsIEdQUlJlZyByZXN1bHRHUFIpCit7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBpZiAo
aXNVbmxpbmtlZCgpKSB7CisgICAgICAgIGppdC5sb2FkUHRyKHVubGlua2VkQWRkcmVzcygpLCBy
ZXN1bHRHUFIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgaml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihtX3BvaW50ZXIpLCByZXN1bHRHUFIpOworfQorCit2b2lkIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50Ojpwb2tlKENDYWxsSGVscGVycyYgaml0LCBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MgYWRkcmVzcykKK3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChpc1Vu
bGlua2VkKCkpIHsKKyAgICAgICAgaml0LnRyYW5zZmVyUHRyKHVubGlua2VkQWRkcmVzcygpLCBh
ZGRyZXNzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGppdC5zdG9yZVB0
cihUcnVzdGVkSW1tUHRyKG1fcG9pbnRlciksIGFkZHJlc3MpOworfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA5ODQyNzY4MzhkM2U4OTBjNTExMzZl
MGEzZDE4ZWUwYjk3MjQ2YzE3Li4yOGE5NDczNDJjM2M2ZTIyZjQ1NzBkYzRiZThjYjAxOGFhMWNk
MzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCkBAIC0y
NTUsMTQgKzI1NSw2IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVibGljIENDYWxsSGVscGVycyB7
CiAgICAgICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHN0cnVjdHVyZVNldFtpXSk7CiAgICAgfQog
ICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgSnVtcCBicmFuY2hXZWFrUHRyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBKU0NlbGwqIHdlYWtQdHIpCi0gICAgewot
ICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaFB0cihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tUHRy
KHdlYWtQdHIpKTsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFrUHRyKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIEp1
bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwg
UmVnaXN0ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAgIHsKQEAgLTMxMiw2ICszMDQs
NjYgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAg
ZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNldExpc3Q6OmRmZ0NhbGxlZVNh
dmVSZWdpc3RlcnMoKSk7CiAgICAgfQogCisgICAgY2xhc3MgVW5saW5rZWRDb25zdGFudCBmaW5h
bCA6IHB1YmxpYyBDQ2FsbEhlbHBlcnM6OkNvbnN0YW50TWF0ZXJpYWxpemVyIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIGVudW0gTm9uQ2VsbFRhZyB7IE5vbkNlbGwgfTsKKyAgICAgICAgVW5saW5r
ZWRDb25zdGFudChHcmFwaCYsIEpTQ2VsbCopOworCisgICAgICAgIHZvaWQgbWF0ZXJpYWxpemUo
Q0NhbGxIZWxwZXJzJiwgR1BSUmVnKTsKKyAgICAgICAgdm9pZCBwb2tlKENDYWxsSGVscGVycyYs
IENDYWxsSGVscGVyczo6QWRkcmVzcyk7CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICAgICAgc3RhdGljIFVubGlua2VkQ29uc3RhbnQgbm9uQ2VsbFBvaW50ZXIoR3JhcGgmIGdy
YXBoLCBUKiBwb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX2Jhc2Vfb2ZfdjxKU0NlbGwsIFQ+KTsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtl
ZENvbnN0YW50KGdyYXBoLCBwb2ludGVyLCBOb25DZWxsKTsKKyAgICAgICAgfQorCisgICAgICAg
IHN0YXRpYyBVbmxpbmtlZENvbnN0YW50IHN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gVW5s
aW5rZWRDb25zdGFudChncmFwaCwgc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgaXNVbmxpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggIT0gVUlOVF9NQVg7
IH0KKworICAgICAgICB2b2lkKiBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyOyB9
CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBBZGRyZXNzIHVubGlua2VkQWRkcmVzcygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc1VubGlua2VkKCkpOworICAgICAgICAg
ICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIERGR0pJVERhdGE6
Om9mZnNldE9mRGF0YSgpICsgc2l6ZW9mKHZvaWQqKSAqIG1faW5kZXgpOworICAgICAgICB9Cisj
ZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIFVubGlua2VkQ29uc3RhbnQoR3JhcGgmLCB2
b2lkKiwgTm9uQ2VsbFRhZyk7CisKKyAgICAgICAgdW5zaWduZWQgbV9pbmRleCB7IFVJTlRfTUFY
IH07CisgICAgICAgIHZvaWQqIG1fcG9pbnRlciB7IG51bGxwdHIgfTsKKyAgICB9OworCisgICAg
dm9pZCBsb2FkVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0YW50LCBHUFJSZWcpOworICAg
IHZvaWQgc3RvcmVVbmxpbmtlZENvbnN0YW50KFVubGlua2VkQ29uc3RhbnQsIEFkZHJlc3MpOwor
CisgICAgSnVtcCBicmFuY2hVbmxpbmtlZENvbnN0YW50KFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgR1BSUmVnIGxlZnQsIFVubGlua2VkQ29uc3RhbnQgY29uc3RhbnQpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChjb25zdGFudC5pc1VubGlua2VkKCkpCisgICAgICAg
ICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpicmFuY2hQdHIoY29uZCwgbGVmdCwgY29uc3RhbnQu
dW5saW5rZWRBZGRyZXNzKCkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6
OmJyYW5jaFB0cihjb25kLCBsZWZ0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29uc3Rh
bnQucG9pbnRlcigpKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hVbmxpbmtlZENvbnN0YW50
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBVbmxpbmtlZENvbnN0YW50
IGNvbnN0YW50KQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBpZiAoY29uc3Rh
bnQuaXNVbmxpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6YnJhbmNo
UHRyKGNvbmQsIGxlZnQsIGNvbnN0YW50LnVubGlua2VkQWRkcmVzcygpKTsKKyNlbmRpZgorICAg
ICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpicmFuY2hQdHIoY29uZCwgbGVmdCwgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKGNvbnN0YW50LnBvaW50ZXIoKSkpOworICAgIH0KKwogcHJpdmF0
ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAppbmRleCBkNjM2MTMy
OTdjMjdmMzg4MTU4NmJjYWE3N2UzYWNjZmY0ZTI2NGM3Li41ZWNlNDU2NzU1MGRhMzE2YjQyNjkz
YWE1NWJmNjZlYWU3NzJlNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRGaW5hbGl6ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5h
bGl6ZSgpCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX3BsYW4uY29kZUJsb2NrKCk7CiAK
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNvcHlSZWYoKSk7CisgICAgY29k
ZUJsb2NrLT5zZXRERkdKSVREYXRhKG1fcGxhbi5maW5hbGl6ZUpJVERhdGEoKSk7CiAKICNpZiBF
TkFCTEUoRlRMX0pJVCkKICAgICBtX2ppdENvZGUtPm9wdGltaXplQWZ0ZXJXYXJtVXAoY29kZUJs
b2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCmluZGV4IGY4NjM1YWU2ODgy
YTI1MTVhYjljMzExNGU2NjdhMWI3ODJjYjczMmIuLjdlODZhOTljYTk0OWJlZWNlOGNkOTExNzVi
ZTBhNGY0MWI2NDg1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcApAQCAt
NjgxLDYgKzY4MSwyMiBAQCB2b2lkIFBsYW46OmNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVjZXNz
YXJ5KCkKICAgICB9CiB9CiAKK3Vuc2lnbmVkIFBsYW46OmFkZFVubGlua2VkQ29uc3RhbnQodm9p
ZCogcHRyKQoreworICAgIEFTU0VSVCghcHRyKTsKKyAgICByZXR1cm4gbV9jb25zdGFudFBvb2wu
YWRkKHB0ciwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKS5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBQbGFuOjpmaW5hbGl6ZUpJVERhdGEoKQoreworICAg
IGlmIChtX2NvbnN0YW50UG9vbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIGF1dG8gaml0RGF0YSA9IERGR0pJVERhdGE6OmNyZWF0ZShtX2NvbnN0YW50UG9vbC5zaXpl
KCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29uc3RhbnRQb29sKQorICAgICAgICBqaXRE
YXRhLT5hdChwYWlyLnZhbHVlKSA9IHBhaXIua2V5OworICAgIHJldHVybiBqaXREYXRhOworfQor
CiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXggNDA4MDMyOTZhNmRiZTBlNDdlYTM4
MzNkYmJmMjRhNmMyOTAzYjZlMi4uZTk1NGIwZDFmNDBjYWFkMmRiNWZlYTRmZmU5ODMyNzY0MTk2
MWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKQEAgLTQ4LDYgKzQ4LDcgQEAg
Y2xhc3MgQ29kZUJsb2NrOwogbmFtZXNwYWNlIERGRyB7CiAKIGNsYXNzIFRocmVhZERhdGE7Citj
bGFzcyBERkdKSVREYXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKQEAgLTEwMSw2ICsxMDIs
OSBAQCBjbGFzcyBQbGFuIGZpbmFsIDogcHVibGljIEpJVFBsYW4gewogICAgIERlZmVycmVkQ29t
cGlsYXRpb25DYWxsYmFjayogY2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrLmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRDYWxsYmFjayhSZWY8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrPiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCisg
ICAgdW5zaWduZWQgYWRkVW5saW5rZWRDb25zdGFudCh2b2lkKik7CisgICAgc3RkOjp1bmlxdWVf
cHRyPERGR0pJVERhdGE+IGZpbmFsaXplSklURGF0YSgpOworCiBwcml2YXRlOgogICAgIENvbXBp
bGF0aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKCkgb3ZlcnJpZGU7CiAgICAgCkBAIC0xMzQs
NiArMTM4LDcgQEAgY2xhc3MgUGxhbiBmaW5hbCA6IHB1YmxpYyBKSVRQbGFuIHsKICAgICBWZWN0
b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2RlczsKIAogICAgIFJl
ZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CisgICAgSGFzaE1h
cDx2b2lkKiwgdW5zaWduZWQ+IG1fY29uc3RhbnRQb29sOwogfTsKIAogI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5l
U3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IGZhYmNl
MDE4MmRlOTAwMjUzZjBkZjNmMGJmMmU5MzAxODdjMGZmMTQuLjY0M2JkMjVjMDljMmEzMjAyMjQ1
N2ExNWQ2MTY5NDYxOTExMjNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogY2xh
c3MgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVt
cGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wPiB7CiBwdWJsaWM6CiAg
ICAgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgIGNvbnN0IE1h
Y3JvQXNzZW1ibGVyOjpKdW1wJiBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgZ2xvYmFsT2JqZWN0LCBH
UFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQorICAgICAgICBjb25zdCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgZ2xvYmFsT2JqZWN0LCBHUFJS
ZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0
aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4oZnJvbSwgaml0KQogICAgICAgICAsIG1f
cmVzdWx0UmVncyhyZXN1bHRSZWdzKQogICAgICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9i
amVjdCkKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhH
ZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG8KICAgICB9CiAK
ICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdFJlZ3M7Ci0gICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX2Jhc2VSZWc7CiAgICAgR1BSUmVnIG1fcHJv
cGVydHlSZWc7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IDM2MGUxODE4M2VjYmExZTBjYzA1ZDc2YzcyY2RmMTIxOWVjY2IxNmQuLjQ5MDc3NTg0NTdk
ZjVjMDJlODFkMTk0YWYyMzRlNDQ0YWFiZjRlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCkBAIC0yMDUsMTEgKzIwNiw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUoQ29kZU9yaWdpbiBvcmlnaW4sIEdQUlJlZyBjYWxs
ZWVHUFIpCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAogICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkudmlydHVh
bFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVj
b3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAgICAgICAgY2FsbGVlR1BSKTsK
LSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtl
ZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksIGNhbGxl
ZUdQUik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbGVlR1BSKTsKIH0KQEAgLTY4Niw3
ICs2ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4mIHBsYW4pCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0Q2VsbENv
bnN0YW50OgogICAgICAgICBBU1NFUlQocGxhbi5ub2RlKCktPmNvbnN0YW50KCktPnZhbHVlKCku
aXNDZWxsKCkpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIocGxhbi5ub2RlKCkt
PmNvbnN0YW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29u
c3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgcGxhbi5ub2RlKCkt
PmNvbnN0YW50KCktPnZhbHVlKCkuYXNDZWxsKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJl
YWs7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldFRydXN0ZWRKU0NvbnN0YW50OgpA
QCAtMTE5MSwyMiArMTE4OSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlJZChOb2RlKiBub2RlKQogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6
OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAotICAg
ICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNW
YWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCks
IFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5l
Y21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9k
ZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBz
bG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVk
SW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwg
VHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAjZW5k
aWYKIApAQCAtMTIyNyw3ICsxMjI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURl
bGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdlbmVyaWMsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBu
b2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eUlkR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbnVs
bHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRy
dXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwpAQCAtMTI3NywyMiArMTI3NSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVs
ZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRU
eXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAog
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1pemUs
Ci0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAg
ICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdz
KGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5z
dHViSW5mbygpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
RGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBr
ZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkp
KTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0KICNlbmRpZgog
CkBAIC0xMzE0LDcgKzEzMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRl
QnlWYWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBA
IC0xMzUyLDEyICsxMzUwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQo
Tm9kZSogbm9kZSkKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAogICAgICAgICAgICAgTmVl
ZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAg
ICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25J
bkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25DaGVja1Jl
cXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIp
LCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0
cygpKTsKICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7
CkBAIC0xNDAyLDEyICsxNDAwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5
VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsCiAgICAgICAgICAg
ICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0g
ICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxs
cHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisgICAgICAg
ICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRy
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlWYWxPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1Nw
aWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAg
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKICAgICB9CiAKICAgICBt
X2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMTQ1NiwxMiArMTQ1NCwx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0ZShOb2RlKiBub2RlLCBB
Y2Nlc3NUeXBlIHR5cGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0
T2ZTbG93T3BlcmF0aW9uKCkpLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZhdGVOYW1lID8g
b3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFu
ZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOworICAgICAgICAgICAgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFu
ZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhhc1ByaXZh
dGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlvbkhhc1By
aXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNo
ZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOworICAg
ICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KHByb3BlcnR5T3JCcmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZEluQnlWYWwoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xNDk1LDcgKzE0OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogICAgICAgICBzcGVjdWxhdGVP
YmplY3Qob2JqZWN0RWRnZSwgb2JqZWN0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJlbnRTY29wZUdQUiwgb2Jq
ZWN0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2Jq
ZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2Nv
cGVHUFIsIG9iamVjdEdQUik7CiAgICAgICAgIC8vIE5vIGV4Y2VwdGlvbiBjaGVjayBoZXJlIGFz
IHdlIGRpZCBub3QgaGF2ZSB0byBjYWxsIHRvT2JqZWN0KCkuCiAgICAgfSBlbHNlIHsKICAgICAg
ICAgQVNTRVJUKG9iamVjdEVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtMTUwMyw3
ICsxNTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9k
ZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb2JqZWN0UmVncyA9IG9iamVjdC5qc1ZhbHVl
UmVncygpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdFJlZ3MpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KICAgICAKQEAgLTE4OTAsNyArMTg4OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdTbGljZShOb2RlKiBub2RlKQogCiAgICAg
Vk0mIHZtID0gdGhpcy0+dm0oKTsKICAgICBhdXRvIG5vbkVtcHR5Q2FzZSA9IG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgc3RhcnRJbmRleEdQUiwgdGVtcEdQUik7Ci0gICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBqc0Vt
cHR5U3RyaW5nKHZtKSksIHRlbXBHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJp
bmcodm0pKSwgdGVtcEdQUik7CiAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwog
CiAgICAgbm9uRW1wdHlDYXNlLmxpbmsoJm1faml0KTsKQEAgLTE5MjIsMTIgKzE5MjAsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1NsaWNlKE5vZGUqIG5vZGUpCiAKICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoYmlnQ2hhcmFjdGVyLCB0aGlzLCBv
cGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcsIHRlbXBHUFIsICZ2bSwgdGVtcEdQUikpOwog
Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uU3RyaW5nU3Vic3RyLCB0ZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3RyaW5nR1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7CisgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU3RyaW5nU3Vi
c3RyLCB0ZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBz
dGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7CiAKICAgICBpZiAoZW5kR1BSKQotICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25TdHJp
bmdTbGljZSwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwg
c3RhcnRHUFIsICplbmRHUFIpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCAqZW5kR1BSKSk7
CiAgICAgZWxzZQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNS
b3BlLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCBU
cnVzdGVkSW1tMzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CiAKICAg
ICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwogICAgIGNlbGxSZXN1bHQodGVtcEdQUiwgbm9kZSk7
CkBAIC0xOTc0LDcgKzE5NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Mb3dl
ckNhc2UoTm9kZSogbm9kZSkKICAgICAKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMobGVuZ3RoR1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblRvTG93ZXJDYXNlLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBzdHJpbmdHUFIsIGluZGV4R1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTG93
ZXJDYXNlLCBsZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdH
UFIsIGluZGV4R1BSKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CkBAIC0yMTkz
LDEwICsyMTkxLDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDdXJyZW50QmxvY2so
KQogICAgIH0KIAogICAgIGlmIChtX2Jsb2NrLT5pc0NhdGNoRW50cnlwb2ludCkgeworICAgICAg
ICAvLyBGb3IgY2F0Y2ggZW50cnkgcG9pbnQsIE9TUiBlbnRyeSBzZXRzIGEgbmV3IENvZGVCbG9j
ayBwb2ludGVyLgogICAgICAgICBtX2ppdC5hZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoLShtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpICogc2l6ZW9mKFJlZ2lzdGVy
KSkpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgIENDYWxsSGVscGVyczo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5lbWl0U2F2ZUNhbGxlZVNhdmVzKCk7CiAgICAg
ICAgIG1faml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7Ci0gICAgICAgIG1f
aml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2ppdC5jb2RlQmxvY2soKSwgQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBtX2ppdC5wcm9i
ZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAgICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGN0eC5mcDxDYWxsRnJhbWUqPigpLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmpp
dFR5cGUoKSkpOworICAgICAgICB9KTsKKyNlbmRpZgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIGlmIChtX2dyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAgICAgICAgICAgIG1faml0
LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywg
R1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihD
Q2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENvZGVCbG9j
azo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAg
ICAgIH0KKyNlbmRpZgogICAgIH0KIAogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFi
bGVFdmVudDo6cmVzZXQoKSk7CkBAIC0yNDc3LDcgKzI0ODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2hlY2tUcmFwcyhOb2RlKiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6
QWJzb2x1dGVBZGRyZXNzKG1faml0LnZtKCkudHJhcHMoKS50cmFwQml0c0FkZHJlc3MoKSksCiAg
ICAgICAgIFRydXN0ZWRJbW0zMihWTVRyYXBzOjpBc3luY0V2ZW50cykpOwogCi0gICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxpbmcsIHRoaXMsIG9wZXJh
dGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxpbmcs
IHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpKSk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKQEAgLTI1NDIsNyArMjU1
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHV0QnlWYWwoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/CiAgICAg
ICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlv
bmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1
dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05v
blN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAot
ICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
LCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7CisgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZ3Mp
KTsKICAgICB9CiAKICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwpAQCAtMjYxNyw3ICsyNjI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURv
dWJsZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8KICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlW
YWxEaXJlY3QgPyBvcGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRz
U3RyaWN0IDogb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkg
OgogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9w
ZXJhdGlvblB1dERvdWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBv
cGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKLSAgICAg
ICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCB2YWx1ZVJlZykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVn
KSk7CiAgICAgfQogCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxs
ZWRFeHBsaWNpdGx5KTsKQEAgLTI2NzUsOSArMjY4NSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbChOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpCi0gICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9u
U3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVn
cywgdmFsdWVSZWdzKTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFN
b2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3ROb25TdHJpY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVl
UmVncyk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9u
U3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5
UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMjczMCwxMSArMjc0MCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbiwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVn
cywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKKyAgICAg
ICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJvcGVy
dHlSZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLAotICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgZ2VuLnN0
dWJJbmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgZ2VuLnN0dWJJbmZv
KCksIG51bGxwdHIpOwogICAgICAgICB9CiAKICAgICAgICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2Vu
LCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yODI1LDcgKzI4MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPwogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9
PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KSA6CiAg
ICAgICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAotICAgICAgICAgICAgICAgIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZh
bHVlUmVncykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykpOwogICAgICAgICB9
CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
QEAgLTI5MzYsNyArMjk0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bE9uU3RyaW5nKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZXN1bHRSZWdzLnRhZ0dQ
UigpKTsKICNlbmRpZgogCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBlU3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKTsK
ICAgICAgICAgU3RydWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPm9iamVjdFByb3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBXVEY6OmRlcGVu
ZGVudExvYWRMb2FkRmVuY2UoKTsKQEAgLTI5NTIsMTIgKzI5NjIsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDoKICAgICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJBbmRXYXRjaFN0
cnVjdHVyZVRyYW5zaXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0dXJlKTsKIAogICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93
UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRo
aXMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGds
b2JhbE9iamVjdCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeVZhbFN0cmluZ0ludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJv
cGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJvcGVy
dHlSZWcpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBtX2N1cnJlbnROb2RlKTsKQEAgLTI5ODEsNyArMjk5MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcHJSZWdzKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkLCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3ByUmVncyk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtMzAwMSw3ICszMDExLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29kZShOb2RlKiBub2RlKQogICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNo
UmVnKSk7Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgcHJvcGVydHlSZWcpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNv
ZGUsIHNjcmF0Y2hSZWcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm9wZXJ0eVJl
ZykpOwogICAgIGNlbGxSZXN1bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CiB9CiAKQEAg
LTM5MjUsOSArMzkzNSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICAgICAgICAgICAg
ICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAobm9k
ZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QpLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcs
IHByb3BlcnR5UmVnLCB2YWx1ZUdQUikpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsK
ICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwg
SlNWYWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFs
dWVUYWdHUFIsIHZhbHVlR1BSKSkpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwgSlNW
YWx1ZVJlZ3MocHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFsdWVU
YWdHUFIsIHZhbHVlR1BSKSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC00MDM1LDcgKzQwNDUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3RyaW5n
KE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVy
cyhyZXN1bHRSZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZywgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICBpZiAoY2Fu
VXNlRmx1c2ggPT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQwNjIsNyArNDA3Miw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbEZvck9iamVjdFdpdGhTeW1ib2wo
Tm9kZSogbm9kZSwgY29uc3QgU2NvcGVkCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdFJlZ3MpOwogICAgIGVsc2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbCwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAgIGlmIChjYW5V
c2VGbHVzaCA9PSBDYW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtNDEzMCwxMiArNDE0MCwxMiBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBu
b2RlLCBKU1ZhbHVlUmVncyBiYXNlLCBKUwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlD
KEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgK
ICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5m
b0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5m
bzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGlt
aXplLAotICAgICAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1
YkluZm9HUFIsCisgICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwKICAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRQcml2YXRlTmFtZU9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBiYXNlLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICB9OwogCkBA
IC00MjE1LDcgKzQyMjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxG
b3JDZWxsV2l0aFN0cmluZyhOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPwogICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZh
bENlbGxTdHJpbmdTdHJpY3QpIDoKICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxDZWxsU3RyaW5nTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00
MjM4LDcgKzQyNDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JD
ZWxsV2l0aFN5bWJvbChOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3Ry
aWN0KCkKICAgICAgICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXRCeVZhbERpcmVjdENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENl
bGxTeW1ib2xTdHJpY3QpCiAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGly
ZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxDZWxsU3ltYm9sTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00MjU2
LDcgKzQyNjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRoVGhp
cyhOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdpdGhU
aGlzLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRo
aXNWYWx1ZVJlZ3MsIHN1YnNjcmlwdFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWdzLCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
QEAgLTQyODIsNyArNDI5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2
YXRlTmFtZShOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAg
IGF1dG8gb3BlcmF0aW9uID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkg
PyBvcGVyYXRpb25QdXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25Q
dXRCeVZhbFNldFByaXZhdGVGaWVsZEdlbmVyaWM7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVs
bHB0ciksIFRydXN0ZWRJbW1QdHIobnVsbHB0cikpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDMyNiwxMSArNDMzNiwxMSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkK
ICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbiwKLSAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQ
UiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIsIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1
bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBzdHViSW5m
b0dQUiwgbnVsbHB0cik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0
aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKLSAgICAgICAg
ICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywg
Z2VuLnN0dWJJbmZvKCksIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBnZW4uc3R1YkluZm8oKSwgbnVs
bHB0cik7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQo
KSk7CkBAIC00NDAwLDExICs0NDEwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
aGVja1ByaXZhdGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMo
SklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAog
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIs
IENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9m
ZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6
ZSwgTm9SZXN1bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBi
YXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShicmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVj
a1ByaXZhdGVCcmFuZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAgICAgIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8o
KSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CiAgICAgfQog
CiAgICAgbV9qaXQuYWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpA
QCAtNDQ0OCwxMSArNDQ1OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJp
dmF0ZUJyYW5kKE5vZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBl
OjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1
bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQ
UikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6
ZSwgTm9SZXN1bHQsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShicmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFj
Y2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTQ0ODgsNyArNDQ5OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50R2Vu
ZXJpYywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywg
cmFkaXhHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludEdl
bmVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJl
Z3MsIHJhZGl4R1BSKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNDUwMSw3ICs0NTExLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBh
cnNlSW50KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25QYXJzZUludFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHZhbHVlR1BSLCByYWRpeEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uUGFyc2VJbnRTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCB2YWx1ZUdQUiwgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1
cm47CkBAIC00NTE0LDcgKzQ1MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFy
c2VJbnQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblBhcnNlSW50Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blBhcnNlSW50Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47
CkBAIC00NTI3LDcgKzQ1MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJ
bnQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJp
bmdOb1JhZGl4LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVH
UFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4LCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIpOwogICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKIH0KQEAgLTQ1NTAsMTEgKzQ1NjAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgLy8gc2luY2UgaXQgcmVs
aWVzIG9uIE9TUiBpbmZvcm1hdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1NDgzMgogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmlzQ2VsbENvbnN0
YW50KCkgfHwgZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5zdGFuY2VWYWx1ZU5v
ZGUtPmFzQ2VsbCgpKSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdz
ID0gaGFzSW5zdGFuY2VWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5sb2FkVW5s
aW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2Rl
LT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCBUcnVzdGVkSW1tUHRyKG5v
ZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdw
cigpLCByZXN1bHRHUFIpKTsKICNlbHNlCiAgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBub3REZWZh
dWx0LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJ
bnN0YW5jZVZhbHVlUmVncy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9w
ZXJhbmQoKSkpKTsKKyAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigp
LCByZXN1bHRHUFIpKTsKICNlbmRpZgogICAgIH0KIApAQCAtNDU4OCwxMCArNDU5OSwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUs
IEpTVmFsdWVSZWdzIHZhbHVlUmVncwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdK
SVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3Bl
cmF0aW9uKCkpLCBvcGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJl
Z3MpOworICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXpl
LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwg
dmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0
aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
SW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdz
LCBwcm90b3R5cGVSZWdzKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VPZihn
ZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTQ3MDEsNyArNDcxMiw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZUJpdE5vdChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVn
c0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25CaXROb3RIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3BlcmFuZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90SGVh
cEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJh
bmRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogCkBAIC00NzE2LDcgKzQ3MjcsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBvcGVyYW5kUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25W
YWx1ZUJpdE5vdCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
ZXJhbmRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTQ3NTYsNyArNDc2Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5y
ZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdz
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3Mp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00ODIxLDcgKzQ4MzIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAg
bV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAg
IH0KIAotICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAg
LTQ4ODQsMTMgKzQ4OTUsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0
d2lzZU9wKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNl
IFZhbHVlQml0QW5kOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRI
ZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQ
UiwgcmlnaHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRI
ZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVC
aXRYb3I6Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJ
bnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJ
bnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCBy
aWdodEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgot
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ5NzQsNyArNDk4NSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSBy
ZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0
aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJp
Z2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24s
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmln
aHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTA0MCw3ICs1MDUxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBu
b2RlKQogICAgICAgICBtX2ppdC5tb3ZlVmFsdWUocmlnaHRDaGlsZC0+YXNKU1ZhbHVlKCksIHJp
Z2h0UmVncyk7CiAgICAgfQogCi0gICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5j
dGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCBy
aWdodFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRS
ZWdzKTsKIAogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwpAQCAtNTA2OSw3ICs1MDgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVZhbHVlTFNoaWZ0T3AoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNo
aWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hp
ZnRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBA
IC01MDk2LDcgKzUxMDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRS
U2hpZnQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNW
YWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVS
ZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQml0UlNoaWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAt
NTE4NCw3ICs1MTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5v
ZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAg
ICAgICAgLy8gRklYTUU6IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCi0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CkBAIC01MjA1LDcgKzUyMTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVBZGQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQWRkSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTIy
MSw3ICs1MjMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUq
IG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1
ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVl
QWRkTm90TnVtYmVyLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC01Mjg0LDcg
KzUyOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9k
ZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3Vi
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTMwNSw3ICs1MzE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1
YkhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJp
Z0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTQxMiw5ICs1NDIzLDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRo
SUM8R2VuZXJhdG9yPiogbWF0aEkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFk
ZElDR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICAg
ICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVw
YXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
aW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7Cisg
ICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1Q
dHIobWF0aElDKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkSUNHZW5l
cmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1
bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0
UmVncywgaW5uZXJSaWdodFJlZ3MpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0
YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3Ms
IGlubmVyUmlnaHRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwog
ICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTU0NDMsNyArNTQ1NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgIH0KIAogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3Mp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNTQ3Niw3ICs1NDg3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSog
bm9kZSkKIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuanVtcCgp
OwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlz
LCBvcGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJlZ3MpKTsK
KyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9w
ZXJhdGlvbkluc3RhbmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHZhbHVlUmVncywgY29uc3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVncykpOwog
CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtNTU3
NSw5ICs1NTg2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvT2JqZWN0T3JDYWxs
T2JqZWN0Q29uc3RydWN0b3IoTm9kZSogbm9kZSkKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IGVycm9yTWVzc2FnZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkgIT0gVUlOVDMyX01BWCkKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGlkZW50aWZp
ZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgZXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGVycm9yTWVzc2FnZSkpOwogICAgIH0gZWxzZQotICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBv
cGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihu
b2RlLT5jZWxsT3BlcmFuZCgpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxPYmplY3RD
b25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCB2YWx1ZVJlZ3MpKTsKIAogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTU3MjEsNyArNTczMiw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEFicyhOb2RlKiBub2RlKQogICAgICAgICBKU1Zh
bHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQXJpdGhBYnMsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRo
QWJzLCByZXN1bHQuZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdz
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgZG91YmxlUmVzdWx0
KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTc0NSw3ICs1NzU2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQ2x6MzIoTm9kZSogbm9kZSkKICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRSZWcgPSByZXN1
bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkFyaXRoQ2x6MzIsIHJlc3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
MVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhDbHozMiwgcmVzdWx0UmVn
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwog
fQpAQCAtNTc2OSw3ICs1NzgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
RG91YmxlVW5hcnlPcChOb2RlKiBub2RlLCBkb3VibGUgKCpkb3VibGVGdW5jdGkKICAgICBKU1Zh
bHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uLCByZXN1bHQuZnByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsK
KyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTU4ODYsNyArNTg5
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQog
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGF1dG8gb3BlcmF0aW9uID0g
bm9kZS0+b3AoKSA9PSBJbmMgPyBvcGVyYXRpb25JbmMgOiBvcGVyYXRpb25EZWM7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcDFSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAg
LTYwMjUsOSArNjAzNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9k
ZSogbm9kZSwgSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgICAgICBz
aWxlbnRTcGlsbChzYXZlUGxhbnMpOwogCiAgICAgICAgICAgICBpZiAoaWNHZW5lcmF0aW9uU3Rh
dGUtPnNob3VsZFNsb3dQYXRoUmVwYXRjaCkKLSAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25T
dGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rpb24sIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MsIFRydXN0ZWRJ
bW1QdHIobWF0aElDKSk7CisgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQ
YXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzLCBUcnVzdGVkSW1tUHRyKG1h
dGhJQykpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0
YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAg
ICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRp
b24obm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgY2hpbGRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxh
bnMpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTYwNDgsNyArNjA1
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklU
VW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgIH0pOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obm9uUmVw
YXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
Y2hpbGRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24s
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNjExMyw3ICs2MTI0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAg
ICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTXVsSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAt
NjEzMSw3ICs2MTQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdz
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1
bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25W
YWx1ZU11bCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdz
LCByaWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlTXVsLCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMTMsNyArNjMyNCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVl
UmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRp
dkhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzMzEsNyArNjM0Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3Vs
dC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CkBAIC02NDE1LDcgKzY0MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0
Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZh
bHVlRGl2LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJl
Z3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTY1NzksNyArNjU5MCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcml0aEZSb3VuZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG9w
MVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEZQ
UlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZS
b3VuZCwgcmVzdWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0LmZwcigpLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAg
LTY2MDQsNyArNjYxNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChO
b2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKQEAgLTY2MjEsNyArNjYzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZU1vZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1
ZU1vZCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9w
MlJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiB9CkBAIC03MDE4LDcgKzcwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhSb3VuZGluZyhOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBB
cml0aFRydW5jKTsKICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uQXJpdGhUcnVuYzsKICAg
ICB9Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRS
ZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0UmVncywgbm9kZSk7CiB9CkBAIC03MDUxLDcgKzcwNjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhTcXJ0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVn
cyA9IG9wMS5qc1ZhbHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVz
dWx0IHJlc3VsdCh0aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoU3FydCwg
cmVzdWx0LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CkBAIC03MTc5LDcg
KzcxOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9k
ZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Qb3dIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CkBAIC03MTk4LDcgKzcyMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQ
b3coTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3Mg
PSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVQb3csIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdz
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlUG93LCByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CkBAIC03OTM1LDcgKzc5NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
aW5nRXF1YWxpdHkoCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlz
LCBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlLCB0
aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKICAgICAKICAgICBibGVzc2Vk
Qm9vbGVhblJlc3VsdChsZWZ0VGVtcEdQUiwgbm9kZSk7CiB9CkBAIC04MDg1LDcgKzgwOTYsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiBub2RlLCBN
YWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbAogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24oY29tcGFy
ZUZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihjb21wYXJlRnVuY3Rpb24sIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtODE4Niw3ICs4MTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVNhbWVWYWx1ZShOb2RlKiBub2RlKQogCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJl
bkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtODIwMyw3ICs4MjE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvQm9vbGVhblN0cmluZyhOb2RlKiBub2RlLCBib29sIGludmVydCkKICAg
ICBHUFJUZW1wb3JhcnkgZXEodGhpcyk7CiAgICAgR1BSUmVnIGVxR1BSID0gZXEuZ3ByKCk7CiAK
LSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IGpzRW1wdHlTdHJpbmcodm0oKSkpLCBlcUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29u
c3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0
eVN0cmluZyh2bSgpKSksIGVxR1BSKTsKICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVydCA/IEND
YWxsSGVscGVyczo6RXF1YWwgOiBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzdHJHUFIsIGVxR1BS
LCBlcUdQUik7CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChlcUdQUiwgbm9kZSk7CiB9CkBA
IC04MjIwLDcgKzgyMzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFu
U3RyaW5nT3JPdGhlcihOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgdmFsdWVSZWdzLCBub2RlLT5jaGlsZDEoKSwgKH5TcGVjQ2VsbENoZWNrKSB8
IFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaElmTm90U3RyaW5nKGNlbGxHUFIpKTsKIAotICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwganNFbXB0
eVN0cmluZyh2bSgpKSksIHRlbXBHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJp
bmcodm0oKSkpLCB0ZW1wR1BSKTsKICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVydCA/IENDYWxs
SGVscGVyczo6RXF1YWwgOiBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjZWxsR1BSLCB0ZW1wR1BS
LCB0ZW1wR1BSKTsKICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAKQEAgLTgyNDEsNyAr
ODI1Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdCcmFuY2goRWRnZSBub2Rl
VXNlLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG9jCiAKICAgICBzcGVjdWxhdGVTdHJpbmco
bm9kZVVzZSwgc3RyR1BSKTsKIAotICAgIGJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBz
dHJHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlT
dHJpbmcodm0oKSkpLCBub3RUYWtlbik7CisgICAgYnJhbmNoVW5saW5rZWRDb25zdGFudChDQ2Fs
bEhlbHBlcnM6OkVxdWFsLCBzdHJHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBub3RUYWtlbik7CiAgICAganVtcCh0
YWtlbik7CiAKICAgICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTgyNTgsNyArODI2OSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdPck90aGVyQnJhbmNoKEVkZ2Ugbm9k
ZVVzZSwgQmFzaWNCbG9jayogdGFrZW4sIEJhCiAgICAgR1BSUmVnIGNlbGxHUFIgPSB2YWx1ZVJl
Z3MucGF5bG9hZEdQUigpOwogICAgIERGR19UWVBFX0NIRUNLKHZhbHVlUmVncywgbm9kZVVzZSwg
KH5TcGVjQ2VsbENoZWNrKSB8IFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaElmTm90U3RyaW5nKGNl
bGxHUFIpKTsKIAotICAgIGJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBjZWxsR1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZt
KCkpKSwgbm90VGFrZW4pOworICAgIGJyYW5jaFVubGlua2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJz
OjpFcXVhbCwgY2VsbEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwganNFbXB0eVN0cmluZyh2bSgpKSksIG5vdFRha2VuKTsKICAgICBqdW1wKHRha2VuLCBG
b3JjZUp1bXApOwogCiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC04MjcyLDcgKzgyODMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29uc3RhbnRTdG9yYWdlUG9pbnRlcihO
b2RlKiBub2RlKQogewogICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlJl
ZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobm9kZS0+c3RvcmFnZVBvaW50ZXIoKSksIHN0b3JhZ2VHUFIpOworICAgIG1faml0LmxvYWRV
bmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50Ojpub25DZWxsUG9p
bnRlcihtX2dyYXBoLCBub2RlLT5zdG9yYWdlUG9pbnRlcigpKSwgc3RvcmFnZUdQUik7CiAgICAg
c3RvcmFnZVJlc3VsdChzdG9yYWdlR1BSLCBub2RlKTsKIH0KIApAQCAtODMyNSw3ICs4MzM2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Uo
Tm9kZSogbm9kZSkKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1w
bChzdG9yYWdlUmVnKSwKLSAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9w
ZSwgc3RvcmFnZVJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcpKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc3RvcmFnZVJlZywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcpKTsKIAogICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRh
dGFPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgICAgICBicmVhazsKQEAgLTg0MzYsNyArODQ0
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJndW1l
bnRzKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIGlzT3V0T2ZC
b3VuZHMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAgICAg
IGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIGV4dHJhY3RSZXN1bHQocmVz
dWx0UmVncyksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0
eVJlZykpOwogICAgIH0KICAgICAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwpAQCAtODU0Miw4ICs4NTUzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEds
b2JhbFRoaXMoTm9kZSogbm9kZSkKIHsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICBtX2ppdC5sb2FkUHRyKGdsb2JhbE9iamVjdC0+YWRkcmVzc09mR2xvYmFsVGhpcygp
LCByZXN1bHRHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZXN1bHRHUFIpOworICAgIG1faml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNHbG9iYWxPYmplY3Q6Om9mZnNldE9m
R2xvYmFsVGhpcygpKSwgcmVzdWx0R1BSKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiB9CiAKQEAgLTg3MDUsNyArODcxNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0CiAg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPENsYXNzVHlwZT4ocmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0
Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVH
UFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZT
Y29wZUNoYWluKCkpKTsKLSAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpKTsKKyAg
ICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2ppdC5ncmFwaCgpLCBleGVjdXRhYmxlKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LnN0
b3JlUHRyKHNjcmF0Y2gxR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVu
Y3Rpb246Om9mZnNldE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSkpOwogICAgIG1faml0Lm11dGF0
b3JGZW5jZSh2bSgpKTsKIH0KIApAQCAtODgwMCw3ICs4ODEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNldEZ1bmN0aW9uTmFtZShOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdz
IG5hbWVWYWx1ZVJlZ3MgPSBuYW1lVmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jR1BSLCBuYW1lVmFsdWVSZWdzKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGZ1bmNHUFIsIG5hbWVWYWx1ZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTg4MTcsNyArODgyOSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYXJhcmdzTGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICB1bmxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwog
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRh
dGEtPm9mZnNldCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
Z3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtODg1NCw3ICs4ODY2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKE5vZGUqIG5vZGUpCiAK
ICAgICBtX2ppdC5zdG9yZTMyKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKSVRDb21waWxl
cjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQpKTsKIAotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTG9hZFZhcmFyZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5t
YWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9m
ZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0p
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAg
LTg5ODUsMTAgKzg5OTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQWN0
aXZhdGlvbihOb2RlKiBub2RlKQogICAgIC8vIERvbid0IG5lZWQgYSBtZW1vcnkgYmFycmllcnMg
c2luY2Ugd2UganVzdCBmYXN0LWNyZWF0ZWQgdGhlIGFjdGl2YXRpb24sIHNvIHRoZQogICAgIC8v
IGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBtX2ppdC5zdG9yZVB0cihzY29wZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSkp
OwotICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxP
cGVyYW5kKCkpLAotICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTTGV4
aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpKTsKLSAgICAgICAgCisgICAg
bV9qaXQuc3RvcmVVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgSlNMZXhpY2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mU3ltYm9sVGFibGUo
KSkpOworCiAgICAgLy8gTXVzdCBpbml0aWFsaXplIGFsbCBtZW1iZXJzIHRvIHVuZGVmaW5lZCBv
ciB0aGUgVERaIGVtcHR5IHZhbHVlLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJs
ZS0+c2NvcGVTaXplKCk7ICsraSkgewogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZSgK
QEAgLTkxMTUsMTIgKzkxMjUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
RGlyZWN0QXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3IoCiAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVl
UmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIHNjcmF0Y2gxR1BS
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAg
ICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIoCi0gICAgICAgICAgICAgICAgICAgIG1f
aml0LmdyYXBoKCksIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5h
c0NlbGwoKSksCi0gICAgICAgICAgICAgICAgc2NyYXRjaDFHUFIpOwotICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5j
YWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwgc2NyYXRjaDFHUFIpOwogICAgIH0g
ZWxzZQogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxG
cmFtZVNsb3Q6OmNhbGxlZSksIHNjcmF0Y2gxR1BSKTsKIApAQCAtOTIxOCw3ICs5MjI0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhOb2RlKiBu
b2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAKICAgICAvLyBXZSBzZXQgdXAgdGhlIGFyZ3VtZW50cyBvdXJzZWx2ZXMsIGJl
Y2F1c2Ugd2UgaGF2ZSB0aGUgd2hvbGUgcmVnaXN0ZXIgZmlsZSBhbmQgd2UgY2FuCiAgICAgLy8g
c2V0IHRoZW0gdXAgZGlyZWN0bHkgaW50byB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLiBUaGlzIGFs
c28gbWVhbnMgdGhhdCB3ZSBkb24ndCBoYXZlIHRvCkBAIC05MjM1LDExICs5MjQxLDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRBcmd1bWVudHMoTm9kZSogbm9k
ZSkKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDIsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1p
dEdldEFyZ3VtZW50U3RhcnQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKICAgICAgICAgMSwgWyZdIChHUFJSZWcgZGVzdEdQUikg
ewotICAgICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QtPnNjb3BlZEFyZ3VtZW50
c1N0cnVjdHVyZSgpKSwKLSAgICAgICAgICAgICAgICBkZXN0R1BSKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIGdsb2JhbE9iamVjdC0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLCBk
ZXN0R1BSKTsKKyAgICAgICAgfSk7CisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKKyAgICAgICAg
MCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2Vk
Q29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGRlc3RHUFIpOwog
ICAgICAgICB9KTsKLSAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RH
UFIpIHsgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9i
YWxPYmplY3QpLCBkZXN0R1BSKTsgfSk7CiAgICAgCiAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb25DcmVhdGVTY29wZWRBcmd1bWVudHMsIHJlc3VsdEdQUik7CiAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKQEAgLTkyNTMsNyArOTI2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCiAgICAgLy8g
V2Ugc2V0IHVwIHRoZSBhcmd1bWVudHMgb3Vyc2VsdmVzLCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdo
b2xlIHJlZ2lzdGVyIGZpbGUgYW5kIHdlIGNhbgogICAgIC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5
IGludG8gdGhlIGFyZ3VtZW50IHJlZ2lzdGVycy4KQEAgLTkyNjQsMTIgKzkyNzEsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhOb2RlKiBub2Rl
KQogICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBlbWl0
R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7
Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBnbG9iYWxP
YmplY3QtPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKLSAgICAgICAgICAgICAgICBkZXN0
R1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdC0+Y2xvbmVkQXJn
dW1lbnRzU3RydWN0dXJlKCkpLCBkZXN0R1BSKTsKKyAgICAgICAgfSk7CisgICAgbV9qaXQuc2V0
dXBBcmd1bWVudCgKKyAgICAgICAgMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeworICAgICAgICAg
ICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9qaXQuZ3JhcGgoKSwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGRlc3RHUFIpOwogICAgICAgICB9KTsKLSAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0R1BSKTsgfSk7CiAgICAgCiAgICAg
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIHJlc3Vs
dEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTkyODMsMTUgKzkyOTAsMTYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShO
b2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLQogICAgIC8vIFdlIHNl
dCB1cCB0aGUgYXJndW1lbnRzIG91cnNlbHZlcywgYmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSBy
ZWdpc3RlciBmaWxlIGFuZCB3ZSBjYW4KICAgICAvLyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRv
IHRoZSBhcmd1bWVudCByZWdpc3RlcnMuCiAKICAgICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxP
YmplY3QqLCAxOnN0YXJ0LCAzOmxlbmd0aAogICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZd
IChHUFJSZWcgZGVzdEdQUikgeyBlbWl0R2V0TGVuZ3RoKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
ZGVzdEdQUik7IH0pOwogICAgIG1faml0LnNldHVwQXJndW1lbnQoMSwgWyZdIChHUFJSZWcgZGVz
dEdQUikgeyBlbWl0R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RH
UFIpOyB9KTsKLSAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIp
IHsgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxP
YmplY3QpLCBkZXN0R1BSKTsgfSk7CisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKKyAgICAgICAg
MCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2Vk
Q29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGRlc3RHUFIpOwor
ICAgICAgICB9KTsKIAogICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJn
dW1lbnRzQnV0dGVyZmx5LCByZXN1bHRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CkBAIC05MzYwLDcgKzkzNjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
UmVzdChOb2RlKiBub2RlKQogCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25DcmVhdGVSZXN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmd1bWVudHNTdGFydEdQUiwgSW1tMzIobm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1Nr
aXAoKSksIGFycmF5TGVuZ3RoR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0
ZVJlc3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50
c1N0YXJ0R1BSLCBJbW0zMihub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpKSwgYXJyYXlM
ZW5ndGhHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC05NDU0LDcgKzk0NjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBkb25lLmFwcGVuZCht
X2ppdC5qdW1wKCkpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblNwcmVhZEZhc3RB
cnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQpKTsK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlz
LCBvcGVyYXRpb25TcHJlYWRGYXN0QXJyYXksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZ3VtZW50KSk7CiAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAg
ICAgICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKQEAgLTk0NjQsNyArOTQ3Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSogbm9kZSkKIAogICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFk
RmFzdEFycmF5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVu
dCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQpAQCAtOTQ3Myw3ICs5NDgxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBub2RlKQogCiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TcHJlYWRH
ZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFkR2VuZXJpYywgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgfQpAQCAtOTYxMCw3ICs5NjE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0FycmF5KE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKIAogICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkp
KSwKKyAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgbV9qaXQuZ3JhcGgoKS5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLAogICAgICAgICBzdGF0aWNf
Y2FzdDx2b2lkKj4oYnVmZmVyKSwgc2l6ZV90KG5vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC05NzY5LDcgKzk3NzcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKE5vZGUqIG5vZGUpCiAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNw
cmVhZFNsb3csIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwgYnVmZmVyLCBub2RlLT5udW1DaGlsZHJlbigpKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNwcmVhZFNsb3csIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYnVmZmVyLCBu
b2RlLT5udW1DaGlsZHJlbigpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtOTk0OSw3ICs5OTU3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAgICAgfQog
CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAot
ICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVj
dCksIHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOworICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIHRlbXBW
YWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgIH0KIAogICAgIEdQUlRlbXBv
cmFyeSB0ZW1wNCh0aGlzKTsKQEAgLTEwMTY4LDcgKzEwMTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFycmF5SW5kZXhPZihOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZT
dHJpbmcsIGxlbmd0aEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIs
IHNlYXJjaEVsZW1lbnRHUFIsIGluZGV4R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25BcnJheUluZGV4T2ZTdHJpbmcsIGxlbmd0aEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRHUFIsIGluZGV4R1BSKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChs
ZW5ndGhHUFIsIG5vZGUpOwpAQCAtMTAxODMsMTEgKzEwMTkxLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBcnJheUluZGV4T2YoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAg
ICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25BcnJheUluZGV4T2ZWYWx1ZURvdWJsZSwgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVEb3VibGUs
IGxlbmd0aEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNl
YXJjaEVsZW1lbnRSZWdzLCBpbmRleEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBBcnJheTo6SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6Ci0gICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlSW50MzJPckNv
bnRpZ3VvdXMsIGxlbmd0aEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VH
UFIsIHNlYXJjaEVsZW1lbnRSZWdzLCBpbmRleEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlSW50MzJPckNvbnRpZ3VvdXMsIGxlbmd0aEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1l
bnRSZWdzLCBpbmRleEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDI1Niw3ICsx
MDI2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VMZW5ndGhHUFIsIHJlc3VsdFJl
Z3MpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAg
ICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgYmFzZUdQUikpOwor
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJy
YXlQdXNoLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVS
ZWdzLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDMwMiw3ICsxMDMxMCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBmYXN0UGF0aCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxFbmNv
ZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkpKTsKIAotICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVy
YXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwg
dGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVt
ZW50Q291bnQpKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgc3RvcmFnZS51c2Uo
KTsKQEAgLTEwMzI3LDcgKzEwMzM1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
cmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxl
bmd0aEdQUiwgcmVzdWx0UmVncyk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9u
QXJyYXlQdXNoRG91YmxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
dmFsdWVGUFIsIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZSwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlRlBSLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMDM3MSw3ICsxMDM3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1
c2goTm9kZSogbm9kZSkKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYXN0UGF0aCA9
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGJ1ZmZlckdQUiwgVHJ1
c3RlZEltbVB0cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRh
dGFCdWZmZXIoKSkpKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZSwg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQ
UiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNo
RG91YmxlTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CiAKICAg
ICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgc3RvcmFnZS51c2UoKTsKQEAgLTEwNDA0LDcgKzEw
NDEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxlbmd0aEdQUiwgcmVzdWx0UmVn
cyk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBiYXNlR1BSKSk7Cisg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJh
eVB1c2gsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJl
Z3MsIGJhc2VHUFIpKTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBu
b2RlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNDQ4LDcgKzEwNDU2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBmYXN0UGF0aCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxFbmNvZGVk
SlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkpKTsKIAogICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCks
IHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVu
dENvdW50KSkpOworICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywg
b3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291
bnQpKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgc3RvcmFnZS51c2UoKTsKQEAg
LTEwNTAzLDggKzEwNTExLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzT2JqZWN0
KE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2ZJc09iamVj
dChOb2RlKiBub2RlKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgIAog
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAtMTA1MzYs
NyArMTA1NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mSXNPYmplY3Qo
Tm9kZSogbm9kZSkKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgc2xv
d1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblR5cGVPZklz
T2JqZWN0LCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25UeXBlT2ZJc09iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2Fk
R1BSKCkpKTsKICAgICAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEwNTQ2LDggKzEwNTUy
LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZklzT2JqZWN0KE5vZGUqIG5v
ZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NhbGxhYmxlKE5vZGUqIG5vZGUs
IFNfSklUT3BlcmF0aW9uX0dDIHNsb3dQYXRoT3BlcmF0aW9uKQogewotICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwotICAgIAogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpOwogICAgIApAQCAtMTA1NzMsNyArMTA1NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSXNDYWxsYWJsZShOb2RlKiBub2RlLCBTX0pJVE9wZXJhdGlvbl9HQyBzbG93UGF0
aE9wZQogICAgIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENh
bGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3Vs
dEdQUiwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHNsb3dQYXRo
T3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0
LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLAogICAgICAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSkpOwogICAgIAogICAg
IGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTA1ODksMTQgKzEwNTkzLDEyIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJc0NvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklzQ29uc3RydWN0b3IsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Jc0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVP
ZihOb2RlKiBub2RlKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgIAog
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1Zh
bHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAtMTA2MDgs
NyArMTA2MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mKE5vZGUqIG5v
ZGUpCiAgICAgbV9qaXQuZW1pdFR5cGVPZigKICAgICAgICAgdmFsdWVSZWdzLCByZXN1bHRHUFIs
CiAgICAgICAgIFsmXSAoVHlwZW9mVHlwZSB0eXBlLCBib29sIGZhbGxzVGhyb3VnaCkgewotICAg
ICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCB2bSgpLnNtYWxsU3RyaW5ncy50eXBlU3RyaW5nKHR5cGUpKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1faml0LmdyYXBoKCksIHZtKCkuc21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlw
ZSkpLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgaWYgKCFmYWxsc1Rocm91Z2gpCiAgICAgICAg
ICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfSwKQEAgLTEwNjE5
LDcgKzEwNjIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKiBu
b2RlKQogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZPYmplY3QsIHJlc3Vs
dEdQUiwgZ2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
blR5cGVPZk9iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAK
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMDY2OCw3ICsxMDY3MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lzQ29uc3RhbnQoTm9kZSogbm9kZSkK
IHsKICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRy
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+
Y2VsbCgpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIo
KSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJh
bmQoKS0+Y2VsbCgpKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghbm9kZS0+Y29u
c3RhbnQoKS0+dmFsdWUoKS5pc0NlbGwoKSB8fCAhbm9kZS0+Y29uc3RhbnQoKS0+dmFsdWUoKSk7
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpA
QCAtMTA5MzksMTMgKzEwOTQxLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxs
RE9NKE5vZGUqIG5vZGUpCiAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQgKyAxOwogICAgIHN3aXRjaCAoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ocmVp
bnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0
UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9H
UD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
MjoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9u
X0dQUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVnc1sxXSk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUFA+KGZ1bmN0aW9uLmdldCgp
KSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHJlZ3NbMF0sIHJlZ3NbMV0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAg
ICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUFBQPihm
dW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUFA+KGZ1bmN0aW9uLmdl
dCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTA5Njks
OSArMTA5NzEsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihO
b2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGlmIChPcHRp
b25zOjp1c2VKSVRDYWdlKCkpCi0gICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJ
VE9wZXJhdGlvbl9HSklQPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIGlkZW50aWZpZXJVSUQobm9kZS0+Y2FsbERPTUdldHRlckRh
dGEoKS0+aWRlbnRpZmllck51bWJlciksIGdldHRlci5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAg
ICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKSVA+KEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVt
YmVyKSwgZ2V0dGVyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSkk+KFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRp
ZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyKSk7Cisg
ICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSkk+KEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgaWRlbnRpZmllclVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVt
YmVyKSk7CiAKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsICZ2bSgpLnRvcENhbGxGcmFtZSk7CiAgICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmln
aW4obV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKQEAgLTExMTEyLDEwICsxMTExNCwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25z
dHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwog
CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRv
U3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdz
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDYWxs
U3RyaW5nQ29uc3RydWN0b3IpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
YWxsU3RyaW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wMVJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3Ry
aW5nQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMVJlZ3MpOwogICAgICAgICB9CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTExMTQyLDEyICsxMTE0NCwx
MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25z
dHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICAgICAgc2xvd1BhdGgyLmxpbmso
Jm1faml0KTsKICAgICAgICAgfQogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBUb1N0cmluZykK
LSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gU3Ry
aW5nVmFsdWVPZikKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nVmFs
dWVPZiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1ZhbHVlT2YsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENhbGxTdHJpbmdDb25zdHJ1Y3Rv
cik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7Cisg
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3Rvciwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAg
ICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgaWYgKGRvbmUu
aXNTZXQoKSkKQEAgLTExMjE4LDEwICsxMTIyMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2Rl
KgogICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Ub1N0cmluZ09uQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJp
bmdPbkNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMUdQ
Uik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2Fs
bFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q2FsbFN0cmluZ0NvbnN0cnVjdG9yT25DZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcDFHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
YWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wMUdQUik7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAgLTExMjc0LDcgKzExMjc2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9k
ZSkKICAgICBjb250aW51YXRpb24ubGluaygmbV9qaXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQo
bV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7
CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25GdW5jdGlvblRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBmdW5jdGlvbi5ncHIoKSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkZ1bmN0aW9uVG9TdHJpbmcs
IHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmN0aW9uLmdw
cigpKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CkBAIC0xMTI4
OCw3ICsxMTI5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmlu
Z1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSogbm9kZSwgaW50CiB7CiAgICAgYXV0byBjYWxs
VG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBhdXRvIHZh
bHVlUmVnKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1
ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywg
VHJ1c3RlZEltbTMyKHJhZGl4KSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICB9OwpAQCAtMTEzMzMsNyAr
MTEzMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRo
UmFkaXgoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gY2FsbFRvU3RyaW5nID0gWyZdIChhdXRvIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdEdQUiwgYXV0byB2YWx1ZVJlZywgR1BSUmVnIHJhZGl4R1BS
KSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywg
cmFkaXhHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWcsIHJhZGl4R1BSKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgIH07CkBAIC0xMTQzMSw3ICsxMTQzMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVOZXdTeW1ib2woTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk5ld1N5bWJvbFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdTeW1ib2xXaXRoU3RyaW5nRGVzY3JpcHRpb24sIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUik7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE0NDIsNyArMTE0NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3U3ltYm9sKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhE
ZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRS
ZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlv
biwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KQEAgLTExNTY1LDcgKzExNTY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dE5ld1R5cGVkQXJyYXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlwZWRBcnJheVQK
ICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBl
ZEFycmF5VHlwZSksCi0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOworICAgICAgICByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJ1Y3R1cmUsIHNpemVHUFIsIHN0b3Jh
Z2VHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTExNTkw
LDEzICsxMTU5MiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UmVnZXhwKE5v
ZGUqIG5vZGUpCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwog
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PFJlZ0V4cE9iamVjdD4ocmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBz
bG93UGF0aCk7CiAKLSAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAgICAgVHJ1c3RlZEltbVB0cihu
b2RlLT5jZWxsT3BlcmFuZCgpKSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFuZEZsYWdzKCkpKTsKKyAgICBtX2pp
dC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KHJlc3VsdEdQUiwgUmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFuZEZsYWdzKCkpKTsKICAg
ICBtX2ppdC5zdG9yZVZhbHVlKGxhc3RJbmRleFJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhy
ZXN1bHRHUFIsIFJlZ0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkpOwogICAgIG1faml0
Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3UmVnZXhwV2l0aExhc3RJbmRleCwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnZXhwLCBsYXN0SW5kZXhSZWdz
KSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlz
LCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCByZWdleHAsIGxhc3RJbmRleFJlZ3MpKTsKIAogICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTEyNTIyLDcgKzEyNTIyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKE5vZGUqIG5vZGUsIFN3aXRj
aERhdGEqIGRhdGEsIEdQUlIKIHsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHZhbHVlLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaCk7CiAgICAg
YXV0byBpc1JvcGUgPSBtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0Y2gpOwotICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMsIG9wZXJhdGlv
blJlc29sdmVSb3BlLCBzY3JhdGNoLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWUp
KTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBv
cGVyYXRpb25SZXNvbHZlUm9wZSwgc2NyYXRjaCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHZhbHVlKSk7CiAgICAgCiAgICAgYWRkQnJhbmNoKAogICAgICAgICBtX2ppdC5icmFuY2gz
MigKQEAgLTEyNzY0LDcgKzEyNzY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRj
aFN0cmluZ09uU3RyaW5nKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEsIEdQUlIKIAogICAg
IGlmICghY2FuRG9CaW5hcnlTd2l0Y2ggfHwgdG90YWxMZW5ndGggPiBPcHRpb25zOjptYXhpbXVt
QmluYXJ5U3RyaW5nU3dpdGNoVG90YWxMZW5ndGgoKSkgewogICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5n
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5z
d2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmluZyk7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgp
LCAmdW5saW5rZWRUYWJsZSwgc3RyaW5nKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgbV9qaXQuZmFySnVtcChzdHJpbmcsIEpTU3dpdGNoUHRyVGFnKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTI4MDEsNyArMTI4MDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0U3dpdGNoU3RyaW5nT25TdHJpbmcoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BS
UgogICAgIAogICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxS
ZWdpc3RlcnMoc3RyaW5nKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmlu
Zywgc3RyaW5nLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmluZyk7CisgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YS0+c3dpdGNoVGFibGVJ
bmRleCksICZ1bmxpbmtlZFRhYmxlLCBzdHJpbmcpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1faml0LmZhckp1bXAoc3Ry
aW5nLCBKU1N3aXRjaFB0clRhZyk7CkBAIC0xMjk0OCw3ICsxMjk0OCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcg
YWNjZXNzb3JHUFIgPSBhY2Nlc3Nvci5ncHIoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IFB1dEdldHRlckJ5SWQgPyBvcGVyYXRpb25Q
dXRHZXR0ZXJCeUlkIDogb3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigp
KSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGFjY2Vzc29yR1BSKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG5vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1dEdldHRlckJ5
SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2Rl
LT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEyOTY2LDcgKzEyOTY2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEdldHRlclNldHRlckJ5SWQoTm9kZSogbm9k
ZSkKICAgICBHUFJSZWcgc2V0dGVyR1BSID0gc2V0dGVyLmdwcigpOwogCiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRlckdQUiwg
c2V0dGVyR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRl
ckdQUiwgc2V0dGVyR1BSKTsKICNlbHNlCiAgICAgLy8gVGhlc2UgSlNWYWx1ZXMgbWF5IGJlIEpT
VW5kZWZpbmVkIE9SIEpTRnVuY3Rpb24qLgogICAgIC8vIEF0IHRoYXQgdGltZSwKQEAgLTEyOTc4
LDcgKzEyOTc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEdldHRlclNldHRl
ckJ5SWQoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyBzZXR0ZXJSZWdzID0gc2V0dGVyLmpz
VmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUHV0R2V0dGVyU2V0dGVyLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nl
c3NvckF0dHJpYnV0ZXMoKSwgZ2V0dGVyUmVncy5wYXlsb2FkR1BSKCksIHNldHRlclJlZ3MucGF5
bG9hZEdQUigpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRl
clJlZ3MucGF5bG9hZEdQUigpLCBzZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0xMjk5Miw3ICsxMjk5Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGUoTm9kZSogbm9kZSkKICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uUmVzb2x2ZVNjb3BlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZSwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xMzAwNCw3ICsxMzAwNCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5F
dmFsKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0Zs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29w
ZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCkpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5n
RnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSk7CiB9CkBAIC0xMzAzMiw3ICsxMzAzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXREeW5hbWljVmFyKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkdldER5bmFtaWNWYXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBzY29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2Rl
LT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0RHluYW1pY1Zh
ciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBp
ZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8o
KSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUpOwogfQpAQCAtMTMwNDYsNyArMTMwNDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZh
bHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwot
ICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9u
UHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVy
VUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CisgICAg
Y2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRE
eW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTMxMTIs
NyArMTMxMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QWNjZXNzb3JCeVZh
bChOb2RlKiBub2RlKQogICAgIEdQUlJlZyBhY2Nlc3NvckdQUiA9IGFjY2Vzc29yLmdwcigpOwog
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHN1YnNjcmlwdFJlZ3MsIG5vZGUtPmFj
Y2Vzc29yQXR0cmlidXRlcygpLCBhY2Nlc3NvckdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBzdWJzY3JpcHRS
ZWdzLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEzMjg5LDcgKzEz
Mjg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1JlcGxhY2UoTm9kZSog
bm9kZSkKIAogICAgICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3Ry
LCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJl
Z0V4cEdQUik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQ
cm90b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSKTsKICAgICAgICAgICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlKQpAQCAtMTMzMTAs
NyArMTMzMTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nUmVwbGFjZShO
b2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUiwgcmVwbGFjZUdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJl
Z0V4cFN0cmluZywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
c3RyaW5nR1BSLCByZWdFeHBHUFIsIHJlcGxhY2VHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAg
ICAgIGlmIChzYW1wbGUpCkBAIC0xMzMzMiw3ICsxMzMzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUqIG5vZGUpCiAKICAgICBmbHVzaFJlZ2lzdGVy
cygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljLCByZXN1bHQuZ3By
KCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdSZWdzLCBzZWFyY2hSZWdzLCBy
ZXBsYWNlUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlR2VuZXJpYywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3RyaW5nUmVncywgc2VhcmNoUmVncywgcmVwbGFjZVJlZ3MpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgIGlm
IChzYW1wbGUpCkBAIC0xMzM1Myw3ICsxMzM1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVSZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3koTm9kZSogbm9kZSkKICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBjYWxsT3BlcmF0aW9uKAogICAg
ICAgICBvcGVyYXRpb25SZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3ksIHJlc3VsdFJlZ3MsCi0g
ICAgICAgIGdsb2JhbE9iamVjdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgp
KSwgYXJndW1lbnRHUFIpOworICAgICAgICBnbG9iYWxPYmplY3RHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIGFy
Z3VtZW50R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTEzMzczLDcgKzEzMzczLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cE1hdGNoRmFzdEdsb2JhbChOb2RlKiBub2RlKQogICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGNhbGxPcGVyYXRp
b24oCiAgICAgICAgIG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdEdsb2JhbFN0cmluZywgcmVzdWx0
UmVncywKLSAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxP
cGVyYW5kKCkpLCBhcmd1bWVudEdQUik7CisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2Vs
bCgpKSwgYXJndW1lbnRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtMTM1NTcsNyArMTM1NTcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUp
CiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5n
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVl
UmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVm
aW5lRGF0YVByb3BlcnR5U3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNTc0LDcg
KzEzNTc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0
eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQ
cm9wZXJ0eVN0cmluZ0lkZW50LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwg
aWRlbnRHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudEdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVz
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTM1ODYsNyArMTM1ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUp
OwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVn
cywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNTk3LDcgKzEzNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VD
aGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BS
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHksIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3MsIHZhbHVl
UmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNjM4LDcgKzEzNjM4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAg
ICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQ
Uiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRy
aWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpAQCAtMTM2NTUsNyArMTM2NTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGls
ZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50R1BSLCBnZXR0ZXJHUFIsIHNldHRl
ckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVm
aW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZ0lkZW50LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVz
R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTM2NjcsNyArMTM2NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihu
b2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0
dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vz
c29yUHJvcGVydHlTeW1ib2wsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BS
LCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0x
MzY3OCw3ICsxMzY3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVBY2Nl
c3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIHByb3BlcnR5UmVncywgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHksIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3MsIGdldHRl
ckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM4MTAsNyArMTM4MTAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0TWFwQnVja2V0TmV4dChOb2RlKiBub2RlKQog
ICAgICAgICBBU1NFUlQobm9kZS0+YnVja2V0T3duZXJUeXBlKCkgPT0gQnVja2V0T3duZXJUeXBl
OjpTZXQpOwogICAgICAgICBzZW50aW5lbCA9IHZtKCkuc2VudGluZWxTZXRCdWNrZXQoKTsKICAg
ICB9Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBzZW50aW5lbCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3Rh
bnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgc2VudGluZWwp
LCByZXN1bHRHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQpOwogCiAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTM4NzIsNyArMTM4NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVGhyb3coTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVGhyb3dERkcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3Mp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dERkcsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgbV9qaXQuYnJlYWtwb2ludCgpOwogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTM4ODQsNyAr
MTM4ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVGhyb3dTdGF0aWNFcnJvcihO
b2RlKiBub2RlKQogICAgIEdQUlJlZyBtZXNzYWdlR1BSID0gbWVzc2FnZS5ncHIoKTsKICAgICBz
cGVjdWxhdGVTdHJpbmcobm9kZS0+Y2hpbGQxKCksIG1lc3NhZ2VHUFIpOwogICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWVzc2FnZUdQUiwgbm9kZS0+ZXJyb3JUeXBlKCkp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvciwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG1lc3NhZ2VHUFIsIG5vZGUtPmVycm9yVHlwZSgpKTsKICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICBu
b1Jlc3VsdChub2RlKTsKQEAgLTEzOTc0LDcgKzEzOTc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlKE5vZGUqIG5vZGUpCiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsK
LSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRN
b2RlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGlu
ZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVt
ZXJhdG9yR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC0xNDA0NywxMiArMTQwNDcsMTIgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAg
ICAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0oKS5zbWFsbFN0cmluZ3Muc2VudGluZWxT
dHJpbmcoKSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHZtKCkuc21hbGxTdHJpbmdz
LnNlbnRpbmVsU3RyaW5nKCkpLCByZXN1bHRHUFIpOwogICAgICAgICBkb25lQ2FzZXMuYXBwZW5k
KG1faml0Lmp1bXAoKSk7CiAgICAgICAgIG9wZXJhdGlvbkNhbGwubGluaygmbV9qaXQpOwogICAg
IH0KIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9w
ZXJ0eU5hbWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGluZGV4LCBt
b2RlLCBlbnVtZXJhdG9yKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JO
ZXh0VXBkYXRlUHJvcGVydHlOYW1lLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBpbmRleCwgbW9kZSwgZW51bWVyYXRvcik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CkBAIC0xNDA5Niw5ICsxNDA5Niw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9ySGFzUHJvcGVydHkoTm9k
ZSogbm9kZSwgU2xvd1BhdGhGdW5jdGlvblR5CiAgICAgICAgIG9wZXJhdGlvbkNhc2VzLmxpbmso
Jm1faml0KTsKIAogICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxpZEdQUlJl
ZykKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BS
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2Rl
R1BSKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1
bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3Ms
IHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eU5hbWVSZWdzLCBpbmRleEdQUiwgbW9kZUdQ
Uik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgZG9uZS5saW5r
KCZtX2ppdCk7CkBAIC0xNDIwMCw3ICsxNDIwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeUlkV2l0aFRoaXMoTm9kZSogbm9kZSkKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCi0gICAg
ICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZhbHVl
UmVncywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZhbHVlUmVn
cywgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTQyODEsNyArMTQyODEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxs
T3JPdGhlclVzZSkgewogICAgICAgICAgICAgYXV0byBub3RPdGhlciA9IG1faml0LmJyYW5jaElm
Tm90T3RoZXIoYmFzZVJlZ3MsIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0oKS5lbXB0eVByb3BlcnR5TmFt
ZUVudW1lcmF0b3IoKSksIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxp
bmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHZtKCku
ZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgICAg
ICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBub3RPdGhlci5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIH0KQEAgLTE0MzM5LDcgKzE0MzM5LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogCiAg
ICAgICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQ
cm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yQ2VsbCwgc2NyYXRjaDFHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
QEAgLTE0MzU0LDcgKzE0MzU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
b3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVu
dW1lcmF0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdz
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MpOwogICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
fQpAQCAtMTQ0NDMsOSArMTQ0NDMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
Q2F0KE5vZGUqIG5vZGUpCiAKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgaWYgKG5vZGUtPmNoaWxkMygpKQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blN0ckNhdDMsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0
ckNhdDMsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJl
Z3MsIG9wMlJlZ3MsIG9wM1JlZ3MpOwogICAgIGVsc2UKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25TdHJDYXQyLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJD
YXQyLCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdz
LCBvcDJSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2VsbFJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMTQ1MTUsNyArMTQ1MTUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGJpZ0xl
bmd0aC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1
Y3R1cmVHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0cik7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBA
IC0xNDU0Myw3ICsxNDU0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJh
eVdpdGhPbmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2ppdC5ncmFwaCgp
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7CisgICAgICAg
ICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNv
bmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwpAQCAtMTQ1NzgsNyArMTQ1NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVG9UaGlzKE5vZGUqIG5vZGUpCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9U
aGlzU3RyaWN0OwogICAgIGVsc2UKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7
Ci0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
ZnVuY3Rpb24sIHRlbXBSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVl
UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMs
IHRoaXMsIGZ1bmN0aW9uLCB0ZW1wUmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHRoaXNWYWx1ZVJlZ3MpKTsKIAogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUpOwog
fQpAQCAtMTQ2MjgsNyArMTQ2MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0S2V5c09yT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogCiAgICAgICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0J1dEFycmF5QnVmZmVy
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHRHUFIsICZ2bSgpLCBh
cnJheVN0cnVjdHVyZSwgc2NyYXRjaDNHUFIpKTsKIAotICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmpl
Y3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93
blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9iamVjdEdQUikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0
aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNP
YmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
UikpOwogCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE0NjQzLDcgKzE0NjQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlv
bk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2Jq
ZWN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlv
bk9iamVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2Jq
ZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKQEAgLTE0NjU4LDcgKzE0NjU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSog
bm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9w
ZXJhdGlvbk9iamVjdEtleXMgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RSZWdzKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmpl
Y3RLZXlzIDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0UmVncyk7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OwpAQCAtMTQ2ODUsNyArMTQ2ODUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2Jq
ZWN0QXNzaWduKE5vZGUqIG5vZGUpCiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGls
ZDIoKSwgc291cmNlR1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEFzc2lnbk9iamVjdCwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25PYmplY3RBc3NpZ25PYmplY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCB0YXJnZXRHUFIsIHNvdXJjZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDY5OCw3ICsxNDY5OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSogbm9kZSkKICAgICAg
ICAgSlNWYWx1ZVJlZ3Mgc291cmNlUmVncyA9IHNvdXJjZS5qc1ZhbHVlUmVncygpOwogCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2Jq
ZWN0QXNzaWduVW50eXBlZCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwg
c291cmNlUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWdu
VW50eXBlZCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNl
UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1
bHQobm9kZSk7CkBAIC0xNDcyMyw3ICsxNDcyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk9iamVjdENyZWF0ZU9iamVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgcHJvdG90eXBlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmpl
Y3RDcmVhdGVPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHByb3RvdHlwZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3MzgsNyArMTQ3MzgsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGUsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgcHJvdG90eXBlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3OTAsMTQg
KzE0NzkwLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVUaGlzKE5vZGUq
IG5vZGUpCiAgICAgbV9qaXQuZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdEdQUiwg
aW5saW5lQ2FwYWNpdHlHUFIpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0
aW9uQ3JlYXRlVGhpcywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2Fs
bGVlR1BSLCBub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjYWxsZWVHUFIsIG5vZGUtPmlu
bGluZUNhcGFjaXR5KCkpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkK
IHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAK
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjYWxsZWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0xNDgxNSw3ICsxNDgxNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAg
R1BSUmVnIHJhcmVEYXRhR1BSID0gc3RydWN0dXJlR1BSOwogCiAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+aXNJbnRlcm5h
bFByb21pc2UoKSA/IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlU3RydWN0dXJlKCkgOiBn
bG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgIGF1
dG8gZmFzdFByb21pc2VQYXRoID0gbV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWws
IGNhbGxlZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbm9k
ZS0+aXNJbnRlcm5hbFByb21pc2UoKSA/IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IoKSA6IGdsb2JhbE9iamVjdC0+cHJvbWlzZUNvbnN0cnVjdG9yKCkpKTsKKyAgICBh
dXRvIGZhc3RQcm9taXNlUGF0aCA9IG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoQ0NhbGxI
ZWxwZXJzOjpFcXVhbCwgY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2ppdC5ncmFwaCgpLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gZ2xvYmFsT2JqZWN0LT5p
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvcigpIDogZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3Ry
dWN0b3IoKSkpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIApA
QCAtMTQ4MjcsNyArMTQ4MjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
UHJvbWlzZShOb2RlKiBub2RlKQogICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJl
SUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gSlNJbnRlcm5hbFByb21pc2U6OmluZm8o
KSA6IEpTUHJvbWlzZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBD
Q2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09m
ZnNldCgpKSkpOwotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LmxvYWRV
bmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBo
KCksIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSkpKTsKIAogICAgIGZhc3RQcm9taXNlUGF0aC5saW5rKCZtX2ppdCk7CkBAIC0xNDg0MCw3
ICsxNDg0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5v
ZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+
OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6
RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0KSkpKTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9q
aXQudm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nh
c2VzLCB0aGlzLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gb3BlcmF0aW9uQ3JlYXRlSW50
ZXJuYWxQcm9taXNlIDogb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZSwgcmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVH
UFIpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0
aGlzLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQ
cm9taXNlIDogb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVHUFIp
KTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0ODQ5LDcgKzE0
ODQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSog
bm9kZSkKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4KIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUq
IG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24pCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2Fs
bGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OwpAQCAtMTQ4NzYsNyArMTQ4NzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Jl
YXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcgogICAgIG1f
aml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVH
UFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0NsYXNzOjppbmZvKCkpLCBzY3Jh
dGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxw
ZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1
cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBz
Y3JhdGNoMUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFH
UFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6
Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BS
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAgICAgYXV0byBidXR0ZXJm
bHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwpAQCAtMTQ4ODcsNyArMTQ4ODcsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBu
b2RlLCBPcGVyYXRpb24gb3BlcgogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShpbml0
aWFsVmFsdWVzW2luZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRl
cm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAg
ICAgbV9qaXQubXV0YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCks
IGNhbGxlZUdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVHUFIpKTsKIAogICAg
IGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1MDExLDcgKzE1MDExLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiAgICAg
YWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhh
cmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKG5vdFByaW1pdGl2ZSwgdGhpcywgb3BlcmF0aW9uVG9QcmltaXRpdmUsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlzLCBvcGVy
YXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
LCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CkBAIC0xNTAz
NSw3ICsxNTAzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Byb3BlcnR5S2V5
KE5vZGUqIG5vZGUpCiAgICAgYWxyZWFkeVByb3BlcnR5S2V5LmxpbmsoJm1faml0KTsKICAgICBt
X2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25U
b1Byb3BlcnR5S2V5LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
dW1lbnRSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uVG9Qcm9wZXJ0eUtleSwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlNDZWxsLCBVc2VDaGlsZHJlbkNhbGxlZEV4
cGxpY2l0bHkpOwogfQpAQCAtMTUwNjUsNyArMTUwNjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9OdW1lcmljKE5vZGUqIG5vZGUpCiAgICAgaXNIZWFwQmlnSW50LmxpbmsoJm1f
aml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7
CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKIAogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKIH0KQEAgLTE1MTAwLDcgKzE1
MTAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxOdW1iZXJDb25zdHJ1Y3Rv
cihOb2RlKiBub2RlKQogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCB0
ZW1wR1BSKSk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJl
Z3MpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJDb25z
dHJ1Y3RvciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3Vt
ZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAg
LTE1MTQ3LDcgKzE1MTQ3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ1NoYWRv
d0NoaWNrZW5UYWlsKE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBzY29wZVJlZyA9IHNjb3BlLmdwcigp
OwogCi0gICAgbV9qaXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQoc2hhZG93UGFja2V0UmVn
LCB0aGlzUmVncywgc2NvcGVSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5j
b2RlQmxvY2soKSksIGNhbGxTaXRlSW5kZXgpOworICAgIG1faml0LmVtaXRHZXRGcm9tQ2FsbEZy
YW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgc2NyYXRjaDFSZWcpOworICAg
IG1faml0LmxvZ1NoYWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tldFJlZywgdGhpc1Jl
Z3MsIHNjb3BlUmVnLCBzY3JhdGNoMVJlZywgY2FsbFNpdGVJbmRleCk7CiAgICAgbm9SZXN1bHQo
bm9kZSk7CiB9CiAKQEAgLTE1MTY2LDcgKzE1MTY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVNldEFkZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFzaEdQUik7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFzaEdQUik7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9
CkBAIC0xNTE4OCw3ICsxNTE4OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXBT
ZXQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwU2V0LCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIHZhbHVlUmVncywgaGFzaEdQUik7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBTZXQsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVncywgdmFsdWVSZWdzLCBoYXNoR1BS
KTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KQEAgLTE1NDA3LDcgKzE1NDA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90eXBlKHZtKCks
IG9iamVjdEdQUiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90
eXBlT2ZPYmplY3QsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb2JqZWN0R1BSKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU0MjQsNyArMTU0MjUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9k
ZSkKIAogICAgICAgICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCB2YWx1ZUdQUiwgcmVz
dWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsCi0gICAgICAg
ICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKSk7
CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
dmFsdWVSZWdzKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU1NTEsNyArMTU1NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplYwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlB
bGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKLSAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwKKyAg
ICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0
KSwKICAgICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9B
cnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLAogICAgICAgICBzaXplR1BSLCBzdG9yYWdlR1BS
KSk7CkBAIC0xNTY4NCw3ICsxNTY4NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVI
YXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25fR0NaIHNsCiAgICAg
fQogICAgIH0KIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQUikpOwog
fQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdENhdGNoTG9jYWwoTm9kZSog
bm9kZSkKQEAgLTE1ODA0LDExICsxNTgwNSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYg
KEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRo
ID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHVi
SW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBT
dHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhG
dW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVS
ZWdzLAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9S
ZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywKICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0g
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVz
dWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCisgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCiAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkp
OwogICAgIH0KIApAQCAtMTU4MzcsNyArMTU4MzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpn
ZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxl
cgogICAgICAgICBhcmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
ICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKICAgICAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNo
aWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0xNTg1OCw3ICsxNTg1OSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5vZGUqIG5vZGUs
IE1hY3JvQXNzZW1ibGVyCiAgICAgbV9qaXQuY29tcGFyZTMyKGNvbmQsIGFyZzFSZWdzLnBheWxv
YWRHUFIoKSwgYXJnMlJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRHUFIpOwogCiAgICAgaWYgKCFp
c0tub3duSW50ZWdlcihub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8ICFpc0tub3duSW50ZWdlcihu
b2RlLT5jaGlsZDIoKS5ub2RlKCkpKQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKKyAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBoZWxwZXJGdW5j
dGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3Ms
IGFyZzJSZWdzKSk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KQEAgLTE1ODk4LDcgKzE1ODk5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVQZWVwaG9sZUJyYW5jaChOb2Rl
KiBub2RlLCBOb2RlKiBicmFuY2hOb2RlLAogICAgICAgICBhcmcyLnVzZSgpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24s
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVn
cyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgYnJhbmNoVGVzdDMyKGNhbGxSZXN1
bHRDb25kaXRpb24sIHJlc3VsdEdQUiwgdGFrZW4pOwpAQCAtMTU5MjIsNyArMTU5MjMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5v
ZGUsIE5vZGUqIGJyYW5jaE5vZGUsCiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7
CiAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAg
LTE1OTYyLDcgKzE1OTYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJ
bnRFcXVhbGl0eShOb2RlKiBub2RlKQogICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZtX2ppdCk7CiAK
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTYxMTUsNyArMTYxMTYsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKIAogICAgIGF1
dG8gaXNOb25FbXB0eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5v
blplcm8sIGFsbG9jYXRvckdQUik7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcobV9qaXQuZ3JhcGgoKS5tX3Zt
KSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyhtX2ppdC5n
cmFwaCgpLm1fdm0pKSwgcmVzdWx0R1BSKTsKIAogICAgIGlzTm9uRW1wdHlTdHJpbmcubGluaygm
bV9qaXQpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKQEAgLTE2MTIzLDExICsxNjEy
NCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkK
ICAgICBzd2l0Y2ggKG51bU9wR1BScykgewogICAgIGNhc2UgMjoKICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
b3BHUFJzWzBdLCBvcEdQUnNbMV0pKTsKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVy
YXRpb25NYWtlUm9wZTIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wR1BSc1swXSwgb3BHUFJzWzFdKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xv
d1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSkpOworICAgICAg
ICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1sy
XSkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTYxNDEsMTEgKzE2MTQyLDExIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgc3dpdGNoIChudW1PcEdQUnMpIHsKICAgICBjYXNlIDI6Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdLCBvcEdQUnNbMl0pOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CkBAIC0xNjI0OCw5ICsxNjI0OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVt
ZXJhdG9yR2V0QnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICBpZiAoIXJlY292ZXJHZW5lcmlj
Q2FzZS5lbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52
YWxpZEdQUlJlZykKLSAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwocmVjb3ZlckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zl
ck5hbWVBbmRHZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIGluZGV4R1BS
LCBlbnVtZXJhdG9yR1BSKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRv
clJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkp
LCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nh
c2UsIHRoaXMsIG9wZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBl
bnVtZXJhdG9yR1BSKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJl
Y292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKICAgICAgICAgfQog
CiAgICAgICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNjk1MzQ1NTc5OWU1OGQ2MmU5YzlmZTNl
NDY2NjNhOWVkYmRiMmE0NC4uY2ViNWRlZjQ2NTk5ZjBiNjVlMDcyMDc4ZDVkOTYxYTAxMDA1NzZm
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMTIyLDcgKzEyMiw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgZXhwbGlj
aXQgVHJ1c3RlZEltbVB0cihUKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEpT
Q2VsbCwgVD46OnZhbHVlLCAiVG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBoIG11c3QgYmUg
YXdhcmUgb2YgaXQuIFVzZSBTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIgaW5zdGVhZC4iKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9v
ZjxKU0NlbGwsIFQ+Ojp2YWx1ZSwgIlRvIHVzZSBhIEdDIHBvaW50ZXIsIHRoZSBncmFwaCBtdXN0
IGJlIGF3YXJlIG9mIGl0LiBVc2UgU3BlY3VsYXRpdmVKSVQ6OkpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50IGluc3RlYWQuIik7CiAgICAgICAgIH0KIAogICAgICAgICBleHBsaWNpdCBUcnVz
dGVkSW1tUHRyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQpAQCAtOTc0LDE2ICs5NzQs
MTUgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBhcHBlbmRDYWxsKENDYWxsSGVs
cGVyczo6QWRkcmVzcyhHUFJJbmZvOjpub25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCkpOwogICAg
IH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIENvZGVCbG9jayog
Y29kZUJsb2NrKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZy
YW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIEdQUlJl
ZyBjb2RlQmxvY2tHUFIpCiAgICAgewotICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJs
b2NrKiBhcyBhIHdlYWstcG9pbnRlci4KLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Vl9K
SVRPcGVyYXRpb25fQ2I+KFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8dm9pZCo+KGNvZGVCbG9j
aykpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Vl9KSVRPcGVyYXRpb25fQ2I+KGNv
ZGVCbG9ja0dQUik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxi
YWNrT25FeGNlcHRpb24ob3BlcmF0aW9uKTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oWl9KSVRPcGVy
YXRpb25fRyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVS
b2xsYmFja09uRXhjZXB0aW9uKFpfSklUT3BlcmF0aW9uX0cgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHM8Wl9KSVRPcGVyYXRpb25fRz4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPFpfSklU
T3BlcmF0aW9uX0c+KGdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICAgICAKQEAgLTExNTgsNiArMTE1NywxMiBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgewogICAgICAgICByZXR1cm4gYWRkQnJhbmNoKG1faml0LmJyYW5jaFB0cihj
b25kLCBsZWZ0LCByaWdodCksIGRlc3RpbmF0aW9uKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIHZvaWQgYnJhbmNoVW5saW5rZWRDb25zdGFudChK
SVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFUgcmlnaHQsIEJh
c2ljQmxvY2sqIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZEJyYW5jaCht
X2ppdC5icmFuY2hVbmxpbmtlZENvbnN0YW50KGNvbmQsIGxlZnQsIHJpZ2h0KSwgZGVzdGluYXRp
b24pOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgog
ICAgIHZvaWQgYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFQgdmFsdWUsIFUgbWFzaywgQmFzaWNCbG9jayogZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA3
ZmI1NjUyMzMyZjljNjBmNjIyMjg2ZmVhYTllNTZiYTYzMjdmNmNhLi5jNTVkNDUxMTQxMmVhMTll
NzExN2I2MjVkYzlkZTA0MzdjZjY5NjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxNSwxMyArMjE1LDEzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiAgICAgaWYgKGJhc2VUYWdHUFJP
ck5vbmUgPT0gSW52YWxpZEdQUlJlZykgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0
QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAg
ICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlUGF5bG9hZEdQUiksCiAgICAgICAgICAgICBpZGVudGlmaWVyLnJh
d0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5
SWRGdW5jdGlvbih0eXBlKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwg
cmVzdWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgaWRlbnRpZmllci5yYXdC
aXRzKCkpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3Mo
YmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7
CiAgICAgfQogCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAg
LTI1MSw3ICsyNTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRo
aXMoCiAgICAgaWYgKGJhc2VUYWdHUFJPck5vbmUgPT0gSW52YWxpZEdQUlJlZyAmJiB0aGlzVGFn
R1BSID09IEludmFsaWRHUFJSZWcpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09w
dGltaXplLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlUGF5bG9hZEdQUiksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZSh0
aGlzUGF5bG9hZEdQUiksCiAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CkBAIC0y
NjEsNyArMjYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlz
KAogICAgICAgICAKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9u
ZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQ
UiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJ
bmZvKCksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNW
YWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMo
KSk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuCiAgICAg
ICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgIEdQUlJl
ZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAg
ICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0Lmdwcigp
OwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0LmxvYWRV
bmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
b2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVz
dWx0UGF5bG9hZEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0UGF5bG9hZEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJl
bW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxl
cjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJl
c3VsdFBheWxvYWRHUFIpOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5k
LCBOCiAgICAKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9i
YWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSBy
ZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BS
KTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJyYW5jaFB0cihKSVRDb21w
aWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIs
IGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBO
b2RlKiBicmFuY2hOb2RlCiAgICAgICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGFy
ZzFQYXlsb2FkR1BSLCBhcmcyUGF5bG9hZEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7
CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2Fk
R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxs
LCByZXN1bHRQYXlsb2FkR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVBheWxv
YWRHUFIsIGFyZzJQYXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMVBheWxvYWRHUFIsIGFyZzJQYXlsb2FkR1BSKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwog
CkBAIC00MzAsNyArNDMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQ
ZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgLy8g
RklYTUU6IEFkZCBmYXN0IHBhdGhzIGZvciB0d29DZWxscywgbnVtYmVyIGV0Yy4KIAogICAgICAg
ICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKIApAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNK
U1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICAg
ICAgbm90RXF1YWxDYXNlLmxpbmsoJm1faml0KTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNw
aWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlBheWxvYWRHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBh
eWxvYWRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUGF5bG9hZEdQUiwg
YXJnMlBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9k
ZSwgYm9vbCBpbnZlcnQpCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBwYXRocy4KIAogICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFt
ZUZhc3RDYXNlKHZtKCksIG1faml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hH
UFIyLCBzY3JhdGNoR1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNl
dCwgc2xvd0Nhc2UpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0
Lmp1bXAoKTsKICAgICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCkpOwog
ICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFi
b3J0V2l0aFJlYXNvbihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAg
ICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgLy8gUmlnaHQgbm93
LCBhcmd1bWVudHMgaXMgaW4gYXJndW1lbnRzVGFnR1BSL2FyZ3VtZW50c1BheWxvYWRHUFIgYW5k
IHRoZSByZWdpc3RlciBmaWxlIGlzCiAgICAgICAgICAgICAvLyBmbHVzaGVkLgotICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGFy
Z3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiksIG51bVVzZWRTdGFja1Nsb3RzLCBk
YXRhLT5maXJzdFZhckFyZ09mZnNldCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoYXJndW1lbnRzVGFnR1BSLCBhcmd1
bWVudHNQYXlsb2FkR1BSKSwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zm
c2V0KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUgY2Fs
bGVlIGZyYW1lLCBidXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCkBAIC02NzUs
NyArNjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUobV9qaXQsIEdQUkluZm86OnJldHVyblZhbHVl
R1BSLCBmYWxzZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgIG1faml0
LmFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA2ICogc2l6ZW9mKHZvaWQq
KSkpKSwgc2NyYXRjaEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJh
cmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc2NyYXRjaEdQUjEsIEpTVmFsdWVSZWdzKGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRz
UGF5bG9hZEdQUiksIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0Zy
YW1lLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHNjcmF0Y2hHUFIxLCBKU1ZhbHVlUmVncyhhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1Bh
eWxvYWRHUFIpLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIG1f
aml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAg
ICAgICAgIH0KQEAgLTgxNiw3ICs4MTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2Fs
bChOb2RlKiBub2RlKQogICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7CiAgICAgICAgIG1f
aml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIEpJVENvbXBpbGVyOjpzdGFj
a1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUt
PmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRp
b25DYWxsRXZhbCk+KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIHByZXBh
cmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb25D
YWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC04MjUsNyArODI1
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgd2UgbWVhbnQgdG8gbWFrZSBhIG5vcm1hbCBjYWxs
LiBPb3BzLgogICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKHJlcXVpcmVkQnl0ZXMp
LCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5sb2Fk
VmFsdWUoSklUQ29tcGlsZXI6OmNhbGxlZUZyYW1lU2xvdChDYWxsRnJhbWVTbG90OjpjYWxsZWUp
LCBKU1ZhbHVlUmVncyB7IEdQUkluZm86OnJlZ1QxLCBHUFJJbmZvOjpyZWdUMCB9KTsKLSAgICAg
ICAgbV9qaXQuZW1pdFZpcnR1YWxDYWxsKHZtKCksIGdsb2JhbE9iamVjdCwgaW5mbyk7CisKKyAg
ICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICBt
X2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6
bm9uQ2VsbFBvaW50ZXIobV9ncmFwaCwgaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKKyAgICAgICAg
bV9qaXQuZW1pdFZpcnR1YWxDYWxsV2l0aG91dE1vdmluZ0dsb2JhbE9iamVjdCh2bSgpLCBHUFJJ
bmZvOjpyZWdUMiwgaW5mby0+Y2FsbE1vZGUoKSk7CiAgICAgICAgIAogICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKICAgICAgICAgc2V0UmVzdWx0QW5kUmVzZXRTdGFjaygpOwpAQCAtOTI5LDcg
KzkzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgfQogCi0gICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6
cmVnVDMpOwogICAgIGluZm8tPmVtaXRTbG93UGF0aCh2bSgpLCBtX2ppdCk7CiAKICAgICBkb25l
LmxpbmsoJm1faml0KTsKQEAgLTE0OTksMTAgKzE1MDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvQm9vbGVhbk9iamVjdE9yT3RoZXIoRWRnZSBub2RlVXNlLCBib29sIGludmVy
dCkKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
UGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsK
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQ
UiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hVbmxpbmtlZENvbnN0YW50KAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNl
dCgpKSwgCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5v
cmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMTU4MCw3ICsxNTgzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvQm9vbGVhbihOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAogICAgICAgICBib29sIHNob3Vs
ZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9ICFtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludElzU3RpbGxWYWxpZCgpOwotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIG1faml0LmVtaXRDb252
ZXJ0VmFsdWVUb0Jvb2xlYW4odm0oKSwgYXJnMS5qc1ZhbHVlUmVncygpLCByZXN1bHRHUFIsIHRl
bXAuZ3ByKCksIHZhbHVlRlBSLmZwcigpLCB0ZW1wRlBSLmZwcigpLCBzaG91bGRDaGVja01hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIGdsb2JhbE9iamVjdCwgaW52ZXJ0KTsKICAgICAgICAgYm9vbGVh
blJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC0xNjI0LDEwICsx
NjI3LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKEVk
Z2Ugbm9kZVVzZSwgQmFzaWNCbG9jayogdGFrZW4sIEJhCiAKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlVXNl
LAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNo
VW5saW5rZWRDb25zdGFudCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0
cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAg
aXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0xNzI3
LDcgKzE3MzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJhbmNoKE5vZGUqIG5vZGUp
CiAgICAgICAgIHVzZShub2RlLT5jaGlsZDEoKSk7CiAKICAgICAgICAgYm9vbCBzaG91bGRDaGVj
a01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRJc1N0aWxsVmFsaWQoKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBhdXRvIGZhbHNleSA9IG1faml0
LmJyYW5jaElmRmFsc2V5KHZtKCksIHZhbHVlUmVncywgcmVzdWx0R1BSLCB0ZW1wLmdwcigpLCB2
YWx1ZUZQUi5mcHIoKSwgdGVtcEZQUi5mcHIoKSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBhZGRCcmFuY2goZmFsc2V5LCBub3RUYWtl
bik7CiAgICAgICAgIGp1bXAodGFrZW4sIEZvcmNlSnVtcCk7CkBAIC0xNzk3LDcgKzE4MDAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdl
dEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwg
cHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlW
YWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBw
cm9wZXJ0eVJlZ3MpOwogICAgICAgICAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNo
OjpObykKICAgICAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMTg0MSwxMSArMTg0NCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVk
TGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgaWYgKGJhc2VSZWdzLnRhZ0dQUigpID09
IEludmFsaWRHUFJSZWcpIHsKICAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZh
bE9wdGltaXplLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNl
UmVncy5wYXlsb2FkR1BSKCkpLCBwcm9wZXJ0eVJlZ3MpOworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBwcm9wZXJ0eVJl
Z3MpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBudWxscHRyLCBiYXNlUmVncywgcHJvcGVydHlS
ZWdzKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncyk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIG1faml0LmFkZEdldEJ5VmFsKGdlbiwgc2xvd1BhdGgu
Z2V0KCkpOwpAQCAtMTk0Miw3ICsxOTQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdElu
dCwKLSAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICBicmVhazsK
QEAgLTIwMDgsNyArMjAxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZh
bChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAg
ICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMDY1
LDcgKzIwNjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSog
bm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogCiAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjY1Miw3ICsyNjU1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUo
KS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXMsCi0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CisgICAgICAg
ICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCBw
cm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0yNzUzLDcgKzI3NTYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgs
Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOworICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSLCBub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc4OCw3ICsyNzkxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAg
ICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BS
KSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQodmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwgbm9kZSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTI4MjYsNyArMjgyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xv
d0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wLAotICAgICAgICAgICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFs
dWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVUYWdHUFIsIHZh
bHVlUGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI5ODMsNyArMjk4
Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Ly8gSW5zdGVhZCBvZiB0aGUgc2xvdyBwYXRoIGdlbmVyYXRvciwgd2UgZW1pdCBjYWxsT3BlcmF0
aW9uIGhlcmUuCiAgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAgICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncyk7CiAgICAgICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm90TnVtYmVyOwpAQCAtMjk5Nyw3ICszMDAwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBub3ROdW1iZXIu
bGluaygmbV9qaXQpOwogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
UmVncyk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKKyAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpOwogICAgICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIApAQCAtMzUyNCw3ICszNTI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xv
YmFsT2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQ
UiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAg
ICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxPYmpl
Y3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAgICAgbV9qaXQu
Y29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90
ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0LmdwcigpKTsKQEAgLTM1ODgsNyArMzU5MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk51bWJlcklzSW50ZWdlciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
dW1iZXJJc0ludGVnZXIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGlucHV0UmVncyk7CiAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzYzMSw3ICszNjM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TWFwSGFzaCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdz
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBIYXNoLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICBicmVhazsKQEAgLTM2NjIsOSArMzY2NSw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIGhhc2hHUFIp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVncywg
aGFzaEdQUik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBtYXBHUFIsIGtleVJlZ3MsIGhhc2hHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG1hcEdQUiwga2V5UmVncywgaGFzaEdQUik7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0zOTIzLDcgKzM5MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHRlbXBHUFIpOwogICAgICAgICAgICAga2V5
UmVncyA9IEpTVmFsdWVSZWdzKHRlbXBHUFIsIGtleVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAg
ICAgfQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc093blByb3BlcnR5LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIsIGtleVJlZ3MpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc093blByb3BlcnR5LCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIsIGtleVJlZ3MpOwogICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKQEAgLTQyMTEsNyArNDIxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmJsZXNz
Qm9vbGVhbihHUFJSZWcpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJhbmRv
bShOb2RlKiBub2RlKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYTkx
MmViNTk4Yjk4MjJhMzU5NmExYzE4Y2UxZTYyM2U4YWFhNjgxMS4uODBmYjM5YTM2NmVhMmZhNmQ2
MGM5NjZmMjdmOThkY2I3MjczYjhjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xNzgsMTIgKzE3OCwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVn
IGJhc2VHUFIsIEdQUlJlZwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9u
KHR5cGUpLAogICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1p
emluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKICAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3
Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4u
c3R1YkluZm8oKSwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KICAgICAK
ICAgICBtX2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMjE1LDEyICsy
MTUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIKICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpc09wdGltaXplLAogICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkp
OworICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAogICAgICAgICAgICAgRG9u
dFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAg
ICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwg
dGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCB0aGlzR1BSLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEdldEJ5SWRXaXRo
VGhpcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5l
ZChFZGdlIG9wZXJhbgogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxv
Y2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0
R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9i
amVjdEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVj
dEdQUik7CiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFyZ0dQUiwgcmVz
dWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIpOwogICAgICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9j
YWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0R1BSKTsKQEAg
LTI5OSw2ICsyOTksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
b2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogICAgICAgICBHUFJUZW1w
b3JhcnkgbG9jYWxHbG9iYWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1v
dGVHbG9iYWxPYmplY3QodGhpcyk7CiAKKyAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0
R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZW1vdGVHbG9i
YWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CisKICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgbm90Q2VsbDsKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5v
ZGUoKSkpCiAgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFs
dWVSZWdzKGFyZ0dQUikpOwpAQCAtMzA3LDkgKzMxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5k
LCBOCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlw
ZUluZm9GbGFnc09mZnNldCgpKSwgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZElt
bTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCBub3RUYWtlbik7CiAKLSAgICAgICAgR1BSUmVn
IGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAg
IEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7
Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3Jh
cGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFVu
bGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgo
KSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUodm0oKSwgYXJnR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJyYW5jaFB0cihKSVRD
b21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RH
UFIsIHRha2VuKTsKQEAgLTQ1Miw3ICs0NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQog
ICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFHUFIsIGFyZzJHUFIsIGlu
dmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwogICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21w
YXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKQEAgLTUwMyw3ICs1MDQs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEo
Tm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogCiAgICAgICAgIGp1bXAoaW52ZXJ0ID8gdGFr
ZW4gOiBub3RUYWtlbiwgRm9yY2VKdW1wKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmlj
dEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcy
R1BSKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0
aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpKTsKICAgICAgICAgYnJh
bmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblpl
cm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgIH0KIApAQCAtNTQxLDcgKzU0Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBu
b2RlLCBib29sIGludmVydCkKICAgICAgICAgbm90RXF1YWxDYXNlLmxpbmsoJm1faml0KTsKICAg
ICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIApAQCAtNTk3LDcgKzU5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVy
dCkKIAogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KDApLCByZXN1bHRHUFIpOwogCi0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJS
ZWdzKSk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKIApAQCAtNzM0LDcgKzczNSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBlbWl0
U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSh2bSgpLCBtX2ppdCwgc2NyYXRjaEdQUjIsIHNjcmF0
Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGlubGluZUNhbGxGcmFtZSwgZGF0YS0+
Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBzbG93Q2FzZS5saW5rKCZtX2pp
dCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxv
d0ZvclZhcmFyZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9i
amVjdCkpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3Zl
cmZsb3dGb3JWYXJhcmdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBn
bG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJnc1Rocm93aW5nUGF0aERpZE5v
dFRocm93KTsKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNzYzLDcgKzc2NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGlzRmx1c2hlZCgpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgLy8gUmlnaHQgbm93LCBhcmd1bWVudHMgaXMgaW4gYXJndW1lbnRz
R1BSIGFuZCB0aGUgcmVnaXN0ZXIgZmlsZSBpcyBmbHVzaGVkLgotICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c0dQUiwgbnVtVXNlZFN0
YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6cmV0dXJuVmFsdWVH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNHUFIsIG51bVVzZWRT
dGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CiAgICAgICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBOb3cgd2UgaGF2
ZSB0aGUgYXJndW1lbnQgY291bnQgb2YgdGhlIGNhbGxlZSBmcmFtZSwgYnV0IHdlJ3ZlIGxvc3Qg
dGhlIGFyZ3VtZW50cyBvcGVyYW5kLgpAQCAtNzczLDcgKzc3NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBlbWl0U2V0VmFyYXJnc0Zy
YW1lKG1faml0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZmFsc2UsIHNjcmF0Y2hHUFIxLCBz
Y3JhdGNoR1BSMSk7CiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKC0oc2l6
ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxp
Z25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZih2b2lkKikpKSksIHNjcmF0Y2hHUFIxLCBKSVRDb21w
aWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjcmF0Y2hHUFIxLCBhcmd1bWVu
dHNHUFIsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7
CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNj
cmF0Y2hHUFIxLCBhcmd1bWVudHNHUFIsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoQ2FsbGVyRnJhbWVB
bmRQQykpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKICAgICAgICAgfQpAQCAtOTEwLDcgKzkxMSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIHJlcXVpcmVkQnl0ZXMgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCByZXF1aXJlZEJ5dGVz
KTsKICAgICAgICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwgSklU
Q29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwgR1BSSW5mbzo6cmVnVDEpOwotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86
OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPGRl
Y2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxKTsK
ICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBtX2ppdC5hcHBlbmRD
YWxsKG9wZXJhdGlvbkNhbGxFdmFsKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
QEAgLTkxOSw4ICs5MjAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSog
bm9kZSkKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB3ZSBtZWFudCB0byBtYWtl
IGEgbm9ybWFsIGNhbGwuIE9vcHMuCiAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIo
cmVxdWlyZWRCeXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAg
ICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgbV9qaXQuZW1pdFZpcnR1YWxD
YWxsKHZtKCksIGdsb2JhbE9iamVjdCwgY2FsbExpbmtJbmZvKTsKLSAgICAgICAgCisKKyAgICAg
ICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICBtX2pp
dC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6bm9u
Q2VsbFBvaW50ZXIobV9ncmFwaCwgY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAg
ICAgICBtX2ppdC5lbWl0VmlydHVhbENhbGxXaXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KHZtKCks
IEdQUkluZm86OnJlZ1QyLCBjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkpOworCiAgICAgICAgIGRv
bmUubGluaygmbV9qaXQpOwogICAgICAgICBzZXRSZXN1bHRBbmRSZXNldFN0YWNrKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTk5OSwxMyArMTAwMywxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICBDYWxsRnJhbWVTaHVmZmxlciBjYWxsRnJhbWVT
aHVmZmxlcihtX2ppdCwgc2h1ZmZsZURhdGEpOwogICAgICAgICBjYWxsRnJhbWVTaHVmZmxlci5z
ZXRDYWxsZWVKU1ZhbHVlUmVncyhKU1ZhbHVlUmVncyhHUFJJbmZvOjpyZWdUMCkpOwogICAgICAg
ICBjYWxsRnJhbWVTaHVmZmxlci5wcmVwYXJlRm9yU2xvd1BhdGgoKTsKKyAgICAgICAgLy8gRklY
TUUKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMyk7IC8vIEpTR2xvYmFsT2JqZWN0IG5lZWRz
IHRvIGJlIGluIHJlZ1QzCiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9qaXQubW92ZShjYWxsZWVH
UFIsIEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCisgICAg
ICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxP
YmplY3QgbmVlZHMgdG8gYmUgaW4gcmVnVDMKICAgICAgICAgaWYgKGlzVGFpbCkKICAgICAgICAg
ICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsgLy8gVGhpcyBuZWVkcyB0byBoYXBw
ZW4gYWZ0ZXIgd2UgbW92ZWQgY2FsbGVlR1BSIHRvIHJlZ1QwCiAgICAgfQogCi0gICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBH
UFJJbmZvOjpyZWdUMyk7IC8vIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIGJlIGluIHJlZ1QzCiAg
ICAgY2FsbExpbmtJbmZvLT5lbWl0U2xvd1BhdGgodm0oKSwgbV9qaXQpOwogCiAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CkBAIC0xODkwLDcgKzE4OTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQ29tcGFyZUVxUHRyKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFs
dWUuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5r
ZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBu
b2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwogICAgIG1faml0LmNvbXBh
cmU2NChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlR1BSLCByZXN1bHRHUFIsIHJlc3VsdEdQ
Uik7CiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAt
MTkzMSwxMCArMTkzNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFu
T2JqZWN0T3JPdGhlcihFZGdlIG5vZGVVc2UsIGJvb2wgaW52ZXJ0KQogCiAgICAgICAgIG1faml0
LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hVbmxpbmtlZENvbnN0YW50KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BS
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9i
YWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7
CiAgICAgfQpAQCAtMjA4NiwxMCArMjA5MiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
T2JqZWN0T3JPdGhlckJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYQog
CiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVlR1BSLCBzdHJ1Y3R1
cmVHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAg
ICAgIG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSkpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0
LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0yMTU1LDcgKzIxNjEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0VW50eXBlZEJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2Vu
LCBCYXNpY0JsbwogICAgICAgICAgICAgaWYgKCFpc0RlZmluaXRlbHlTdHJpbmcpCiAgICAgICAg
ICAgICAgICAgc2tpcFN0cmluZ0Nhc2UgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyh2YWx1ZUdQ
Uik7CiAKLSAgICAgICAgICAgIGJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVl
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3Ry
aW5nKHZtKCkpKSwgbm90VGFrZW4pOworICAgICAgICAgICAgYnJhbmNoVW5saW5rZWRDb25zdGFu
dChNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgbm90VGFrZW4pOwog
ICAgICAgICAgICAganVtcCh0YWtlbiwgRm9yY2VKdW1wKTsKIAogICAgICAgICAgICAgaWYgKCFp
c0RlZmluaXRlbHlTdHJpbmcpCkBAIC0yMTc5LDggKzIxODUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0VW50eXBlZEJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBC
YXNpY0JsbwogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSB7
CiAgICAgICAgICAgICBicmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwg
VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpLCB0YWtlbik7CiAgICAgICAgICAg
ICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgdGVtcDFHUFIpOwotICAg
ICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGds
b2JhbE9iamVjdCksIHRlbXAyR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENv
bnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB0ZW1wMkdQUik7CiAgICAgICAgICAgICBicmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wMUdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHRlbXAyR1BSLCB0YWtlbik7CiAgICAgICAgICAgICBqdW1wKG5vdFRh
a2VuLCBGb3JjZUp1bXApOwogICAgICAgICB9IGVsc2UKQEAgLTIzNzgsNyArMjM4Myw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29w
ZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMocmVzdWx0UmVncyk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlW
YWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9w
ZXJ0eUdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIpOwogICAgICAgICAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykK
ICAgICAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMjQzNCwxMSArMjQzOSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRh
PHN0ZDo6dHVwbGU8SgogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNl
dE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BS
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRp
bWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIG51bGxwdHIsIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIs
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICAgICAgfQogCiAgICAgICAgIG1faml0LmFkZEdl
dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMjUxMyw3ICsyNTE4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExh
bWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAg
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0UmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlS
ZWcpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAgICAgICAgfQogCiAKQEAgLTI2
MDUsNyArMjYxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2Rl
KiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQs
Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MuZ3ByKCksIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRSZWdzLmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywg
cHJvcGVydHlSZWcpKTsKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncy5ncHIo
KSwgbm9kZSk7CiAgICAgICAgIH0KIApAQCAtMjY2Myw3ICsyNjY4LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxz
dGQ6OnR1cGxlPEoKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25H
ZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICByZXN1bHRSZWcsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAg
IHJlc3VsdFJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3Bl
cnR5UmVnKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTI3MDMsMjggKzI3MDgsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlZ0V4cFRlc3RJbmxpbmUoTm9kZSogbm9kZSkKIAogICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7Ci0gICAgR1BSUmVnIGdsb2Jh
bE9iamVjdEdQUiA9IGdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICBHUFJSZWcgYmFzZUdQUiA9IGJh
c2UuZ3ByKCk7Ci0gICAgR1BSUmVnIGFyZ3VtZW50R1BSOwotICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwor
CiAgICAgR1BSVGVtcG9yYXJ5IHN0cmluZ0ltcGwodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0
cmluZ0RhdGEodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHN0ckxlbmd0aCh0aGlzKTsKICAgICBH
UFJUZW1wb3Jhcnkgb3V0cHV0KHRoaXMpOwotICAgIEdQUlRlbXBvcmFyeSByZXN1bHQyKHRoaXMp
OwogICAgIEdQUlRlbXBvcmFyeSB0ZW1wMCh0aGlzKTsKICAgICBHUFJUZW1wb3JhcnkgdGVtcDEo
dGhpcyk7Ci0gICAgR1BSVGVtcG9yYXJ5IHRlbXAyOworICAgIHN0ZDo6b3B0aW9uYWw8R1BSVGVt
cG9yYXJ5PiB0ZW1wMjsKKworICAgIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxPYmpl
Y3QuZ3ByKCk7CisgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBz
dHJpbmdJbXBsR1BSID0gc3RyaW5nSW1wbC5ncHIoKTsKICAgICBHUFJSZWcgc3RyaW5nRGF0YUdQ
UiA9IHN0cmluZ0RhdGEuZ3ByKCk7CiAgICAgR1BSUmVnIG91dHB1dEdQUiA9IG91dHB1dC5ncHIo
KTsKICAgICBHUFJSZWcgc3RyTGVuZ3RoR1BSID0gc3RyTGVuZ3RoLmdwcigpOwotICAgIEdQUlJl
ZyByZXN1bHQyR1BSID0gcmVzdWx0Mi5ncHIoKTsKICAgICBHUFJSZWcgdGVtcDBHUFIgPSB0ZW1w
MC5ncHIoKTsKICAgICBHUFJSZWcgdGVtcDFHUFIgPSB0ZW1wMS5ncHIoKTsKICAgICBHUFJSZWcg
dGVtcDJHUFIgPSBJbnZhbGlkR1BSUmVnOwotICAgIEdQUlJlZyBzd2FwUmVnID0gSW52YWxpZEdQ
UlJlZzsKIAogICAgIGF1dG8gaml0Q29kZUJsb2NrID0gcmVnRXhwLT5nZXRSZWdFeHBKSVRDb2Rl
QmxvY2soKTsKICAgICBBU1NFUlQoaml0Q29kZUJsb2NrKTsKQEAgLTI3MzIsNDQgKzI3MzMsMzEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cFRlc3RJbmxpbmUoTm9kZSogbm9k
ZSkKIAogI2lmICFDUFUoWDg2XzY0KQogICAgIGlmIChpbmxpbmVDb2RlU3RhdHM4Qml0Lm5lZWRz
VGVtcDIoKSkgewotICAgICAgICBHUFJUZW1wb3JhcnkgcmVhbFRlbXAyKHRoaXMpOwotICAgICAg
ICB0ZW1wMi5hZG9wdChyZWFsVGVtcDIpOwotICAgICAgICB0ZW1wMkdQUiA9IHRlbXAyLmdwcigp
OworICAgICAgICB0ZW1wMi5lbXBsYWNlKHRoaXMpOworICAgICAgICB0ZW1wMkdQUiA9IHRlbXAy
LT5ncHIoKTsKICAgICB9CiAjZW5kaWYKIAogICAgIHNwZWN1bGF0ZVJlZ0V4cE9iamVjdChub2Rl
LT5jaGlsZDIoKSwgYmFzZUdQUik7CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9u
ZTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgb3BlcmF0aW9uQ2FzZXM7Ci0KLSAgICBh
dXRvIHN3YXBSZWdJZk5lZWRlZCA9IFsmXSB7Ci0gICAgICAgIGlmIChnbG9iYWxPYmplY3RHUFIg
PT0gcmVzdWx0R1BSKSB7Ci0gICAgICAgICAgICBzd2FwUmVnID0gYWxsb2NhdGUoKTsKLSAgICAg
ICAgICAgIG1faml0Lm1vdmUoZ2xvYmFsT2JqZWN0R1BSLCBzd2FwUmVnKTsKLSAgICAgICAgICAg
IGdsb2JhbE9iamVjdEdQUiA9IHN3YXBSZWc7Ci0gICAgICAgIH0gZWxzZSBpZiAoYmFzZUdQUiA9
PSByZXN1bHRHUFIpIHsKLSAgICAgICAgICAgIHN3YXBSZWcgPSBhbGxvY2F0ZSgpOwotICAgICAg
ICAgICAgbV9qaXQubW92ZShiYXNlR1BSLCBzd2FwUmVnKTsKLSAgICAgICAgICAgIGJhc2VHUFIg
PSBzd2FwUmVnOwotICAgICAgICB9IGVsc2UgaWYgKGFyZ3VtZW50R1BSID09IHJlc3VsdEdQUikg
ewotICAgICAgICAgICAgc3dhcFJlZyA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZlKGFyZ3VtZW50R1BSLCBzd2FwUmVnKTsKLSAgICAgICAgICAgIGFyZ3VtZW50R1BSID0gc3dh
cFJlZzsKLSAgICAgICAgfQotICAgIH07CisgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CisKKyAgICBhdXRvIHJlZ0V4cFRlc3RJbmxpbmVDYXNlID0gWyZdKEdQUlJlZyBhcmd1
bWVudEdQUiwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0Nhc2VzKSB7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJndW1lbnRHUFIsIEpTU3RyaW5n
OjpvZmZzZXRPZlZhbHVlKCkpLCBzdHJpbmdJbXBsR1BSKTsKKyAgICAgICAgLy8gSWYgdGhlIHN0
cmluZyBpcyBhIHJvcGUgb3IgMTYgYml0LCB3ZSBjYWxsIHRoZSBvcGVyYXRpb24uCisgICAgICAg
IHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzdHJpbmdJbXBs
R1BSKSk7CisgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKAorICAg
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Olplcm8sCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdHJpbmdJbXBsR1BSLCBTdHJpbmdJbXBsOjpmbGFnc09mZnNldCgpKSwKKyAg
ICAgICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSk7CiAKLSAg
ICBhdXRvIHJlZ0V4cFRlc3RJbmxpbmVDYXNlID0gWyZdIHsKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJpbmdJbXBsR1BSLCBTdHJpbmdJbXBsOjpkYXRh
T2Zmc2V0KCkpLCBzdHJpbmdEYXRhR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0cmluZ0ltcGxHUFIsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9m
ZnNldCgpKSwgc3RyTGVuZ3RoR1BSKTsKIAotICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBzdHJp
bmdJbXBsR1BSOwotCi0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCBpbmRleEdQ
Uik7Ci0KKyAgICAgICAgLy8gQ2xvYmJlcmluZyBpbnB1dCByZWdpc3RlcnMgaXMgT0sgc2luY2Ug
d2UgYWxyZWFkeSBjYWxsZWQgZmx1c2hSZWdpc3RlcnMuCiAgICAgICAgIFlhcnI6OllhcnJKSVRS
ZWdpc3RlcnMgeWFyclJlZ2lzdGVyczsKICAgICAgICAgeWFyclJlZ2lzdGVycy5pbnB1dCA9IHN0
cmluZ0RhdGFHUFI7Ci0gICAgICAgIHlhcnJSZWdpc3RlcnMuaW5kZXggPSBpbmRleEdQUjsKKyAg
ICAgICAgeWFyclJlZ2lzdGVycy5pbmRleCA9IHN0cmluZ0ltcGxHUFI7CiAgICAgICAgIHlhcnJS
ZWdpc3RlcnMubGVuZ3RoID0gc3RyTGVuZ3RoR1BSOwogICAgICAgICB5YXJyUmVnaXN0ZXJzLm91
dHB1dCA9IG91dHB1dEdQUjsKICAgICAgICAgeWFyclJlZ2lzdGVycy5yZWdUMCA9IHRlbXAwR1BS
OwpAQCAtMjc4MCwxMDEgKzI3NjgsNzcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJl
Z0V4cFRlc3RJbmxpbmUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKGlubGluZUNvZGVTdGF0czhC
aXQubmVlZHNUZW1wMigpKQogICAgICAgICAgICAgeWFyclJlZ2lzdGVycy5yZWdUMiA9IHRlbXAy
R1BSOwogCi0gICAgICAgIHlhcnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIgPSByZXN1bHRHUFI7
Ci0gICAgICAgIHlhcnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIyID0gcmVzdWx0MkdQUjsKKyAg
ICAgICAgeWFyclJlZ2lzdGVycy5yZXR1cm5SZWdpc3RlciA9IHRlbXAwR1BSOworICAgICAgICB5
YXJyUmVnaXN0ZXJzLnJldHVyblJlZ2lzdGVyMiA9IHN0cmluZ0RhdGFHUFI7CiAKICAgICAgICAg
YXV0byBjb21tb25EYXRhID0gbV9qaXQuaml0Q29kZSgpLT5kZmdDb21tb24oKTsKKyAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHlhcnJSZWdpc3RlcnMuaW5kZXgpOwogICAgICAg
ICBZYXJyOjpqaXRDb21waWxlSW5saW5lZFRlc3QoJm1fZ3JhcGgubV9zdGFja0NoZWNrZXIsIHJl
Z0V4cC0+cGF0dGVybigpLCByZWdFeHAtPmZsYWdzKCksIFlhcnI6OkNoYXJTaXplOjpDaGFyOCwg
JnZtKCksIGNvbW1vbkRhdGEtPm1fYm95ZXJNb29yZURhdGEsIG1faml0LCB5YXJyUmVnaXN0ZXJz
KTsKIAotICAgICAgICBhdXRvIGZhaWxlZE1hdGNoID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6Okxlc3NUaGFuLCByZXN1bHRHUFIsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgICAgIGF1
dG8gZmFpbGVkTWF0Y2ggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4s
IHlhcnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIsIFRydXN0ZWRJbW0zMigwKSk7CiAKICAgICAg
ICAgLy8gIFNhdmVkIGNhY2hlZCByZXN1bHQKICNpZiBDUFUoWDg2XzY0KQogICAgICAgICBpZiAo
aW5saW5lQ29kZVN0YXRzOEJpdC5uZWVkc1RlbXAyKCkpIHsKICAgICAgICAgICAgIC8vIFNpbmNl
IHdlIHJldXNlZCBnbG9iYWxPYmplY3RHUFIgZm9yIHRlbXAyLCBsZXQncyByZXN0b3JlIHRoZSBn
bG9iYWwgb2JqZWN0LgotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdENv
bnN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4obm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUo
KSk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihn
bG9iYWxPYmplY3RDb25zdCksIGdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAgICBtX2ppdC5s
b2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKSks
IGdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIH0KICNlbmRpZgogCiAgICAgICAgIHB0cmRpZmZf
dCBvZmZzZXQgPSBKU0dsb2JhbE9iamVjdDo6cmVnRXhwR2xvYmFsRGF0YU9mZnNldCgpICsgUmVn
RXhwR2xvYmFsRGF0YTo6b2Zmc2V0T2ZDYWNoZWRSZXN1bHQoKTsKIAotICAgICAgICBtX2ppdC5z
dG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCByZWdFeHApLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJl
c3VsdDo6b2Zmc2V0T2ZMYXN0UmVnRXhwKCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVVbmxpbmtl
ZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHJlZ0V4cCks
IEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2Fj
aGVkUmVzdWx0OjpvZmZzZXRPZkxhc3RSZWdFeHAoKSkpOwogICAgICAgICBtX2ppdC5zdG9yZVB0
cihhcmd1bWVudEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBvZmZz
ZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdElucHV0KCkpKTsKLSAgICAgICAg
bV9qaXQuc3RvcmUzMihyZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVj
dEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JK
RUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBzdGFydCkpKTsKLSAgICAgICAgbV9qaXQuc3RvcmUz
MihyZXN1bHQyR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIG9mZnNl
dCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSArIE9CSkVDVF9PRkZTRVRP
RihNYXRjaFJlc3VsdCwgZW5kKSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHlhcnJSZWdpc3Rl
cnMucmV0dXJuUmVnaXN0ZXIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwg
b2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsgT0JKRUNUX09G
RlNFVE9GKE1hdGNoUmVzdWx0LCBzdGFydCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMih5YXJy
UmVnaXN0ZXJzLnJldHVyblJlZ2lzdGVyMiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2Jq
ZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpKTsKICAgICAgICAgbV9qaXQuc3RvcmU4
KFRydXN0ZWRJbW0zMigwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBv
ZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVpZmllZCgpKSk7CiAKLSAgICAg
ICAgaWYgKHN3YXBSZWcgIT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgIHVubG9jayhzd2Fw
UmVnKTsKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBkb25lQ2FzZXM7CiAKLSAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGRvbmUu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEp
LCB0ZW1wMEdQUik7CisgICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAog
ICAgICAgICBmYWlsZWRNYXRjaC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOwotICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1w
KCkpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgdGVtcDBHUFIpOworICAg
ICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisKKyAgICAgICAgcmV0dXJuIGRv
bmVDYXNlczsKICAgICB9OwogCiAgICAgaWYgKG5vZGUtPmNoaWxkMygpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywg
bm9kZS0+Y2hpbGQzKCkpOwotICAgICAgICBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwor
ICAgICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgc3Bl
Y3VsYXRlU3RyaW5nKG5vZGUtPmNoaWxkMygpLCBhcmd1bWVudEdQUik7CiAKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKIAotICAgICAgICBzd2FwUmVnSWZOZWVkZWQoKTsKLQotICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGFyZ3VtZW50R1BSLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc3RyaW5nSW1wbEdQUik7Ci0gICAgICAgIC8vIElmIHRoZSBz
dHJpbmcgaXMgYSByb3BlIG9yIDE2IGJpdCwgd2UgY2FsbCB0aGUgb3BlcmF0aW9uLgotICAgICAg
ICBvcGVyYXRpb25DYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzdHJp
bmdJbXBsR1BSKSk7Ci0gICAgICAgIG9wZXJhdGlvbkNhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hU
ZXN0MzIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKLSAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cmluZ0ltcGxHUFIsIFN0cmluZ0ltcGw6OmZsYWdzT2Zm
c2V0KCkpLAotICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQo
KSkpKTsKLQotICAgICAgICByZWdFeHBUZXN0SW5saW5lQ2FzZSgpOwotCi0gICAgICAgIG9wZXJh
dGlvbkNhc2VzLmxpbmsoJm1faml0KTsKLQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blJlZ0V4cFRlc3RTdHJpbmcsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBh
cmd1bWVudEdQUik7CisgICAgICAgIGF1dG8gZG9uZUNhc2VzID0gcmVnRXhwVGVzdElubGluZUNh
c2UoYXJndW1lbnRHUFIsIHNsb3dDYXNlcyk7CiAKKyAgICAgICAgc2xvd0Nhc2VzLmxpbmsoJm1f
aml0KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nLCB0
ZW1wMEdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1bWVudEdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKLSAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0g
ICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLQorICAgICAg
ICBkb25lQ2FzZXMubGluaygmbV9qaXQpOworICAgICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0
KHRlbXAwR1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIEpTVmFsdWVP
cGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUtPmNoaWxkMygpKTsKLSAgICBhcmd1bWVudEdQUiA9
IGFyZ3VtZW50LmdwcigpOworICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50Lmdwcigp
OwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIHN3YXBSZWdJZk5lZWRlZCgpOwotCi0g
ICAgb3BlcmF0aW9uQ2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChhcmd1bWVudEdQ
UikpOwotICAgIG9wZXJhdGlvbkNhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhh
cmd1bWVudEdQUikpOworICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxs
KGFyZ3VtZW50R1BSKSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdFN0
cmluZyhhcmd1bWVudEdQUikpOwogCi0gICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhhcmd1bWVudEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHN0cmluZ0lt
cGxHUFIpOwotICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSByb3BlIG9yIDE2IGJpdCwgd2UgY2Fs
bCB0aGUgb3BlcmF0aW9uLgotICAgIG9wZXJhdGlvbkNhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJ
ZlJvcGVTdHJpbmdJbXBsKHN0cmluZ0ltcGxHUFIpKTsKLSAgICBvcGVyYXRpb25DYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoVGVzdDMyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6WmVybywKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyaW5nSW1wbEdQUiwgU3RyaW5nSW1wbDo6
ZmxhZ3NPZmZzZXQoKSksCi0gICAgICAgIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4
Qml0KCkpKSk7CisgICAgYXV0byBkb25lQ2FzZXMgPSByZWdFeHBUZXN0SW5saW5lQ2FzZShhcmd1
bWVudEdQUiwgc2xvd0Nhc2VzKTsKIAotICAgIHJlZ0V4cFRlc3RJbmxpbmVDYXNlKCk7Ci0KLSAg
ICBvcGVyYXRpb25DYXNlcy5saW5rKCZtX2ppdCk7Ci0KLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblJlZ0V4cFRlc3QsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0R1BSLCBiYXNlR1BSLCBhcmd1
bWVudEdQUik7Ci0KLSAgICBkb25lLmxpbmsoJm1faml0KTsKKyAgICBzbG93Q2FzZXMubGluaygm
bV9qaXQpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdCwgdGVtcDBHUFIs
IGdsb2JhbE9iamVjdEdQUiwgYmFzZUdQUiwgYXJndW1lbnRHUFIpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKLSAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CisgICAgZG9uZUNhc2VzLmxpbmsoJm1faml0KTsKKyAgICB1bmJsZXNzZWRCb29sZWFuUmVz
dWx0KHRlbXAwR1BSLCBub2RlKTsKIH0KICNlbHNlCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUmVnRXhwVGVzdElubGluZShOb2RlKiBub2RlKQpAQCAtMzU0OCw3ICszNTEyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGlmICghc3Rv
cmFnZUVkZ2UpIHsKICAgICAgICAgICAgIGF1dG8gY2FsbFNsb3dQYXRoID0gWyZdICgpIHsKLSAg
ICAgICAgICAgICAgICBhdXRvIGdsb2JhbE9iamVjdEltbVB0ciA9IFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpOworICAgICAgICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRyID0gSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBZGQsIHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CkBAIC0zNzU3
LDcgKzM3MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0lzTG9j
a0ZyZWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzSXNMb2NrRnJlZSwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQUik7CiAg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODk5LDcgKzM4
NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpKSwgdmFsdWVHUFIpKTsKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgICAgICAg
ICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0aCwgdmFs
dWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAgICAgICAg
ICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5n
dGgsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBjYW4ndCBrbm93IGZvciBzdXJlIHRoYXQg
dGhlIHJlc3VsdCBpcyBhbiBpbnQgYmVjYXVzZSBvZiB0aGUgc2xvdyBwYXRocy4gOi0vCiAgICAg
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVlR1BSLCBub2RlKTsKQEAgLTM5MzIsNyArMzg5Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0
aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQXJy
YXlQb3AsIHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwor
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wLCB2
YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsKIAogICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTQwNTgsNyArNDAyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgLy8gSW5zdGVhZCBvZiB0aGUgc2xvdyBwYXRoIGdlbmVyYXRvciwg
d2UgZW1pdCBjYWxsT3BlcmF0aW9uIGhlcmUuCiAgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkgewogICAgICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uVG9OdW1iZXIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3Vt
ZW50R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsKICAg
ICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFuY2hJZk5v
dE51bWJlcihhcmd1bWVudEdQUik7CkBAIC00MDY3LDcgKzQwMzEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIG5vdE51bWJlci5saW5r
KCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIp
OwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAt
NDU0Myw3ICs0NTA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKIAogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNT
dHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRC
eVZhbFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1Zh
bHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG5v
ZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJp
Y3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpA
QCAtNDY4MSw3ICs0NjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsK
ICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2Jq
ZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJl
bW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2ppdC5ncmFwaCgpLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExv
YWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAg
ICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFs
T2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00ODg2
LDcgKzQ4NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNw
aWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpT
VmFsdWVSZWdzKGlucHV0R1BSKSk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk1hcEhhc2gsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFs
dWVSZWdzKGlucHV0R1BSKSk7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC00OTMxLDcgKzQ4OTUs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAg
c2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCkBAIC01MDc5LDkgKzUwNDMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBzbG93UGF0aENhc2VzLmxpbmsoJm1faml0KTsKICAg
ICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKGluZGV4R1BSKTsKICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTWFwT2JqZWN0VXNlKQotICAgICAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7Cisg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5R1BSLCBo
YXNoR1BSKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOworICAgICAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CiAgICAgICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKQEAgLTUwODks
OSArNTA1Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAog
ICAgICAgICBub3RQcmVzZW50SW5UYWJsZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTWFwT2JqZWN0VXNlKQotICAgICAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCB2bSgpLnNlbnRp
bmVsTWFwQnVja2V0KCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlu
a2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwg
dm0oKS5zZW50aW5lbE1hcEJ1Y2tldCgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCB2bSgpLnNlbnRpbmVsU2V0QnVja2V0KCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9qaXQuZ3JhcGgoKSwgdm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01Mzk0LDcgKzUzNTgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc2xvd1BhdGgubGluaygmbV9q
aXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc093blByb3BlcnR5LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIsIGtleUdQUik7CisgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJvcGVydHksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUiwga2V5R1BSKTsKICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5jcHAKaW5kZXggMGM0ZDE5NWQ5MTQ4NTcyMjkz
ODRlOTg0OGQxNzk5NGRhMzk0MTI2ZC4uZGYwOGI1MDVhMTgwMTEwOTQxYTZmMTI3NGJmZmEyZDk2
OTE4MTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1bmtzLmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCkBAIC0xNDEsNiArMTQyLDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJh
dG9yKFZNJiB2bSkKICAgICBwdHJkaWZmX3Qgb2Zmc2V0T2ZGcmFtZVNpemUgPSAwOyAvLyBUaGlz
IGlzIHRoZSBERkcgZnJhbWUgY291bnQuCiAgICAgcHRyZGlmZl90IG9mZnNldE9mVGFyZ2V0UEMg
PSBvZmZzZXRPZkZyYW1lU2l6ZSArIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgcHRyZGlm
Zl90IG9mZnNldE9mUGF5bG9hZCA9IG9mZnNldE9mVGFyZ2V0UEMgKyBzaXplb2YoRW5jb2RlZEpT
VmFsdWUpOworICAgIHB0cmRpZmZfdCBvZmZzZXRPZkNvZGVCbG9jayA9IG9mZnNldE9mUGF5bG9h
ZCArIHNpemVvZihSZWdpc3RlcikgKiBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2s7CiAgICAgcHRy
ZGlmZl90IG9mZnNldE9mTG9jYWxzID0gb2Zmc2V0T2ZQYXlsb2FkICsgc2l6ZW9mKFJlZ2lzdGVy
KSAqIENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzOwogICAgIAogICAgIGppdC5tb3Zl
KEdQUkluZm86OnJldHVyblZhbHVlR1BSMiwgR1BSSW5mbzo6cmVnVDApOwpAQCAtMTUxLDEwICsx
NTMsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1
bmtHZW5lcmF0b3IoVk0mIHZtKQogICAgIE1hY3JvQXNzZW1ibGVyOjpMYWJlbCBsb29wID0gaml0
LmxhYmVsKCk7CiAgICAgaml0LnN1YlB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEp
LCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgaml0Lm5lZ1B0cihHUFJJbmZvOjpyZWdUMSwgR1BSSW5m
bzo6cmVnVDQpOwotICAgIGppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBv
ZmZzZXRPZkxvY2FscyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICBqaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fz
c2VtYmxlcjo6VGltZXNFaWdodCwgb2Zmc2V0T2ZMb2NhbHMgKyBzaXplb2YoaW50MzJfdCkpLCBH
UFJJbmZvOjpyZWdUMyk7Ci0gICAgaml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OnJl
Z1Q0LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgLXN0YXRpY19jYXN0PGludHB0cl90Pihz
aXplb2YoUmVnaXN0ZXIpKSkpOwotICAgIGppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QzLCBNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
OjpyZWdUNCwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsIC1zdGF0aWNfY2FzdDxpbnRwdHJf
dD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBzdGF0aWNfY2FzdDxpbnRwdHJfdD4oc2l6ZW9mKGludDMy
X3QpKSkpOworICAgIGppdC5sb2FkVmFsdWUoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJ
bmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBv
ZmZzZXRPZkxvY2FscyksIEpTVmFsdWVSZWdzOjp3aXRoVHdvQXZhaWxhYmxlUmVncyhHUFJJbmZv
OjpyZWdUMiwgR1BSSW5mbzo6cmVnVDMpKTsKKyAgICBqaXQuc3RvcmVWYWx1ZShKU1ZhbHVlUmVn
czo6d2l0aFR3b0F2YWlsYWJsZVJlZ3MoR1BSSW5mbzo6cmVnVDIsIEdQUkluZm86OnJlZ1QzKSwg
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6cmVnVDQsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCAtc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgaml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIEdQUkluZm86OnJlZ1QxLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KC1zdGF0aWNfY2FzdDxpbnRwdHJfdD4oQ2FsbEZyYW1l
OjpoZWFkZXJTaXplSW5SZWdpc3RlcnMpKSkpLmxpbmtUbyhsb29wLCAmaml0KTsKICAgICAKICAg
ICBqaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zm
c2V0T2ZUYXJnZXRQQyksIEdQUkluZm86OnJlZ1QxKTsKQEAgLTE2Miw4ICsxNjIsMjEgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9y
KFZNJiB2bSkKICAgICBqaXQuYWJvcnRXaXRoUmVhc29uKERGR1VucmVhc29uYWJsZU9TUkVudHJ5
SnVtcERlc3RpbmF0aW9uKTsKIAogICAgIG9rLmxpbmsoJmppdCk7CisKKyAgICBqaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgb2Zmc2V0T2ZDb2RlQmxv
Y2spLCBHUFJJbmZvOjpyZWdUMik7CisgICAgaml0LmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihH
UFJJbmZvOjpyZWdUMiwgQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKTsKKyNpZiBBU1NFUlRfRU5B
QkxFRAorICAgIGppdC5wcm9iZURlYnVnKFs9XShQcm9iZTo6Q29udGV4dCYgY3R4KSB7CisgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY3R4LmZwPENhbGxGcmFtZSo+KCktPmNvZGVCbG9j
aygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29k
ZUJsb2NrLT5qaXRUeXBlKCkpKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgaml0LnJlc3RvcmVD
YWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0udG9wRW50cnlGcmFt
ZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCk7CisjaWYgVVNF
KEpTVkFMVUU2NCkKKyAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6cmVnVDIsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFu
dHNSZWdpc3Rlcik7CisjZW5kaWYKIAogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJlZ1QxLCBH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAppbmRleCAwMjRkZGYwYWY2NzcyYjg1Y2Y0NjQ5ZTliYWIy
NGZjNDg2NDBlNTk2Li40NTg4YTFlNTMyM2VmYWM2YzkwYzYwOWNhNDI3OGE0MzFhMTYwNDFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC00
NSwxNCArNDUsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRXhlY3V0YWJsZUJhc2UqIEFzc2Vt
Ymx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgQ29k
ZU9yaWdpbiYgY29kZU9yaWdpbikKLXsKLSAgICBhdXRvKiBpbmxpbmVDYWxsRnJhbWUgPSBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSgpOwotICAgIGlmICghaW5saW5lQ2FsbEZyYW1lKQotICAg
ICAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKLSAgICByZXR1cm4gaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci19Ci0K
IEFzc2VtYmx5SGVscGVyczo6SnVtcCBBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmRmFzdFR5cGVk
QXJyYXkoR1BSUmVnIGJhc2VHUFIpCiB7CiAgICAgcmV0dXJuIGJyYW5jaDMyKApAQCAtMTM3NCw2
ICsxMzY2LDIyIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZU9yQ29weUxMSW50QmFz
ZWxpbmVDYWxsZWVTYXZlc0ZvcihDb2RlQmxvY2sqIGNvZGVCCiAgICAgc3Bvb2xlci5maW5hbGl6
ZUdQUigpOwogfQogCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFB1dENvZGVCbG9ja1RvRnJh
bWVJblByb2xvZ3VlKEdQUlJlZyByZXN1bHQsIGJvb2wgaXNDb25zdHJ1Y3RvcikKK3sKKyAgICBl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90OjpjYWxsZWUsIHJlc3Vs
dCk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVj
dXRhYmxlT3JSYXJlRGF0YSgpKSwgcmVzdWx0KTsKKyAgICBhdXRvIGhhc0V4ZWN1dGFibGUgPSBi
cmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCwgVHJ1c3RlZEltbTMyKEpTRnVuY3Rpb246OnJhcmVE
YXRhVGFnKSk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZFeGVjdXRhYmxlKCkgLSBKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZyksIHJlc3VsdCk7
CisgICAgaGFzRXhlY3V0YWJsZS5saW5rKHRoaXMpOworICAgIGlmIChpc0NvbnN0cnVjdG9yKQor
ICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1dGFibGU6Om9mZnNl
dE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCByZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAg
bG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpvZmZzZXRPZkNvZGVC
bG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7CisKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBF
eGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZzZXRPZkNvZGVCbG9jaygpKSwgcmVzdWx0KTsK
KyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCAyN2Rk
NTk3OTBiNzFmOThhMjE3YjEyNTg3NzY3NzE2NWFjNjhlZTBjLi45OGIzYzM1ZThhODVlNjQ5ODY1
ZWUzMDI5ZWY2NWRmMWQwMmRjZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmgKQEAgLTQwNSw2ICs0MDUsOCBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMg
OiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXIgewogI2VuZGlmCiAgICAgfQogCisgICAgdm9pZCBlbWl0
UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCwgYm9vbCBpc0NvbnN0
cnVjdG9yKTsKKwogI2lmIENQVShYODZfNjQpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
cHJvbG9ndWVTdGFja1BvaW50ZXJEZWx0YSgpCiAgICAgewpAQCAtMTU1MCwxMyArMTU1Miw2IEBA
IGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgdm9p
ZCBjbGVhclNhbXBsaW5nRmxhZyhpbnQzMl90IGZsYWcpOwogI2VuZGlmCiAKLSAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBjb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwot
ICAgIH0KLSAgICAKLSAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZUZvcihDb2RlQmxvY2sq
LCBjb25zdCBDb2RlT3JpZ2luJik7Ci0gICAgCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVC
bG9ja0Zvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9y
aWdpbiwgYmFzZWxpbmVDb2RlQmxvY2soKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAppbmRleCA2ODdlZmRiMDBlYWM3ZDE4NTllNjk3MTUzOWRmMGFhNWVkMzk4YTc1
Li5hNjUyNWY2MGIzMDg1YzI2NzQ1ZmIyY2U3NTEzNzRmZTI1N2I5MmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTY5LDYgKzY5LDEwIEBAIGNsYXNzIEND
YWxsSGVscGVycyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogICAgICAgICBHUFJSZWcgbV9n
cHI7CiAgICAgfTsKIAorICAgIC8vIEJhc2UgY2xhc3MgZm9yIGNvbnN0YW50IG1hdGVyaWFsaXpl
cnMuCisgICAgLy8gSXQgb2ZmZXJzIERlcml2ZWRDbGFzczo6bWF0ZXJpYWxpemUgYW5kIHBva2Ug
ZnVuY3Rpb25zLgorICAgIGNsYXNzIENvbnN0YW50TWF0ZXJpYWxpemVyIHsgfTsKKwogICAgIC8v
IFRoZSBtb3N0IGdlbmVyYWwgaGVscGVyIGZvciBzZXR0aW5nIGFyZ3VtZW50cyB0aGF0IGZpdCBp
biBhIEdQUiwgaWYgeW91IGNhbiBjb21wdXRlIGVhY2gKICAgICAvLyBhcmd1bWVudCB3aXRob3V0
IHVzaW5nIGFueSBhcmd1bWVudCByZWdpc3RlcnMuIFlvdSB1c3VhbGx5IHdhbnQgb25lIG9mIHRo
ZSBzZXR1cEFyZ3VtZW50cyooKQogICAgIC8vIG1ldGhvZHMgYmVsb3cgaW5zdGVhZCBvZiB0aGlz
LiBUaGlzIHRoaW5nIGlzIG1vc3QgdXNlZnVsIGlmIHlvdSBoYXZlICphIGxvdCogb2YgYXJndW1l
bnRzLgpAQCAtMzY1LDcgKzM2OSwxMCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNz
ZW1ibHlIZWxwZXJzIHsKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFy
Z1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRG
UFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFy
Z3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAg
ICAgIHVuc2lnbmVkIHBva2VPZmZzZXQgPSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJB
cmd1bWVudCwgY3VycmVudEZQUkFyZ3VtZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJn
cywgbm9uQXJnR1BScywgZXh0cmFQb2tlKTsKLSAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQp
OworICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfYmFzZV9vZl92PENvbnN0YW50TWF0ZXJp
YWxpemVyLCBBcmdUeXBlPikKKyAgICAgICAgICAgIGFyZy5wb2tlKCp0aGlzLCBhZGRyZXNzRm9y
UG9rZShwb2tlT2Zmc2V0KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBva2UoYXJnLCBw
b2tlT2Zmc2V0KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVk
KHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50
LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJjZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWdu
ZWQgbm9uQXJnR1BScywgdW5zaWduZWQgZXh0cmFQb2tlKQpAQCAtNjQ3LDYgKzY1NCwyNyBAQCBj
bGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIoYXJnLmdldCgpKSwgYXJncy4uLik7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3BlcmF0aW9uVHlwZSwgdW5zaWduZWQgbnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNl
cywgdW5zaWduZWQgbnVtRlBSQXJncywgdW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQg
bnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQ
UnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwgdHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIEFMV0FZU19JTkxJTkUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2ZfdjxDb25z
dGFudE1hdGVyaWFsaXplciwgQXJnPj4KKyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVj
dGlvbjxudW1HUFJBcmdzLCBudW1HUFJTb3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2Vz
LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBh
cmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PENVUlJFTlRfQVJHVU1FTlRfVFlQRT46
OnZhbHVlLCAiV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgZmxvYXRzL2RvdWJsZXMgaW4gc2V0
dXBBcmd1bWVudHMiKTsKKyAgICAgICAgYXV0byBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpu
dW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzOworI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQp
CisgICAgICAgIGF1dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3Mg
KyAoc3RkOjppc19zYW1lPFJFU1VMVF9UWVBFLCBTbG93UGF0aFJldHVyblR5cGU+Ojp2YWx1ZSA/
IDEgOiAwKTsKKyNlbHNlCisgICAgICAgIGF1dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJn
cyArIGV4dHJhR1BSQXJnczsKKyNlbmRpZgorICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50IDwg
bnVtQXJnUmVnaXN0ZXJzKSB7CisgICAgICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0
aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CisgICAgICAgICAg
ICBhcmcubWF0ZXJpYWxpemUoKnRoaXMsIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJy
ZW50QXJnQ291bnQpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IHBva2VGb3JBcmd1bWVudChhcmcsIG51bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291
cmNlcywgZXh0cmFHUFJBcmdzLCBub25BcmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwg
YXJncy4uLik7CisgICAgfQorCiAjdW5kZWYgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFCiAjdW5kZWYg
UkVTVUxUX1RZUEUKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAppbmRleCAwMDIyYmQ5
Yjk4NTk1YTgzMGMxZWUwOTU2ZjgxMDgzZWQ0NzgxZTg2Li42N2U0N2IzYzZjNmY2MGZiMDE1OGZh
YzhmMTllNzAyZWRhN2UxNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAt
NDIwLDEzICs0MjAsMTQgQEAgY2xhc3MgR1BSSW5mbyB7CiBjbGFzcyBHUFJJbmZvIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDExOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAxMDsKICAgICBzdGF0aWMgY29uc3RleHByIHVu
c2lnbmVkIG51bWJlck9mQXJndW1lbnRSZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTOwogCiAgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQu
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OmVicDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6cjE0OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENl
bGxNYXNrUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBjb25zdGFudHNSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjEzOwogCiAgICAgLy8g
VGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdUMCA9
IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNDUwLDE2ICs0NTEsMTYgQEAgY2xhc3MgR1BSSW5mbyB7
CiAKICNpZiAhT1MoV0lORE9XUykKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEg
PSBYODZSZWdpc3RlcnM6OnIxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIg
PSBYODZSZWdpc3RlcnM6OnIxMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMg
PSBYODZSZWdpc3RlcnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQg
PSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIg
PSBYODZSZWdpc3RlcnM6OnIxMzsgLy8gY29uc3RhbnRzUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxNDsgLy8gbnVtYmVyVGFnUmVn
aXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6
OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdpc3RlcgogI2Vsc2UKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzEgPSBYODZSZWdpc3RlcnM6OmVzaTsKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OmVkaTsKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxMjsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxMzsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzUgPSBYODZSZWdpc3RlcnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzYgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxMzsgLy8gY29uc3RhbnRzUmVnaXN0ZXIK
KyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBYODZSZWdpc3RlcnM6OnIxNDsg
Ly8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYg
PSBYODZSZWdpc3RlcnM6OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdpc3RlcgogI2VuZGlmCiAKICAg
ICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1
cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgpAQCAtNDk3LDkgKzQ5OCw5
IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHsKICAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVy
T2ZSZWdpc3RlcnMpOwogI2lmICFPUyhXSU5ET1dTKQotICAgICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEs
IHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1LCByZWdUNiwgcmVnVDcsIHJlZ0NTMCwgcmVnQ1Mx
LCByZWdDUzIgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4
W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0
LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCByZWdDUzAsIHJlZ0NTMSB9OwogI2Vsc2UKLSAgICAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9
IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnQ1MwLCByZWdD
UzEsIHJlZ0NTMiwgcmVnQ1MzLCByZWdDUzQgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCBy
ZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnQ1MwLCByZWdDUzEsIHJlZ0NTMiwgcmVnQ1Mz
IH07CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwogICAg
IH0KQEAgLTYzNCw2ICs2MzUsNyBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpmcDsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJz
Ojp4Mjc7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tSZWdpc3RlciA9
IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY29uc3Rh
bnRzUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI2OwogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIGRhdGFUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
cjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZW1vcnlUZW1wUmVnaXN0ZXIgPSBNYWNy
b0Fzc2VtYmxlcjo6bWVtb3J5VGVtcFJlZ2lzdGVyOwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3Rl
cnMuCkBAIC02NjAsNyArNjYyLDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M0ID0gQVJNNjRSZWdpc3RlcnM6OngyMzsgLy8gVXNlZCBieSBGVEwg
b25seQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IEFSTTY0UmVnaXN0ZXJz
Ojp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBy
ZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6OngyNjsgLy8gY29uc3RhbnRzCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0gQVJNNjRSZWdpc3RlcnM6OngyNzsgLy8gbnVtYmVy
VGFnCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M5ID0gQVJNNjRSZWdpc3RlcnM6
OngyODsgLy8gbm90Q2VsbE1hc2sKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUg
bmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVn
aXN0ZXJzLgpAQCAtNzc3LDcgKzc3OSw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1QyOwogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMCA9IE1JUFNSZWdpc3RlcnM6OnMwOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9IE1JUFNSZWdpc3RlcnM6OnMxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMSA9IE1JUFNSZWdpc3RlcnM6OnMxOyAvLyBjb25zdGFu
dHMKIAogICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7
CkBAIC04MzIsNiArODM0LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBSSVNDVjY0UmVnaXN0ZXJzOjpmcDsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3Rl
cnM6OngyNTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub3RDZWxsTWFza1JlZ2lzdGVy
ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNv
bnN0YW50c1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI0OwogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciBHUFJSZWcgcmVnVDAgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MTA7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmVnVDEgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MTE7CkBAIC04NTQs
NyArODU3LDcgQEAgY2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cmVnQ1M0ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDIxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHJlZ0NTNSA9IFJJU0NWNjRSZWdpc3RlcnM6OngyMjsKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzYgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjM7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M3ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI0OworICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNDsgLy8gY29uc3Rh
bnRzCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4ID0gUklTQ1Y2NFJlZ2lzdGVy
czo6eDI1OyAvLyBudW1iZXJUYWcKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkg
PSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjY7IC8vIG5vdENlbGxNYXNrCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1MxMCA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAppbmRleCBlOWMwZWNjMzBlYWNjNjhjNTU5ZjhhYzQ2M2UxMDYyMjMxZGRl
YjZhLi5mZTZlMjY3OTBjZDc1OTQ5ZGQ0N2Y0MzViNGIzODk1YWYzOTQ3NTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMDUsMTkgKzIwNSw3IEBAIHZvaWQgSklUOjplbWl0U2xv
d0Nhc2VDYWxsKFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIsIFNsb3dQYXRo
RnVuY3RpCiB2b2lkIEpJVDo6ZW1pdFB1dENvZGVCbG9ja1RvRnJhbWVJblByb2xvZ3VlKEdQUlJl
ZyByZXN1bHQpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV91bmxpbmtlZENvZGVCbG9jay0+Y29k
ZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpOwotICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVy
UHRyKENhbGxGcmFtZVNsb3Q6OmNhbGxlZSwgcmVzdWx0KTsKLSAgICBsb2FkUHRyKEFkZHJlc3Mo
cmVzdWx0LCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpLCByZXN1
bHQpOwotICAgIGF1dG8gaGFzRXhlY3V0YWJsZSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmVzdWx0
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU0Z1bmN0aW9uOjpyYXJlRGF0YVRhZykpOwot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZXN1bHQsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mRXhl
Y3V0YWJsZSgpIC0gSlNGdW5jdGlvbjo6cmFyZURhdGFUYWcpLCByZXN1bHQpOwotICAgIGhhc0V4
ZWN1dGFibGUubGluayh0aGlzKTsKLSAgICBpZiAobV91bmxpbmtlZENvZGVCbG9jay0+aXNDb25z
dHJ1Y3RvcigpKQotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVzdWx0LCBGdW5jdGlvbkV4ZWN1
dGFibGU6Om9mZnNldE9mQ29kZUJsb2NrRm9yQ29uc3RydWN0KCkpLCByZXN1bHQpOwotICAgIGVs
c2UKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlc3VsdCwgRnVuY3Rpb25FeGVjdXRhYmxlOjpv
ZmZzZXRPZkNvZGVCbG9ja0ZvckNhbGwoKSksIHJlc3VsdCk7Ci0KLSAgICBsb2FkUHRyKEFkZHJl
c3MocmVzdWx0LCBFeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlOjpvZmZzZXRPZkNvZGVCbG9jaygp
KSwgcmVzdWx0KTsKLSAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIocmVzdWx0LCBDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spOwotCisgICAgQXNzZW1ibHlIZWxwZXJzOjplbWl0UHV0Q29kZUJs
b2NrVG9GcmFtZUluUHJvbG9ndWUocmVzdWx0LCBtX3VubGlua2VkQ29kZUJsb2NrLT5pc0NvbnN0
cnVjdG9yKCkpOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgcHJvYmVEZWJ1ZyhbPV0gKFByb2Jl
OjpDb250ZXh0JiBjdHgpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjdHguZnA8
Q2FsbEZyYW1lKj4oKS0+Y29kZUJsb2NrKCk7CkBAIC0yNzQsNyArMjYyLDcgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfY2F0
Y2gpIHsKICAgICAgICAgICAgIGxvYWRQdHIoYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spLCByZWdUMCk7CiAgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVC
bG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCByZWdUMSk7Ci0gICAgICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSks
IHJlZ1QyKTsKKyAgICAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZkpJVERhdGEoKSksIHJlZ1QyKTsKIAogICAgICAgICAgICAgYXV0byBtZXRhZGF0YU9L
ID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwgc19tZXRhZGF0YUdQUik7CiAgICAgICAgICAgICBi
cmVha3BvaW50KCk7CkBAIC02OTgsNyArNjg2LDcgQEAgdm9pZCBKSVQ6OmVtaXRNYXRlcmlhbGl6
ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29sUmVnaXN0ZXJzKCkKIHsKICAgICBsb2FkUHRyKGFkZHJl
c3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk1ldGFkYXRhVGFibGUoKSksIHNfbWV0YWRh
dGFHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkJh
c2VsaW5lSklURGF0YSgpKSwgc19jb25zdGFudHNHUFIpOworICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKIH0K
IAogdm9pZCBKSVQ6OmVtaXRTYXZlQ2FsbGVlU2F2ZXMoKQpAQCAtNzY3LDcgKzc1NSw3IEBAIHZv
aWQgSklUOjpjb21waWxlQW5kTGlua1dpdGhvdXRGaW5hbGl6aW5nKEpJVENvbXBpbGF0aW9uRWZm
b3J0IGVmZm9ydCkKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgaWYgKG1fdW5s
aW5rZWRDb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQotICAgICAgICBlbWl0
UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoKTsKKyAgICAgICAgZW1pdFB1dENvZGVCbG9j
a1RvRnJhbWVJblByb2xvZ3VlKHJlZ1QwKTsKIAogICAgIExhYmVsIGJlZ2luTGFiZWwodGhpcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGI4ZmRhNWQxYjQzMTVlOWY3ZDcwNGM0NmFh
YTVhNWIxYmIwMzQ0ZmIuLmIxMzBlM2VjOTZmZjhiZWUzMTMxNGExYjBkYzg5NDFlMDEzMTA1NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGxvYWRDb2RlQmxvY2tDb25zdGFudFRhZyhWaXJ0dWFsUmVnaXN0
ZXIsIFJlZ2lzdGVySUQpOwogI2VuZGlmCiAKLSAgICAgICAgdm9pZCBlbWl0UHV0Q29kZUJsb2Nr
VG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCA9IHJlZ1QwKTsKKyAgICAgICAgdm9pZCBl
bWl0UHV0Q29kZUJsb2NrVG9GcmFtZUluUHJvbG9ndWUoR1BSUmVnIHJlc3VsdCk7CiAKICAgICAg
ICAgdm9pZCBleGNlcHRpb25DaGVjayhKdW1wIGp1bXBUb0hhbmRsZXIpCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDViODVjN2FjNTE3YTcw
MmRjZmQ3YTYyZWRmMDkyMTFhM2Q1ZDMzM2UuLjQ0YzEyZDhkNjkyNDI5NGEwNTg4ZmM0NjJlZjU4
MjkyNTJiODFkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApA
QCAtMTAyNSw3ICsxMDI1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSlNJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNvIHdlIHJlcGxlbmlzaCBpdCBo
ZXJlLgogICAgIHsKICAgICAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNv
ZGVCbG9jayksIHJlZ1QwKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxv
Y2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7CisgICAgICAg
IGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHNf
Y29uc3RhbnRzR1BSKTsKICAgICB9CiAKICAgICBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVj
ayhvcGVyYXRpb25SZXRyaWV2ZUFuZENsZWFyRXhjZXB0aW9uSWZDYXRjaGFibGUsICZ2bSgpKTsK
QEAgLTEwNDYsNiArMTA0Niw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEpTSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2Vw
dGlvbkNoZWNrKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgJnZt
KCksIG1fYnl0ZWNvZGVJbmRleC5hc0JpdHMoKSk7CiAgICAgYXV0byBza2lwT1NSRW50cnkgPSBi
cmFuY2hUZXN0UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJh
bWVIZWFkZXIocmV0dXJuVmFsdWVHUFIyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogICAg
IGVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBF
eGNlcHRpb25IYW5kbGVyUHRyVGFnKTsKICAgICBza2lwT1NSRW50cnkubGluayh0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGVmYzlhMGU4
YmIwMmUyMjU4MTE4NDYyM2QxMDYwYTg5MzVjZGYyYTEuLjViNWRhNzhkYmE3MTU2MjMxMmU5NzA2
N2Y0NjdiNDU3MzkwODRhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtMjA1Niw3ICsyMDU2LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9O
KG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5cGUsIChWTSogdm1Qb2ludGVyLAog
ICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKLUpTQ19ERUZJ
TkVfSklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2gsIGNoYXIqLCAoVk0q
IHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpKQorSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgU2xv
d1BhdGhSZXR1cm5UeXBlLCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJp
dHMpKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA2NiwzNyArMjA2NiwxMyBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBjaGFyKiwg
KFZNKiB2bVBvaW50ZXIsIHVpbgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKTsKICAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50ID0gY29k
ZUJsb2NrLT5yZXBsYWNlbWVudCgpOwogICAgIGlmIChVTkxJS0VMWSghb3B0aW1pemVkUmVwbGFj
ZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHN3aXRjaCAob3B0aW1pemVk
UmVwbGFjZW1lbnQtPmppdFR5cGUoKSkgewotICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgotICAg
IGNhc2UgSklUVHlwZTo6RlRMSklUOiB7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxF
eGNlcHRpb25IYW5kbGVyUHRyVGFnPiBlbnRyeSA9IERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnko
dm0sIGNhbGxGcmFtZSwgY29kZUJsb2NrLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgIHJldHVybiBlbnRyeS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsK
LSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi1KU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50
ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBjaGFyKiwgKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90
IGJ5dGVjb2RlSW5kZXhCaXRzKSkKLXsKLSAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwotICAgIENh
bGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKLSAgICBKSVRPcGVy
YXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAg
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4ID0gQnl0ZWNvZGVJbmRleDo6ZnJvbUJpdHMoYnl0
ZWNvZGVJbmRleEJpdHMpOwotCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwotICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBjb2Rl
QmxvY2stPnJlcGxhY2VtZW50KCk7Ci0gICAgaWYgKFVOTElLRUxZKCFvcHRpbWl6ZWRSZXBsYWNl
bWVudCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZW5jb2RlUmVz
dWx0KG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgc3dpdGNoIChvcHRpbWl6ZWRSZXBsYWNlbWVu
dC0+aml0VHlwZSgpKSB7CiAgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6CiAgICAgY2FzZSBKSVRU
eXBlOjpGVExKSVQ6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhh
bmRsZXJQdHJUYWc+IGVudHJ5ID0gREZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeSh2bSwgY2FsbEZy
YW1lLCBjb2RlQmxvY2ssIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KTsKLSAg
ICAgICAgcmV0dXJuIGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOworICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpLCBvcHRp
bWl6ZWRSZXBsYWNlbWVudCk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpA
QCAtMjEwOSw3ICsyMDg1LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRy
eU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChWTSoKICAgICAgICAgcHJv
ZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT51bmNoZWNrZWRS
KHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDJh
NTlmNjRlODg1YWQ1YTI1ZTE4NjcyZjk2YzNkZDViYjg2NWJkMGYuLmM1Y2U1OGRlZmY5OGVlYjZh
ZmFjYzQ2Y2RiMWU4MzY4MTc2NGVlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oCkBAIC0yNTksOCArMjU5LDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElP
TihvcGVyYXRpb25UaHJvdywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUK
IEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVidWcsIHZvaWQsIChWTSosIGlu
dDMyX3QpKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04o
b3BlcmF0aW9uT3B0aW1pemUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKFZNKiwgdWludDMyX3QpKTsK
LUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoLCBj
aGFyKiwgKFZNKiwgdWludDMyX3QpKTsKLUpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBjaGFyKiwgKFZNKiwgdWludDMy
X3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENh
dGNoQW5kVmFsdWVQcm9maWxlLCBTbG93UGF0aFJldHVyblR5cGUsIChWTSosIHVpbnQzMl90KSk7
CiAjZW5kaWYKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0R2V0dGVyQnlJ
ZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBp
bnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopKTsKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3Bl
cmF0aW9uUHV0U2V0dGVyQnlJZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgVW5p
cXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKaW5kZXggMzhjNjc5NDlmZGRmMDczYTg4ZmE1
NTgyOTcyYzkyNWMxNjFjZGVkNC4uMWMzMTI3NTRkMGMzOWEyMWFiNjAwZDc2ZWE1Yzk1ZDU5ZWNk
YzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKQEAgLTIw
MCwxNiArMjAwLDE4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2Fs
bGVlU2F2ZVJlZ2lzdGVycygpCiAjZWxpZiBDUFUoWDg2XzY0KQogI2lmICFPUyhXSU5ET1dTKQog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MxKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTMiA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwot
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIsICIiKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwogI2Vsc2UKICAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMyk7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6
Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09
IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86
OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTNCk7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0g
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2
KTsKICNlbmRpZgpAQCAtMjE4LDkgKzIyMCwxMCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6
bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzYpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M3
ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5m
bzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlciwg
IiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTOSk7CiAjZWxzZQpAQCAtMjM2LDE3ICsyMzksMjAgQEAgUmVnaXN0ZXJTZXQg
UmVnaXN0ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQogI2VsaWYgQ1BVKFg4Nl82NCkK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzEpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKICNpZiAhT1MoV0lO
RE9XUykKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1i
ZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09
IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQ
UkluZm86OnJlZ0NTMiA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwor
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKICAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwog
I2Vsc2UKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CiAgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzMpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQ
UkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJl
Z0NTNSA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzQpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVn
Q1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTNik7CiAjZW5kaWYKQEAgLTI1NCw4ICsyNjAsMTAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0
ZXJTZXQ6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1MwKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAjZWxpZiBDUFUoQVJN
NjQpIHx8IENQVShSSVNDVjY0KQotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09
IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOworICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M3ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVy
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTOSk7CiAjZWxzZQpAQCAtMjcyLDggKzI4MCw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lz
dGVyU2V0OjpmdGxDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9
PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgIiIpOwotICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsICIiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3Rlcik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbGlmIENQVShBUk02NCkKQEAgLTI4Niw4ICsy
OTQsOCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZnRsQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M2KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7Ci0gICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIi
KTsKLSAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0g
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6
cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAgICAg
cmVzdWx0LnNldChGUFJJbmZvOjpmcFJlZ0NTMCk7CkBAIC0zMDcsOCArMzE1LDggQEAgUmVnaXN0
ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIHN0YXRpY19hc3NlcnQoR1BSSW5m
bzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlciwg
IiIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
OCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwogICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1MxMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5k
ZXggYzAzMzNkMzQyYjA5YjAzMDQwMTBmNDQ2Mjg0M2ZjMDg5NDgyOWVlNC4uMTUxMTVlZTA3ZDI0
ZjE0YmVlNmRiYWZlNjIyNjJjNjgwMjQ1MDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaApAQCAtMzk1LDEzICszOTUsMTMgQEAgc3RydWN0IFJlZ2lzdGVycyB7CiAK
ICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1MxOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1MyOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXI7CiAjZWxpZiBDUFUo
WDg2XzY0KSAmJiBPUyhXSU5ET1dTKQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFk
YXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cGJHUFIgPSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlcjsKICNlbGlmIENQVShBUk02NCkgfHwg
Q1BVKFJJU0NWNjQpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQ
UiA9IEdQUkluZm86OnJlZ0NTNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9
IEdQUkluZm86OnJlZ0NTNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQ
UkluZm86OmNvbnN0YW50c1JlZ2lzdGVyOwogI2VsaWYgQ1BVKE1JUFMpIHx8IENQVShBUk1fVEhV
TUIyKQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJ
bmZvOjpyZWdDUzA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZv
OjpyZWdDUzE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggYThlN2M3Mzk5ZDU4MWE1OTYwZDBhYTdhYTcyNDMzNWRiMDM1
NGM3NS4uMTNiMTc4Y2ZjZDczNmIwOGY2NGM5MTgyNGQwMmEwMjdhMDM5MGNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtMjYyNSw3ICsyNjI1LDcgQEAgaWYgSklUCiAgICAgbWFjcm8gbG9hZEJhc2VsaW5lSklUQ29u
c3RhbnRQb29sKCkKICAgICAgICAgIyBCYXNlbGluZSB1c2VzIExMSW50J3MgUEIgcmVnaXN0ZXIg
Zm9yIGl0cyBKSVQgY29uc3RhbnQgcG9vbC4KICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9iYXNlbGluZUpJVERhdGFbUEJdLCBQQgor
ICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faml0RGF0YVtQQl0sIFBCCiAgICAgZW5kCiAKICAg
ICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxpbmVBZnRlckNoZWNrcG9pbnRFeGl0SWZOZWVkZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggZDlkYTFlNDY2YjljOTg3ZDc2MzEwYTJhNjczOTgzNzU2NzE0ZDMxMS4uZjQ3MDBkNjZlYTA4
ZDc2ZTQ2MGRhMzRmNWU3ZWY1NTU1OWJhYTBiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC05MjEsNiArOTIxLDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVn
RXhwR2xvYmFsRGF0YSYgcmVnRXhwR2xvYmFsRGF0YSgpIHsgcmV0dXJuIG1fcmVnRXhwR2xvYmFs
RGF0YTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgcmVnRXhwR2xvYmFsRGF0YU9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9yZWdFeHBHbG9iYWxEYXRh
KTsgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbFRoaXMoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsVGhpcyk7IH0KICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNH
bG9iYWxPYmplY3QsIG1fdm0pOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9i
amVjdCwgbV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456680</attachid>
            <date>2022-04-05 00:30:45 -0700</date>
            <delta_ts>2022-04-11 16:36:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220405003044.patch</filename>
            <type>text/plain</type>
            <size>274281</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2E2MDYwN2UwYzM2ZDYyZWYzYjU5ZDZkNzhlNzhkZmYxOWI0ZjE4Li4wZmZmYWMwNDk4MGI2ZTAy
OTliNzNlZjk0MzFiNjMwNWI1ZTkyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDIgQEAKKzIwMjItMDQtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJSSVNDVjY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVND
VjY0Ojp0cmFuc2ZlclB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6
YnJhbmNoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmJyYW5jaFB0
cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRyYW5zZmVyUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmJyYW5jaFB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmFsaXplSklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dERGR0pJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lz
dGVyc0ZvckVudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZSk6
CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmxvYWRVbmxpbmtlZENvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6c3RvcmVVbmxpbmtlZENvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25z
dGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6
Om1hdGVyaWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudDo6cG9rZSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFVubGlua2VkQ29uc3RhbnQpOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpicmFuY2hXZWFrUHRyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRGaW5h
bGl6ZXI6OmZpbmFsaXplKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6UGxhbjo6YWRkVW5saW5rZWRDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6
UGxhbjo6ZmluYWxpemVKSVREYXRhKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5oOgorICAgICAg
ICAqIGRmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlbGV0ZUJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlRGVsZXRlQnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJp
dmF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0
aFNjb3BlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z1NsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93
ZXJDYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJl
bnRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVj
a1RyYXBzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnRp
Z3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVEb3VibGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbE9uU3RyaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUZyb21DaGFyQ29kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVk
SW1tUHRyOjpUcnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoVW5saW5rZWRDb25zdGFudCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JV
bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmlj
dEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JP
dGhlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xl
YW4pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUmFuZG9tKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVC
cmFuY2hOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuT2JqZWN0T3JPdGhlcik6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2gpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9zckVudHJ5VGh1bmtHZW5l
cmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlND
OjpBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpnbG9i
YWxPYmplY3RGb3IpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAg
ICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlRm9yQXJndW1lbnQpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1wbCk6CisgICAgICAgICogaml0L0dQUklu
Zm8uaDoKKyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9SZWdpc3Rlcik6CisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGVyaWFsaXplTWV0YWRhdGFBbmRDb25zdGFudFBvb2xS
ZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2NhdGNoKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6CisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAo
SlNDOjpSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAg
ICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6b2Zmc2V0T2ZHbG9iYWxUaGlzKToKKwogMjAyMi0wNC0wNCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlZHVjZSBz
aXplb2YoQmFzZWxpbmVDYWxsTGlua0luZm8pIHRvIG1ha2UgYnVnIDIzODUzNSBnb29kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02
NC5oCmluZGV4IDYzMzc3M2FlZWM5ZDFjOTY3ZmE5OGE1YWNiMmExMjQ1MmViMjUwN2MuLjliNzc5
YzkzNjYxZTlhMGYxZmZmOTYyOGNmYjVkZmI2ODNlYTNkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCkBAIC0xOTYw
LDYgKzE5NjAsMTcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICBzdG9yZTY0KGRhdGFUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KIAorICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNy
YywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZDY0KHNyYywgZ2V0Q2FjaGVkRGF0
YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgpKTsKKyAgICAgICAgc3RvcmU2NChnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCksIGRlc3QpOworICAgIH0KKworICAg
IHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAg
ICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsKKyAgICB9CisKICAgICBEYXRhTGFiZWwzMiBzdG9y
ZTY0V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklEIHNyYywgQWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKICAgICAgICAgRGF0YUxhYmVsMzIgbGFiZWwodGhpcyk7CkBAIC0zMzQ0LDYgKzMz
NTUsMTkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk02NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbWVt
b3J5VGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2g2NChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7
CisgICAgICAgIC8vIGxvYWQ2NCBjbG9iYmVycyBtZW1vcnlUZW1wUmVnaXN0ZXIsIHRodXMgd2Ug
c2hvdWxkIGZpcnN0IHVzZSBkYXRhVGVtcFJlZ2lzdGVyIGhlcmUuCisgICAgICAgIGxvYWQ2NChs
ZWZ0LCBnZXRDYWNoZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCkpOworICAgICAg
ICAvLyBBbmQgYnJhbmNoNjQgd2lsbCB1c2UgbWVtb3J5VGVtcFJlZ2lzdGVyIHRvIGxvYWQgcmln
aHQgdG8gYSByZWdpc3Rlci4KKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGRhdGFUZW1w
UmVnaXN0ZXIsIHJpZ2h0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdodCk7CisgICAgfQorCiAgICAgSnVt
cCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgUmVn
aXN0ZXJJRCByaWdodCkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCByaWdodCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyUklTQ1Y2NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclJJU0NWNjQuaAppbmRleCAzNjQ2ODZkZmY2ODk5NGRlYWEwNGU5NTY2MzZh
ZDYyZjAyZWMxMTU1Li5kY2UzYTBlMzU2ZGJkNTg5YTA0ODlmYmRmYjY5MTZhY2ZlNDE0MWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UklTQ1Y2NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJSSVNDVjY0LmgKQEAgLTExNzEsNiArMTE3MSwxOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxl
clJJU0NWNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc2RJbnNuKHRlbXAubWVtb3J5KCksIGltbVJlZ2lzdGVyLCBJbW06
OlM8MD4oKSk7CiAgICAgfQogCisgICAgdm9pZCB0cmFuc2ZlcjY0KEFkZHJlc3Mgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBhdXRvIHRlbXAgPSB0ZW1wczxEYXRhPigpOworICAg
ICAgICBsb2FkNjQoc3JjLCB0ZW1wLmRhdGEoKSk7CisgICAgICAgIHN0b3JlNjQodGVtcC5kYXRh
KCksIGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBzcmMsIEFk
ZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsKKyAgICB9
CisKICAgICB2b2lkIHN0b3JlUGFpcjMyKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMy
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBzdG9yZVBhaXIzMihzcmMxLCBzcmMy
LCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOwpAQCAtMjE1NCw2ICsyMTY2LDE2IEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyUklTQ1Y2NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2Vt
Ymxlcj4gewogICAgICAgICByZXR1cm4gbWFrZUJyYW5jaChjb25kLCB0ZW1wLmRhdGEoKSwgcmhz
KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QWRkcmVzcyBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1wID0g
dGVtcHM8RGF0YSwgTWVtb3J5PigpOworICAgICAgICBhdXRvIGxlZnRSZXNvbHV0aW9uID0gcmVz
b2x2ZUFkZHJlc3MobGVmdCwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxk
SW5zbih0ZW1wLmRhdGEoKSwgbGVmdFJlc29sdXRpb24uYmFzZSwgSW1tOjpJKGxlZnRSZXNvbHV0
aW9uLm9mZnNldCkpOworICAgICAgICBhdXRvIHJpZ2h0UmVzb2x1dGlvbiA9IHJlc29sdmVBZGRy
ZXNzKHJpZ2h0LCB0ZW1wLm1lbW9yeSgpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubGRJbnNuKHRl
bXAubWVtb3J5KCksIHJpZ2h0UmVzb2x1dGlvbi5iYXNlLCBJbW06OkkocmlnaHRSZXNvbHV0aW9u
Lm9mZnNldCkpOworICAgICAgICByZXR1cm4gbWFrZUJyYW5jaChjb25kLCB0ZW1wLmRhdGEoKSwg
dGVtcC5tZW1vcnkoKSk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRI
YWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1
c3RlZEltbTMyIGltbSkKICAgICB7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBhZGRy
ZXNzLCBpbW0pOwpAQCAtMjY0NSw2ICsyNjY3LDExIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyUklT
Q1Y2NCA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgICAg
ICByZXR1cm4gYnJhbmNoNjQoY29uZCwgYWRkcmVzcywgcmhzKTsKICAgICB9CiAKKyAgICBKdW1w
IGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVz
cyByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCByaWdo
dCk7CisgICAgfQorCiAgICAgRGF0YUxhYmVsMzIgbW92ZVdpdGhQYXRjaChUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBSSVNDVjY0QXNzZW1ibGVyOjpJ
bW1lZGlhdGVMb2FkZXIgaW1tbChSSVNDVjY0QXNzZW1ibGVyOjpJbW1lZGlhdGVMb2FkZXI6OlBs
YWNlaG9sZGVyLCBpbW0ubV92YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKaW5kZXggYjJlOTExYWExMzY2M2Ey
NTA5ODQwYTA1Njg4NDEyZjI5MjhlZjQ2My4uYzdmZTYyNzk2ZDA0MTY5YmRkNGIwYjQ0MWQ1N2Rj
YTc3OGVjMDBjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4Nl82NC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTAyNiw2ICsxMDI2LDE3IEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAg
ICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICAgICAgbV9hc3NlbWJsZXIu
bW92cV9ybShzY3JhdGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgfQorCisgICAgdm9pZCB0cmFuc2Zl
cjY0KEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBsb2FkNjQoc3Jj
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyKCks
IGRlc3QpOworICAgIH0KKworICAgIHZvaWQgdHJhbnNmZXJQdHIoQWRkcmVzcyBzcmMsIEFkZHJl
c3MgZGVzdCkKKyAgICB7CisgICAgICAgIHRyYW5zZmVyNjQoc3JjLCBkZXN0KTsKKyAgICB9CiAg
ICAgCiAgICAgRGF0YUxhYmVsMzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0
ZXJJRCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CkBAIC0xMTM0LDYgKzExNDUsMTIgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21t
b24gewogICAgICAgICBtX2Fzc2VtYmxlci5jbXBxX3JtKHJpZ2h0LCBhZGRyZXNzLm9mZnNldCwg
YWRkcmVzcy5iYXNlLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQs
IEFkZHJlc3MgcmlnaHQpCisgICAgeworICAgICAgICBsb2FkNjQocmlnaHQsIHNjcmF0Y2hSZWdp
c3RlcigpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdp
c3RlcigpKTsKKyAgICB9CiAgICAgCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsK
QEAgLTExNTIsNiArMTE2OSwxMSBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1Ymxp
YyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiB7CiAgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29u
ZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoUHRy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQsIHJpZ2h0KTsKKyAgICB9
CisKICAgICBKdW1wIGJyYW5jaFRlc3Q2NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRlc3Rx
X3JyKHJlZywgbWFzayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDlhMjFiNzBiYTI3MTI0NWI2YTI3MGE3YjJkODMwOTU1YzZkZTgxOTUuLjJk
OTk5OTI2ZTY2YWY4OTVkNDk4MTNjZDE0N2VjNTI0ZGU2ZDA0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC03NzMsOSArNzczLDkgQEAgdm9p
ZCBDb2RlQmxvY2s6OnNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJ
VENvZGU+IGppdENvZGUpCiAKICAgICB7CiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKLSAgICAgICAgQVNTRVJUKCFtX2Jhc2VsaW5lSklURGF0YSk7Ci0gICAgICAg
IG1fYmFzZWxpbmVKSVREYXRhID0gQmFzZWxpbmVKSVREYXRhOjpjcmVhdGUoaml0Q29kZS0+bV9j
b25zdGFudFBvb2wuc2l6ZSgpKTsKLSAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPm1fc3R1Yklu
Zm9zID0gRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+KGppdENvZGUtPm1fdW5saW5rZWRT
dHViSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKCFtX2ppdERhdGEpOworICAgICAgICBh
dXRvIGJhc2VsaW5lSklURGF0YSA9IEJhc2VsaW5lSklURGF0YTo6Y3JlYXRlKGppdENvZGUtPm1f
Y29uc3RhbnRQb29sLnNpemUoKSk7CisgICAgICAgIGJhc2VsaW5lSklURGF0YS0+bV9zdHViSW5m
b3MgPSBGaXhlZFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4oaml0Q29kZS0+bV91bmxpbmtlZFN0
dWJJbmZvcy5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIHVubGlua2VkQ2FsbExpbmtJbmZv
IDogaml0Q29kZS0+bV91bmxpbmtlZENhbGxzKSB7CiAgICAgICAgICAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IGdldENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgobG9ja2VyLCB1
bmxpbmtlZENhbGxMaW5rSW5mby5ieXRlY29kZUluZGV4KTsKICAgICAgICAgICAgIEFTU0VSVChj
YWxsTGlua0luZm8pOwpAQCAtNzg2LDI4ICs3ODYsMjkgQEAgdm9pZCBDb2RlQmxvY2s6OnNldHVw
V2l0aFVubGlua2VkQmFzZWxpbmVDb2RlKFJlZjxCYXNlbGluZUpJVENvZGU+IGppdENvZGUpCiAg
ICAgICAgICAgICBhdXRvIGVudHJ5ID0gaml0Q29kZS0+bV9jb25zdGFudFBvb2wuYXQoaSk7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBKSVRD
b25zdGFudFBvb2w6OlR5cGU6Okdsb2JhbE9iamVjdDoKLSAgICAgICAgICAgICAgICBtX2Jhc2Vs
aW5lSklURGF0YS0+YXQoaSkgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKKyAgICAgICAgICAgICAg
ICBiYXNlbGluZUpJVERhdGEtPmF0KGkpID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEpJVENvbnN0YW50UG9vbDo6VHlwZTo6
U3RydWN0dXJlU3R1YkluZm86IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGVudHJ5LnBvaW50ZXIoKSk7CiAgICAgICAgICAgICAgICAg
VW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyYgdW5saW5rZWRTdHViSW5mbyA9IGppdENvZGUtPm1f
dW5saW5rZWRTdHViSW5mb3NbaW5kZXhdOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbyA9IG1fYmFzZWxpbmVKSVREYXRhLT5tX3N0dWJJbmZvc1tpbmRleF07Cisg
ICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gYmFzZWxpbmVKSVRE
YXRhLT5tX3N0dWJJbmZvc1tpbmRleF07CiAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdGlh
bGl6ZUZyb21VbmxpbmtlZFN0cnVjdHVyZVN0dWJJbmZvKHRoaXMsIHVubGlua2VkU3R1YkluZm8p
OwotICAgICAgICAgICAgICAgIG1fYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9ICZzdHViSW5mbzsK
KyAgICAgICAgICAgICAgICBiYXNlbGluZUpJVERhdGEtPmF0KGkpID0gJnN0dWJJbmZvOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBKSVRD
b25zdGFudFBvb2w6OlR5cGU6OkZ1bmN0aW9uRGVjbDogewogICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnkucG9pbnRlcigpKTsKLSAg
ICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkRlY2woaW5k
ZXgpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBmdW5jdGlvbkRl
Y2woaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBKSVRDb25zdGFudFBvb2w6OlR5cGU6OkZ1bmN0aW9uRXhwcjogewogICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oZW50cnku
cG9pbnRlcigpKTsKLSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0YS0+YXQoaSkgPSBm
dW5jdGlvbkV4cHIoaW5kZXgpOworICAgICAgICAgICAgICAgIGJhc2VsaW5lSklURGF0YS0+YXQo
aSkgPSBmdW5jdGlvbkV4cHIoaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIG1faml0RGF0YSA9IGJh
c2VsaW5lSklURGF0YS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgc3dpdGNoIChjb2RlVHlwZSgp
KSB7CkBAIC04OTIsMjAgKzg5MywyNCBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIC8v
IGRlc3RydWN0b3JzLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoYXV0byogaml0RGF0YSA9
IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8g
OiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgc3R1YkluZm8uYWJvdXRUb0Rp
ZSgpOwotICAgICAgICAgICAgc3R1YkluZm8uZGVyZWYoKTsKLSAgICAgICAgfQotICAgIH0KLSNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5
cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5m
byA6IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9zKSB7CiAgICAgICAgICAgICBz
dHViSW5mby0+YWJvdXRUb0RpZSgpOwogICAgICAgICAgICAgc3R1YkluZm8tPmRlcmVmKCk7CiAg
ICAgICAgIH0KLSAgICB9CisgICAgICAgIGlmIChtX2ppdERhdGEpCisgICAgICAgICAgICBkZWxl
dGUgYml0d2lzZV9jYXN0PERGRzo6REZHSklURGF0YSo+KG1faml0RGF0YSk7CiAjZW5kaWYKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgp
KSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5m
b3MpIHsKKyAgICAgICAgICAgICAgICBzdHViSW5mby5hYm91dFRvRGllKCk7CisgICAgICAgICAg
ICAgICAgc3R1YkluZm8uZGVyZWYoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlbGV0
ZSBqaXREYXRhOworICAgICAgICB9CisgICAgfQogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAK
QEAgLTEyMzMsMTggKzEyMzgsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRp
b25zKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFZpc2l0b3ImIHZpc2l0b3IKICAgICB9CiAK
ICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKLSAg
ICAgICAgICAgICAgICBzdHViSW5mby5wcm9wYWdhdGVUcmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAg
ICAgICAgfQotICAgIH0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
Zm9yIChhdXRvKiBzdHViSW5mbyA6IGppdENvZGUoKS0+ZGZnQ29tbW9uKCktPm1fc3R1YkluZm9z
KQogICAgICAgICAgICAgc3R1YkluZm8tPnByb3BhZ2F0ZVRyYW5zaXRpb25zKHZpc2l0b3IpOwot
ICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0g
YmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBq
aXREYXRhLT5tX3N0dWJJbmZvcykKKyAgICAgICAgICAgICAgICBzdHViSW5mby5wcm9wYWdhdGVU
cmFuc2l0aW9ucyh2aXNpdG9yKTsKKyAgICAgICAgfQorICAgIH0KICNlbmRpZiAvLyBFTkFCTEUo
SklUKQogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTU3MCwxNSArMTU3NCw4IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICNpZiBFTkFCTEUoSklU
KQogdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplSklUSW5saW5lQ2FjaGVzKCkKIHsKLSAgICBpZiAo
YXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAo
YXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKLSAgICAgICAg
ICAgIHN0dWJJbmZvLnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlzKTsKLSAgICAgICAg
fQotICAgIH0KLQotI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBERkc6
OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CiAgICAgICAg
IGZvciAoYXV0byogY2FsbExpbmtJbmZvIDogZGZnQ29tbW9uLT5tX2NhbGxMaW5rSW5mb3MpCiAg
ICAgICAgICAgICBjYWxsTGlua0luZm8tPnZpc2l0V2Vhayh2bSgpKTsKQEAgLTE1ODYsOCArMTU4
MywxNSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVKSVRJbmxpbmVDYWNoZXMoKQogICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsK
ICAgICAgICAgICAgIHN0dWJJbmZvLT52aXNpdFdlYWtSZWZlcmVuY2VzKGxvY2tlciwgdGhpcyk7
CiAgICAgICAgIH0KLSAgICB9CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0
byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXJCYXNlIGxvY2tlcihOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICAg
ICAgICAgIHN0dWJJbmZvLnZpc2l0V2Vha1JlZmVyZW5jZXMobG9ja2VyLCB0aGlzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KICNlbmRpZgogCkBAIC0xNjc0LDEyICsxNjc4
LDggQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgfQogI2lmIEVOQUJMRShKSVQpCiAgICAg
aWYgKEpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGppdERh
dGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBz
dHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQotICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQoc3R1YkluZm8uY29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJ
bmZvID0gJnN0dWJJbmZvOwotICAgICAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAg
IGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShE
RkdfSklUKQogICAgICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENv
ZGUtPmRmZ0NvbW1vbigpOwogICAgICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0Nv
bW1vbi0+bV9zdHViSW5mb3MpCiAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+
Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1Yklu
Zm87CkBAIC0xNjk1LDggKzE2OTUsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFs
dWUuaW5TdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKICAgICAgICAgICAgIGZvciAoYXV0byYg
cGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5kZWxldGVzKQogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmRl
bGV0ZVN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOwotICAgICAgICB9CiAjZW5kaWYKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVRE
YXRhKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+
bV9zdHViSW5mb3MpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8uY29k
ZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gJnN0dWJJbmZv
OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0ocmVzdWx0KTsKQEAgLTE3MTMsMjEgKzE3MTgsMjEgQEAgdm9pZCBDb2RlQmxvY2s6OmdldElD
U3RhdHVzTWFwKElDU3RhdHVzTWFwJiByZXN1bHQpCiBTdHJ1Y3R1cmVTdHViSW5mbyogQ29kZUJs
b2NrOjpmaW5kU3R1YkluZm8oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogewogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFz
ZWxpbmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXRE
YXRhLT5tX3N0dWJJbmZvcykgewotICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvZGVPcmlnaW4g
PT0gY29kZU9yaWdpbikKLSAgICAgICAgICAgICAgICByZXR1cm4gJnN0dWJJbmZvOwotICAgICAg
ICB9Ci0gICAgfQotCi0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGZv
ciAoYXV0byogc3R1YkluZm8gOiBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3N0dWJJbmZvcykg
ewogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJbmZvOwogICAgICAgICB9Ci0gICAgfQogI2VuZGlm
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERh
dGEoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1
YkluZm9zKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvZGVPcmlnaW4gPT0gY29k
ZU9yaWdpbikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICZzdHViSW5mbzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTc2
Niw3ICsxNzcxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0QmFzZWxpbmVKSVREYXRhKCkKICAg
ICBSRUxFQVNFX0FTU0VSVCghSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSk7CiAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIAotICAgIGlmIChhdXRvKiBqaXREYXRh
ID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKKyAgICBpZiAoYXV0byogaml0RGF0YSA9IGJh
c2VsaW5lSklURGF0YSgpKSB7CiAgICAgICAgIC8vIFdlIGNhbiBjbGVhciB0aGVzZSBiZWNhdXNl
IG5vIG90aGVyIHRocmVhZCB3aWxsIGhhdmUgcmVmZXJlbmNlcyB0byBhbnkgc3R1YiBpbmZvcywg
Y2FsbAogICAgICAgICAvLyBsaW5rIGluZm9zLCBvciBieSB2YWwgaW5mb3MgaWYgd2UgZG9uJ3Qg
aGF2ZSBKSVQgY29kZS4gQXR0ZW1wdHMgdG8gcXVlcnkgdGhlc2UgZGF0YQogICAgICAgICAvLyBz
dHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZy
aWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKQEAgLTE3ODcsNyArMTc5Miw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSgpCiAgICAgICAgIC8vIFdlIGNhbiBj
bGVhciB0aGlzIGJlY2F1c2UgdGhlIERGRydzIHF1ZXJpZXMgdG8gdGhlc2UgZGF0YSBzdHJ1Y3R1
cmVzIGFyZSBndWFyZGVkIGJ5IHdoZXRoZXIKICAgICAgICAgLy8gdGhlcmUgaXMgSklUIGNvZGUu
CiAKLSAgICAgICAgbV9iYXNlbGluZUpJVERhdGEgPSBudWxscHRyOworICAgICAgICBtX2ppdERh
dGEgPSBudWxscHRyOwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTgzMywxOSArMTgzOCwxOSBAQCB2
b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiBsb2NrZXIsCiAgICAgfSk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAgICAgICAgZm9y
IChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQotICAgICAgICAgICAgc3R1
YkluZm8udmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkp
IHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21t
b24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwogICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZv
IDogZGZnQ29tbW9uLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0dWJJbmZvLT52aXNpdEFn
Z3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnZp
c2l0QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAgICB2aXNpdE9TUkV4aXRUYXJnZXRzKGxvY2tl
ciwgdmlzaXRvcik7CisjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byogaml0
RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJ
bmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCisgICAgICAgICAgICAgICAgc3R1YkluZm8udmlz
aXRBZ2dyZWdhdGUodmlzaXRvcik7CisgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIH0KQEAgLTM0
NjIsMjEgKzM0NjcsMjIgQEAgc3RkOjpvcHRpb25hbDxDb2RlT3JpZ2luPiBDb2RlQmxvY2s6OmZp
bmRQQyh2b2lkKiBwYykKIAogICAgIHsKICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRh
LmdldCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9z
dHViSW5mb3MpIHsKLSAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY29udGFpbnNQQyhwYykp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHViSW5mby5jb2RlT3JpZ2luOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIGlmIChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJMRShERkdfSklUKQog
ICAgICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0Nv
bW1vbigpOwogICAgICAgICAgICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9z
dHViSW5mb3MpIHsKICAgICAgICAgICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnRhaW5zUEMocGMp
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3R1YkluZm8tPmNvZGVPcmlnaW47CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0KICNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoc3R1YkluZm8uY29udGFpbnNQQyhwYykpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc3R1YkluZm8uY29kZU9yaWdpbjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbV9qaXRDb2Rl
LT5maW5kUEModGhpcywgcGMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCmluZGV4IDQ4ZTQ2NTJhYWQxNWI0MjQ3MzhjYWU4MGMyYjVjODI2MmE2MDAwNDAuLjNm
NzVlNjNjOWM3YTBhYjIwZjI5MDNjMWFkYWJjMmEzYzI2YzI2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTc5LDYgKzc5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIG5hbWVzcGFjZSBERkcgeworY2xhc3MgREZH
SklURGF0YTsKIHN0cnVjdCBPU1JFeGl0U3RhdGU7CiB9IC8vIG5hbWVzcGFjZSBERkcKICNlbmRp
ZgpAQCAtMjQ1LDcgKzI0Niw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
CiAgICAgc3RkOjpvcHRpb25hbDxCeXRlY29kZUluZGV4PiBieXRlY29kZUluZGV4RnJvbUNhbGxT
aXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7CiAKLSAgICAvLyBCZWNhdXNlIHdlIG1pZ2h0IHRocm93
IG91dCBiYXNlbGluZSBKSVQgY29kZSBhbmQgYWxsIGl0cyBiYXNlbGluZSBKSVQgZGF0YSAobV9i
YXNlbGluZUpJVERhdGEpLAorICAgIC8vIEJlY2F1c2Ugd2UgbWlnaHQgdGhyb3cgb3V0IGJhc2Vs
aW5lIEpJVCBjb2RlIGFuZCBhbGwgaXRzIGJhc2VsaW5lIEpJVCBkYXRhIChtX2ppdERhdGEpLAog
ICAgIC8vIHlvdSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgdGhlIGxpZmV0aW1lIG9mIHdoZW4g
eW91IHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24uCiAgICAgLy8gVGhlIHJl
dHVybiB2YWx1ZSBtYXkgaGF2ZSByYXcgcG9pbnRlcnMgaW50byB0aGlzIGRhdGEgc3RydWN0dXJl
IHRoYXQgZ2V0cyB0aHJvd24gYXdheS4KICAgICAvLyBTcGVjaWZpY2FsbHksIHlvdSBuZWVkIHRv
IGVuc3VyZSB0aGF0IG5vIEdDIGNhbiBiZSBmaW5hbGl6ZWQgKHR5cGljYWxseSB0aGF0IG1lYW5z
IG5vCkBAIC0yNTYsNyArMjU3LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAjaWYgRU5BQkxFKEpJVCkKICAgICB2b2lkIHNldHVwV2l0aFVubGlua2VkQmFzZWxpbmVDb2Rl
KFJlZjxCYXNlbGluZUpJVENvZGU+KTsKIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZC
YXNlbGluZUpJVERhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2NrLCBtX2Jh
c2VsaW5lSklURGF0YSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mSklURGF0YSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihDb2RlQmxvY2ssIG1faml0RGF0YSk7IH0KIAogICAg
IFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRPcHRpbWl6aW5nU3R1YkluZm8oQWNjZXNzVHlwZSwgQ29k
ZU9yaWdpbik7CiAKQEAgLTUzMCw5ICs1MzEsMjUgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBiYXNlbGluZVN0cmluZ1N3aXRjaEp1bXBU
YWJsZShpbnQgdGFibGVJbmRleCk7CiAgICAgQmFzZWxpbmVKSVREYXRhKiBiYXNlbGluZUpJVERh
dGEoKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoaml0VHlwZSgpID09IEpJVFR5cGU6
OkJhc2VsaW5lSklUKTsKLSAgICAgICAgcmV0dXJuIG1fYmFzZWxpbmVKSVREYXRhLmdldCgpOwor
ICAgICAgICBpZiAoIUpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKQorICAgICAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxCYXNlbGluZUpJVERhdGEqPihtX2ppdERhdGEpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAg
ICB2b2lkIHNldERGR0pJVERhdGEoc3RkOjp1bmlxdWVfcHRyPERGRzo6REZHSklURGF0YT4mJiBq
aXREYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2ppdERhdGEpOworICAgICAgICBtX2pp
dERhdGEgPSBqaXREYXRhLnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICBERkc6OkRGR0pJVERhdGEq
IGRmZ0pJVERhdGEoKQorICAgIHsKKyAgICAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJ
VChqaXRUeXBlKCkpKQorICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxERkc6OkRGR0pJ
VERhdGEqPihtX2ppdERhdGEpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisjZW5k
aWYKICNlbmRpZgogICAgIHNpemVfdCBudW1iZXJPZlVubGlua2VkU3dpdGNoSnVtcFRhYmxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdW5saW5rZWRDb2RlLT5udW1iZXJPZlVubGlua2VkU3dpdGNoSnVt
cFRhYmxlcygpOyB9CiAgICAgY29uc3QgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHVubGlua2Vk
U3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7IH0KQEAgLTkzMyw3ICs5NTAsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBSZWZQdHI8SklUQ29kZT4g
bV9qaXRDb2RlOwogI2lmIEVOQUJMRShKSVQpCiBwdWJsaWM6Ci0gICAgc3RkOjp1bmlxdWVfcHRy
PEJhc2VsaW5lSklURGF0YT4gbV9iYXNlbGluZUpJVERhdGE7CisgICAgdm9pZCogbV9qaXREYXRh
IHsgbnVsbHB0ciB9OwogcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShERkdfSklUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JT
bG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJy
YXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDIzZmQ0NTQ3YzU5YjkyYTkzNDM3
NDJhNTg0ZjdkZGNkZjI5MWY5ZWIuLjRlMDNhYTNlZGU0Mjg5ZTA4YzI1ODg4MjkwOGI1NGI2M2Yz
OWFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTc1LDcgKzc1
LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2Vu
ZXJhdG9yIGZpbmFsIDogcHVibGljIEp1bXBpbmcKIHB1YmxpYzoKICAgICBDYWxsQXJyYXlBbGxv
Y2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlv
bl9HU3RaQiBmdW5jdGlvbiwKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyIGdsb2JhbE9iamVjdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1
b3VzU3RydWN0dXJlLCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwg
R1BSUmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BSKQorICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCBnbG9iYWxPYmplY3QsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgY29udGlndW91c1N0cnVjdHVyZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJh
eVN0b3JhZ2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKICAg
ICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
Pihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgLCBt
X2NvbnRpZ3VvdXNTdHJ1Y3R1cmUoY29udGlndW91c1N0cnVjdHVyZSkKQEAgLTExNSw3ICsxMTUs
NyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5l
cmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9j
b250aWd1b3VzU3RydWN0dXJlOwogICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3Jh
Z2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBtX2dsb2JhbE9iamVjdDsKKyAgICBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudCBtX2dsb2JhbE9iamVjdDsKICAgICBHUFJSZWcgbV9zaXplR1BS
OwogICAgIEdQUlJlZyBtX3N0b3JhZ2VHUFI7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4sIDI+IG1fcGxhbnM7CkBAIC0xMjUsNyArMTI1LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxs
b2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3Ig
ZmluYWwKIHB1YmxpYzoKICAgICBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1
cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFBfSklUT3BlcmF0aW9uX0dTdFpC
IGZ1bmN0aW9uLAotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIgZ2xvYmFsT2JqZWN0LCBHUFJSZWcgc3RydWN0dXJlR1BSLCBHUFJSZWcgc2l6ZUdQ
UiwgR1BSUmVnIHN0b3JhZ2VHUFIpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50IGdsb2JhbE9iamVjdCwgR1BSUmVnIHN0cnVjdHVyZUdQUiwg
R1BSUmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93
UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAg
ICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQ
UikKQEAgLTE1Miw3ICsxNTIsNyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFi
bGVTdHJ1Y3R1cmVWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvciBmaW5hbAogCiAgICAgUF9K
SVRPcGVyYXRpb25fR1N0WkIgbV9mdW5jdGlvbjsKICAgICBHUFJSZWcgbV9yZXN1bHRHUFI7Ci0g
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX3N0
cnVjdHVyZUdQUjsKICAgICBHUFJSZWcgbV9zaXplR1BSOwogICAgIEdQUlJlZyBtX3N0b3JhZ2VH
UFI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCmluZGV4IDQ1M2MzZGNkYWVk
MWYzYzNjMmFmMTRiODEyYjhhMjNhNTZkMTFjYTIuLjQwNTg3ZTlhZDVlZDkwNTFkMWMyMTBiY2Ex
ZGZlYjhiYjVlZDEyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBA
IC00OSw2ICs0OSwyMyBAQCBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgSklUQ29tcGlsZXI7CiAK
K2NsYXNzIERGR0pJVERhdGEgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdBcnJheTxERkdKSVREYXRh
LCB2b2lkKj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWls
aW5nQXJyYXk8REZHSklURGF0YSwgdm9pZCo+OworCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxERkdKSVREYXRhPiBjcmVhdGUodW5zaWduZWQgcG9vbFNpemUpCisgICAgeworICAgICAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPERGR0pJVERhdGE+IHsgbmV3IChOb3ROdWxsLCBmYXN0TWFs
bG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHBvb2xTaXplKSkpIERGR0pJVERhdGEocG9vbFNpemUp
IH07CisgICAgfQorCisgICAgZXhwbGljaXQgREZHSklURGF0YSh1bnNpZ25lZCBzaXplKQorICAg
ICAgICA6IEJhc2Uoc2l6ZSkKKyAgICB7CisgICAgfQorfTsKKwogY2xhc3MgSklUQ29kZSBmaW5h
bCA6IHB1YmxpYyBEaXJlY3RKSVRDb2RlIHsKIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDRmY2Q0ZDM4
NmIyNDIxNzgxYWY3MzljYTUzMjg4ZmE1OWYwZTkwMGIuLjRhYzExZjYwYzQxNGFlMTQ3MTFjNThi
ZTU3MmM1ZGQxMDM3MjExODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCkBAIC0xMjMsNiArMTIzLDEyIEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBp
bGVTZXR1cFJlZ2lzdGVyc0ZvckVudHJ5KCkKIHsKICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzKCk7
CiAgICAgZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsgICAgCisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpZiAobV9ncmFwaC5tX3BsYW4uaXNVbmxpbmtlZCgpKSB7CisgICAgICAg
IGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywg
R1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgICAgICBsb2FkUHRyKEFkZHJlc3MoR1BS
SW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBH
UFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSklU
Q29tcGlsZXI6OmNvbXBpbGVFbnRyeUV4ZWN1dGlvbkZsYWcoKQpAQCAtMzQ2LDcgKzM1Miw4IEBA
IHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbCkKICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50
MzJfdD4obWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpKSwgc3RhY2tQb2ludGVyUmVnaXN0
ZXIpOwogCi0gICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFja09uRXhjZXB0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yLCBtX2NvZGVC
bG9jayk7CisgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6
Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIG1fc3BlY3VsYXRpdmUtPmNh
bGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJv
d1N0YWNrT3ZlcmZsb3dFcnJvciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKIAogICAgIC8vIEdl
bmVyYXRlIHNsb3cgcGF0aCBjb2RlLgogICAgIG1fc3BlY3VsYXRpdmUtPnJ1blNsb3dQYXRoR2Vu
ZXJhdG9ycyhtX3BjVG9Db2RlT3JpZ2luTWFwQnVpbGRlcik7CkBAIC00MTksNyArNDI2LDggQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBpZiAobWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19j
YXN0PGludDMyX3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKIAotICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZy
YW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciwg
bV9jb2RlQmxvY2spOworICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFt
ZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBtX3NwZWN1bGF0
aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0
aW9uVGhyb3dTdGFja092ZXJmbG93RXJyb3IsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAg
CiAgICAgLy8gVGhlIGZhc3QgZW50cnkgcG9pbnQgaW50byBhIGZ1bmN0aW9uIGRvZXMgbm90IGNo
ZWNrIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMKICAgICAvLyBoYXZlIGJlZW4gcGFz
c2VkIHRvIHRoZSBjYWxsICh3ZSBvbmx5IHVzZSB0aGUgZmFzdCBlbnRyeSBwb2ludCB3aGVyZSB3
ZSBjYW4gc3RhdGljYWxseQpAQCAtNDM4LDcgKzQ0Niw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNv
bXBpbGVGdW5jdGlvbigpCiAgICAgICAgIGVtaXRTdG9yZUNvZGVPcmlnaW4oQ29kZU9yaWdpbihC
eXRlY29kZUluZGV4KDApKSk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRo
Q2FsbCkKICAgICAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXN0YXRpY19jYXN0PGludDMy
X3Q+KG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKSksIHN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKLSAgICAgICAgbV9zcGVjdWxhdGl2ZS0+Y2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFja09uRXhjZXB0aW9uKG1fY29kZUJsb2NrLT5pc0NvbnN0cnVjdG9yKCkgPyBvcGVyYXRpb25D
b25zdHJ1Y3RBcml0eUNoZWNrIDogb3BlcmF0aW9uQ2FsbEFyaXR5Q2hlY2ssIEdQUkluZm86OnJl
Z1QwLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICBlbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCk7CisgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjphcmd1bWVudEdQUjAs
IENvZGVCbG9jazo6b2Zmc2V0T2ZHbG9iYWxPYmplY3QoKSksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgICAgIG1fc3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9s
bGJhY2tPbkV4Y2VwdGlvbihtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9u
Q29uc3RydWN0QXJpdHlDaGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUiwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgaWYgKG1heEZy
YW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsKQogICAgICAgICAgICAgYWRkUHRyKFRydXN0ZWRJbW0z
MihtYXhGcmFtZUV4dGVudEZvclNsb3dQYXRoQ2FsbCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsK
ICAgICAgICAgYnJhbmNoVGVzdDMyKFplcm8sIEdQUkluZm86OnJldHVyblZhbHVlR1BSKS5saW5r
VG8oZnJvbUFyaXR5Q2hlY2ssIHRoaXMpOwpAQCAtNjQ5LDYgKzY1OSw1NyBAQCB2b2lkIEpJVENv
bXBpbGVyOjptYWtlQ2F0Y2hPU1JFbnRyeUJ1ZmZlcigpCiAgICAgfQogfQogCit2b2lkIEpJVENv
bXBpbGVyOjpsb2FkVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0YW50IGNvbnN0YW50LCBH
UFJSZWcgZGVzdCkKK3sKKyAgICBjb25zdGFudC5tYXRlcmlhbGl6ZSgqdGhpcywgZGVzdCk7Cit9
CisKK3ZvaWQgSklUQ29tcGlsZXI6OnN0b3JlVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0
YW50IGNvbnN0YW50LCBBZGRyZXNzIGRlc3QpCit7CisgICAgY29uc3RhbnQucG9rZSgqdGhpcywg
ZGVzdCk7Cit9CisKK0pJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50OjpVbmxpbmtlZENvbnN0
YW50KEdyYXBoJiBncmFwaCwgSlNDZWxsKiBjZWxsKQoreworICAgIGdyYXBoLm1fcGxhbi53ZWFr
UmVmZXJlbmNlcygpLmFkZExhemlseShjZWxsKTsKKyAgICBpZiAoZ3JhcGgubV9wbGFuLmlzVW5s
aW5rZWQoKSkgeworICAgICAgICBtX2luZGV4ID0gZ3JhcGgubV9wbGFuLmFkZFVubGlua2VkQ29u
c3RhbnQoY2VsbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wb2ludGVyID0gY2Vs
bDsKK30KKworSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6OlVubGlua2VkQ29uc3RhbnQo
R3JhcGgmIGdyYXBoLCB2b2lkKiBwb2ludGVyLCBOb25DZWxsVGFnKQoreworICAgIGlmIChncmFw
aC5tX3BsYW4uaXNVbmxpbmtlZCgpKSB7CisgICAgICAgIG1faW5kZXggPSBncmFwaC5tX3BsYW4u
YWRkVW5saW5rZWRDb25zdGFudChwb2ludGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBtX3BvaW50ZXIgPSBwb2ludGVyOworfQorCit2b2lkIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50OjptYXRlcmlhbGl6ZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIHJlc3VsdEdQUikK
K3sKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIGlmIChpc1VubGlua2VkKCkpIHsKKyAgICAgICAg
aml0LmxvYWRQdHIodW5saW5rZWRBZGRyZXNzKCksIHJlc3VsdEdQUik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKyAgICBqaXQubW92ZShUcnVzdGVkSW1tUHRyKG1fcG9pbnRlciks
IHJlc3VsdEdQUik7Cit9CisKK3ZvaWQgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6OnBv
a2UoQ0NhbGxIZWxwZXJzJiBqaXQsIENDYWxsSGVscGVyczo6QWRkcmVzcyBhZGRyZXNzKQorewor
I2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKGlzVW5saW5rZWQoKSkgeworICAgICAgICBqaXQu
dHJhbnNmZXJQdHIodW5saW5rZWRBZGRyZXNzKCksIGFkZHJlc3MpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisgICAgaml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobV9wb2ludGVy
KSwgYWRkcmVzcyk7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCmluZGV4IDk4NDI3NjgzOGQzZTg5MGM1MTEzNmUwYTNkMThlZTBiOTcyNDZjMTcuLjI4YTk0
NzM0MmMzYzZlMjJmNDU3MGRjNGJlOGNiMDE4YWExY2QzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKQEAgLTI1NSwxNCArMjU1LDYgQEAgY2xhc3MgSklU
Q29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxIZWxwZXJzIHsKICAgICAgICAgICAgIGFkZFdlYWtSZWZl
cmVuY2Uoc3RydWN0dXJlU2V0W2ldKTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBU
IGxlZnQsIEpTQ2VsbCogd2Vha1B0cikKLSAgICB7Ci0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJh
bmNoUHRyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW1QdHIod2Vha1B0cikpOwotICAgICAgICBhZGRX
ZWFrUmVmZXJlbmNlKHdlYWtQdHIpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgSnVtcCBicmFuY2hXZWFrU3RydWN0dXJlKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHdlYWtT
dHJ1Y3R1cmUpCiAgICAgewpAQCAtMzEyLDYgKzMwNCw2NiBAQCBjbGFzcyBKSVRDb21waWxlciA6
IHB1YmxpYyBDQ2FsbEhlbHBlcnMgewogICAgICAgICBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKCZS
ZWdpc3RlckF0T2Zmc2V0TGlzdDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKICAgICB9CiAK
KyAgICBjbGFzcyBVbmxpbmtlZENvbnN0YW50IGZpbmFsIDogcHVibGljIENDYWxsSGVscGVyczo6
Q29uc3RhbnRNYXRlcmlhbGl6ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZW51bSBOb25DZWxs
VGFnIHsgTm9uQ2VsbCB9OworICAgICAgICBVbmxpbmtlZENvbnN0YW50KEdyYXBoJiwgSlNDZWxs
Kik7CisKKyAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZShDQ2FsbEhlbHBlcnMmLCBHUFJSZWcpOwor
ICAgICAgICB2b2lkIHBva2UoQ0NhbGxIZWxwZXJzJiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKTsK
KworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgICAgICBzdGF0aWMgVW5saW5rZWRD
b25zdGFudCBub25DZWxsUG9pbnRlcihHcmFwaCYgZ3JhcGgsIFQqIHBvaW50ZXIpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZl92PEpTQ2VsbCwg
VD4pOworICAgICAgICAgICAgcmV0dXJuIFVubGlua2VkQ29uc3RhbnQoZ3JhcGgsIHBvaW50ZXIs
IE5vbkNlbGwpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFVubGlua2VkQ29uc3RhbnQg
c3RydWN0dXJlKEdyYXBoJiBncmFwaCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZENvbnN0YW50KGdyYXBoLCBzdHJ1
Y3R1cmUuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc1VubGlua2VkKCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleCAhPSBVSU5UX01BWDsgfQorCisgICAgICAgIHZvaWQqIHBvaW50
ZXIoKSBjb25zdCB7IHJldHVybiBtX3BvaW50ZXI7IH0KKworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIEFkZHJlc3MgdW5saW5rZWRBZGRyZXNzKCkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKGlzVW5saW5rZWQoKSk7CisgICAgICAgICAgICByZXR1cm4gQWRkcmVzcyhHUFJJbmZv
Ojpjb25zdGFudHNSZWdpc3RlciwgREZHSklURGF0YTo6b2Zmc2V0T2ZEYXRhKCkgKyBzaXplb2Yo
dm9pZCopICogbV9pbmRleCk7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgVW5saW5rZWRDb25zdGFudChHcmFwaCYsIHZvaWQqLCBOb25DZWxsVGFnKTsKKworICAg
ICAgICB1bnNpZ25lZCBtX2luZGV4IHsgVUlOVF9NQVggfTsKKyAgICAgICAgdm9pZCogbV9wb2lu
dGVyIHsgbnVsbHB0ciB9OworICAgIH07CisKKyAgICB2b2lkIGxvYWRVbmxpbmtlZENvbnN0YW50
KFVubGlua2VkQ29uc3RhbnQsIEdQUlJlZyk7CisgICAgdm9pZCBzdG9yZVVubGlua2VkQ29uc3Rh
bnQoVW5saW5rZWRDb25zdGFudCwgQWRkcmVzcyk7CisKKyAgICBKdW1wIGJyYW5jaFVubGlua2Vk
Q29uc3RhbnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBHUFJSZWcgbGVmdCwgVW5saW5rZWRD
b25zdGFudCBjb25zdGFudCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgaWYg
KGNvbnN0YW50LmlzVW5saW5rZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6
OmJyYW5jaFB0cihjb25kLCBsZWZ0LCBjb25zdGFudC51bmxpbmtlZEFkZHJlc3MoKSk7CisjZW5k
aWYKKyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6YnJhbmNoUHRyKGNvbmQsIGxlZnQsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihjb25zdGFudC5wb2ludGVyKCkpKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaFVubGlua2VkQ29uc3RhbnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIFVubGlua2VkQ29uc3RhbnQgY29uc3RhbnQpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChjb25zdGFudC5pc1VubGlua2VkKCkpCisgICAgICAg
ICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpicmFuY2hQdHIoY29uZCwgbGVmdCwgY29uc3RhbnQu
dW5saW5rZWRBZGRyZXNzKCkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6
OmJyYW5jaFB0cihjb25kLCBsZWZ0LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoY29uc3Rh
bnQucG9pbnRlcigpKSk7CisgICAgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRGaW5hbGl6ZXIuY3BwCmluZGV4IGQ2MzYxMzI5N2MyN2YzODgxNTg2YmNhYTc3ZTNhY2Nm
ZjRlMjY0YzcuLjVlY2U0NTY3NTUwZGEzMTZiNDI2OTNhYTU1YmY2NmVhZTc3MmU1MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKQEAgLTY0LDYg
KzY0LDcgQEAgYm9vbCBKSVRGaW5hbGl6ZXI6OmZpbmFsaXplKCkKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fcGxhbi5jb2RlQmxvY2soKTsKIAogICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShtX2ppdENvZGUuY29weVJlZigpKTsKKyAgICBjb2RlQmxvY2stPnNldERGR0pJVERhdGEobV9w
bGFuLmZpbmFsaXplSklURGF0YSgpKTsKIAogI2lmIEVOQUJMRShGVExfSklUKQogICAgIG1faml0
Q29kZS0+b3B0aW1pemVBZnRlcldhcm1VcChjb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAKaW5kZXggZjg2MzVhZTY4ODJhMjUxNWFiOWMzMTE0ZTY2N2ExYjc4MmNi
NzMyYi4uN2U4NmE5OWNhOTQ5YmVlY2U4Y2Q5MTE3NWJlMGE0ZjQxYjY0ODU0MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCkBAIC02ODEsNiArNjgxLDIyIEBAIHZvaWQgUGxh
bjo6Y2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkoKQogICAgIH0KIH0KIAordW5zaWdu
ZWQgUGxhbjo6YWRkVW5saW5rZWRDb25zdGFudCh2b2lkKiBwdHIpCit7CisgICAgQVNTRVJUKCFw
dHIpOworICAgIHJldHVybiBtX2NvbnN0YW50UG9vbC5hZGQocHRyLCBtX2NvbnN0YW50UG9vbC5z
aXplKCkpLml0ZXJhdG9yLT52YWx1ZTsKK30KKworc3RkOjp1bmlxdWVfcHRyPERGR0pJVERhdGE+
IFBsYW46OmZpbmFsaXplSklURGF0YSgpCit7CisgICAgaWYgKG1fY29uc3RhbnRQb29sLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBqaXREYXRhID0gREZHSklU
RGF0YTo6Y3JlYXRlKG1fY29uc3RhbnRQb29sLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBwYWly
IDogbV9jb25zdGFudFBvb2wpCisgICAgICAgIGppdERhdGEtPmF0KHBhaXIudmFsdWUpID0gcGFp
ci5rZXk7CisgICAgcmV0dXJuIGppdERhdGE7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bs
YW4uaAppbmRleCA0MDgwMzI5NmE2ZGJlMGU0N2VhMzgzM2RiYmYyNGE2YzI5MDNiNmUyLi5lOTU0
YjBkMWY0MGNhYWQyZGI1ZmVhNGZmZTk4MzI3NjQxOTYxZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBDb2RlQmxvY2s7CiBuYW1lc3Bh
Y2UgREZHIHsKIAogY2xhc3MgVGhyZWFkRGF0YTsKK2NsYXNzIERGR0pJVERhdGE7CiAKICNpZiBF
TkFCTEUoREZHX0pJVCkKIApAQCAtMTAxLDYgKzEwMiw5IEBAIGNsYXNzIFBsYW4gZmluYWwgOiBw
dWJsaWMgSklUUGxhbiB7CiAgICAgRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrKiBjYWxsYmFj
aygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0KCk7IH0KICAgICB2b2lkIHNldENhbGxi
YWNrKFJlZjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+JiYgY2FsbGJhY2spIHsgbV9jYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAKKyAgICB1bnNpZ25lZCBhZGRVbmxpbmtlZENv
bnN0YW50KHZvaWQqKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8REZHSklURGF0YT4gZmluYWxpemVK
SVREYXRhKCk7CisKIHByaXZhdGU6CiAgICAgQ29tcGlsYXRpb25QYXRoIGNvbXBpbGVJblRocmVh
ZEltcGwoKSBvdmVycmlkZTsKICAgICAKQEAgLTEzNCw2ICsxMzgsNyBAQCBjbGFzcyBQbGFuIGZp
bmFsIDogcHVibGljIEpJVFBsYW4gewogICAgIFZlY3RvcjxCeXRlY29kZUluZGV4PiBtX3RpZXJV
cEFuZE9TUkVudGVyQnl0ZWNvZGVzOwogCiAgICAgUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjaz4gbV9jYWxsYmFjazsKKyAgICBIYXNoTWFwPHZvaWQqLCB1bnNpZ25lZD4gbV9jb25z
dGFudFBvb2w7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggZmFiY2UwMTgyZGU5MDAyNTNmMGRmM2YwYmYyZTkz
MDE4N2MwZmYxNC4uNjQzYmQyNWMwOWMyYTMyMDIyNDU3YTE1ZDYxNjk0NjE5MTEyM2FiZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxT
bG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fu
ZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBTYW5lU3RyaW5nR2V0QnlWYWxTbG93
UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFj
cm9Bc3NlbWJsZXI6Okp1bXA+IHsKIHB1YmxpYzoKICAgICBTYW5lU3RyaW5nR2V0QnlWYWxTbG93
UGF0aEdlbmVyYXRvcigKLSAgICAgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZyb20s
IFNwZWN1bGF0aXZlSklUKiBqaXQsIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MsIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0ciBnbG9iYWxPYmplY3QsIEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgcHJv
cGVydHlSZWcpCisgICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBmcm9tLCBTcGVj
dWxhdGl2ZUpJVCogaml0LCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudCBnbG9iYWxPYmplY3QsIEdQUlJlZyBiYXNlUmVnLCBHUFJSZWcgcHJvcGVy
dHlSZWcpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVy
OjpKdW1wPihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9yZXN1bHRSZWdzKHJlc3VsdFJlZ3MpCiAg
ICAgICAgICwgbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0KQpAQCAtNzksNyArNzksNyBAQCBj
bGFzcyBTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBK
dW1waW5nU2xvd1BhdGhHZW5lcmF0bwogICAgIH0KIAogICAgIEpTVmFsdWVSZWdzIG1fcmVzdWx0
UmVnczsKLSAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgbV9nbG9iYWxPYmplY3Q7Cisg
ICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgbV9nbG9iYWxPYmplY3Q7CiAgICAgR1BS
UmVnIG1fYmFzZVJlZzsKICAgICBHUFJSZWcgbV9wcm9wZXJ0eVJlZzsKICAgICBWZWN0b3I8U2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbiwgMj4gbV9wbGFuczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMTQ3NmI0ZTgzODRiMzdmZjliZGE0
NzMzZjUxMThmZWFmMWI3YzUwOC4uZTc3ZDkzOTY3YmJhYzg2YjFkMDIyOGQ0NDhiZWE2NzJlNTk5
YTM2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0
b3IuaCIKICNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTExJbnRUaHVua3Mu
aCIKKyNpbmNsdWRlICJQcm9iZUNvbnRleHQuaCIKICNpbmNsdWRlICJSZWdFeHBPYmplY3QuaCIK
ICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cu
aCIKQEAgLTIwNSwxMSArMjA2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldENhbGxl
ZShDb2RlT3JpZ2luIG9yaWdpbiwgR1BSUmVnIGNhbGxlZUdQUikKICAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCiAgICAgICAgICAg
ICAgICAgY2FsbGVlR1BSKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0Lm1v
dmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3Jh
cGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgp
KSwKLSAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwotICAgICAgICB9CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNv
dmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwgY2FsbGVlR1BSKTsKICAgICB9IGVsc2UKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpLCBjYWxsZWVHUFIpOwogfQpAQCAtNjg2LDcgKzY4NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYgcGxhbikKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRDZWxsQ29uc3RhbnQ6CiAgICAgICAgIEFTU0VSVChw
bGFuLm5vZGUoKS0+Y29uc3RhbnQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7Ci0gICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cihwbGFuLm5vZGUoKS0+Y29uc3RhbnQoKSksIHBsYW4uZ3ByKCkp
OworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBwbGFuLm5vZGUoKS0+Y29uc3RhbnQoKS0+dmFsdWUoKS5hc0Nl
bGwoKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIGNhc2UgU2V0VHJ1c3RlZEpTQ29uc3RhbnQ6CkBAIC0xMjA3LDIyICsxMjA1LDIyIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeUlkKE5vZGUqIG5vZGUpCiAgICAgICAg
IGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFN
b2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRl
QnlJZE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlk
ZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVl
KCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2Vu
LnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlm
aWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeUlkT3B0aW1pemUsCi0gICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigp
LnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAg
ICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGlt
aXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1
YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZh
bHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Z2VuLnN0dWJJbmZvKCksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5j
YWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1v
ZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0xMjQzLDcgKzEyNDEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIo
KS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWRHZW5lcmljLCByZXN1bHRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2Rl
KCkudmFsdWUoKSkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNz
ZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMjkzLDIyICsxMjkxLDIyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAg
ICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2Vz
LCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVz
cyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigp
KSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBr
ZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBKU1Zh
bHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxl
dGVCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0
ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7
CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVy
YXRvcj4gc2xvd1BhdGg7CiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zm
c2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25EZWxldGVCeVZhbE9wdGltaXplLAotICAg
ICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2Rl
LT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAg
ICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5VmFsT3B0aW1p
emUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHVi
SW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3Rl
ZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgp
LnZhbHVlKCkpKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTEzMzAsNyArMTMyOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbChOb2RlKiBub2RlKQogICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25EZWxldGVCeVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG51bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+
ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWxldGVC
eVZhbEdlbmVyaWMsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51
bGxwdHIsIGJhc2VSZWdzLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52
YWx1ZSgpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxlc3NlZEJv
b2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEzNzMsMTIgKzEzNzEsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlJZChOb2RlKiBub2RlKQogICAgICAgICBzbG93
UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4u
c3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQ
UiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9u
SW5CeUlkT3B0aW1pemUsCiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwg
bm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAogICAgICAgICAg
ICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAot
ICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0KIAogICAgIG1faml0
LmFkZEluQnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTE0MjMsMTIgKzE0MjEsMTIgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJh
dGlvbkluQnlWYWxPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBrZXlSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5CeVZh
bE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWly
ZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGtleVJlZ3MpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGtleVJlZ3MpOwogICAgIH0KIAogICAgIG1faml0LmFkZEluQnlWYWwoZ2VuLCBzbG93
UGF0aC5nZXQoKSk7CkBAIC0xNDc3LDEyICsxNDc1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVIYXNQcml2YXRlKE5vZGUqIG5vZGUsIEFjY2Vzc1R5cGUgdHlwZSkKICAgICAgICAg
c2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
Z2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1Yklu
Zm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIHR5cGUg
PT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2YXRlTmFtZU9w
dGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsCiAgICAgICAgICAgICBO
ZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAg
ICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVy
dHlPckJyYW5kR1BSKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxI
ZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlPckJyYW5kR1BSKSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIHR5cGUgPT0gQWNjZXNzVHlwZTo6SGFzUHJpdmF0ZU5hbWUgPyBvcGVyYXRpb25IYXNQcml2
YXRlTmFtZU9wdGltaXplIDogb3BlcmF0aW9uSGFzUHJpdmF0ZUJyYW5kT3B0aW1pemUsCiAgICAg
ICAgICAgICBOZWVkVG9TcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVk
ZWQsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5m
bygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUocHJvcGVydHlPckJyYW5kR1BSKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
YXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlPckJyYW5kR1BSKSk7CiAg
ICAgfQogCiAgICAgbV9qaXQuYWRkSW5CeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTE1
MTYsNyArMTUxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXNoV2l0aFNjb3Bl
KE5vZGUqIG5vZGUpCiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChvYmplY3RFZGdlLCBvYmplY3RH
UFIpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgY3VycmVudFNjb3BlR1BSLCBvYmplY3RHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJlbnRTY29wZUdQUiwgb2JqZWN0R1BSKTsKICAgICAg
ICAgLy8gTm8gZXhjZXB0aW9uIGNoZWNrIGhlcmUgYXMgd2UgZGlkIG5vdCBoYXZlIHRvIGNhbGwg
dG9PYmplY3QoKS4KICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQob2JqZWN0RWRnZS51c2VL
aW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC0xNTI0LDcgKzE1MjIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVl
UmVncyBvYmplY3RSZWdzID0gb2JqZWN0LmpzVmFsdWVSZWdzKCk7CiAKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3Bl
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIs
IG9iamVjdFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hXaXRoU2Nv
cGUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJlbnRTY29w
ZUdQUiwgb2JqZWN0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
fQogICAgIApAQCAtMTkxMSw3ICsxOTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN0cmluZ1NsaWNlKE5vZGUqIG5vZGUpCiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAg
IGF1dG8gbm9uRW1wdHlDYXNlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93
LCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0pKSwgdGVtcEdQUik7
CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyh2bSkpLCB0ZW1wR1BSKTsKICAgICBk
b25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAgICBub25FbXB0eUNhc2UubGluaygm
bV9qaXQpOwpAQCAtMTk0MywxMiArMTk0MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaW5nU2xpY2UoTm9kZSogbm9kZSkKIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChiaWdDaGFyYWN0ZXIsIHRoaXMsIG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0
cmluZywgdGVtcEdQUiwgJnZtLCB0ZW1wR1BSKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTdWJzdHIsIHRl
bXBHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0SW5kZXhH
UFIsIHRlbXBHUFIpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTdWJzdHIsIHRlbXBHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0SW5kZXhHUFIsIHRlbXBHUFIpKTsK
IAogICAgIGlmIChlbmRHUFIpCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChpc1JvcGUsIHRoaXMsIG9wZXJhdGlvblN0cmluZ1NsaWNlLCB0ZW1wR1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEdQUiwgKmVuZEdQUikpOworICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVy
YXRpb25TdHJpbmdTbGljZSwgdGVtcEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHN0cmluZ0dQUiwgc3RhcnRHUFIsICplbmRHUFIpKTsKICAgICBlbHNlCi0gICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMsIG9wZXJhdGlvblN0cmlu
Z1NsaWNlLCB0ZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBz
dGFydEdQUiwgVHJ1c3RlZEltbTMyKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgp
KSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0
aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptYXgoKSkpKTsKIAogICAgIGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7
CiAgICAgY2VsbFJlc3VsdCh0ZW1wR1BSLCBub2RlKTsKQEAgLTE5OTUsNyArMTk5Myw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0xvd2VyQ2FzZShOb2RlKiBub2RlKQogICAgIAog
ICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhs
ZW5ndGhHUFIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9Mb3dlckNhc2UsIGxlbmd0
aEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgaW5kZXhHUFIpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9Mb3dlckNhc2UsIGxlbmd0aEdQUiwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgaW5kZXhHUFIpOwogICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGF1
dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTIyMTgsNiArMjIxNiwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3VycmVudEJsb2NrKCkKICAgICAgICAgbV9qaXQuZW1pdFNhdmVD
YWxsZWVTYXZlcygpOwogICAgICAgICBtX2ppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lz
dGVycygpOwogICAgICAgICAvLyBDb2RlQmxvY2sgaW4gdGhlIHN0YWNrIGlzIGFscmVhZHkgcmVw
bGFjZWQgaW4gT1NSIGVudHJ5LgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChtX2dy
YXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAgICAgICAgICAgIG1faml0LmVtaXRHZXRGcm9t
Q2FsbEZyYW1lSGVhZGVyUHRyKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6Y29u
c3RhbnRzUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9qaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIsIENvZGVCbG9jazo6b2Zmc2V0T2ZK
SVREYXRhKCkpLCBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CisgICAgICAgIH0KKyNlbmRp
ZgogICAgIH0KIAogICAgIG1fc3RyZWFtLT5hcHBlbmRBbmRMb2coVmFyaWFibGVFdmVudDo6cmVz
ZXQoKSk7CkBAIC0yNDk4LDcgKzI1MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
Q2hlY2tUcmFwcyhOb2RlKiBub2RlKQogICAgICAgICBKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRy
ZXNzKG1faml0LnZtKCkudHJhcHMoKS50cmFwQml0c0FkZHJlc3MoKSksCiAgICAgICAgIFRydXN0
ZWRJbW0zMihWTVRyYXBzOjpBc3luY0V2ZW50cykpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxpbmcsIHRoaXMsIG9wZXJhdGlvbkhhbmRsZVRy
YXBzLCB1bnVzZWRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5lZWRUcmFwSGFuZGxpbmcsIHRoaXMsIG9wZXJh
dGlvbkhhbmRsZVRyYXBzLCB1bnVzZWRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
KSk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKQEAgLTI1NjMsNyArMjU2Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHV0QnlWYWwoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/CiAgICAgICAgICAgICAgICAg
KG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJl
eW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5k
c1N0cmljdCkgOgogICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0
ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9w
ZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QpLAotICAgICAgICAgICAg
Tm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJl
ZywgdmFsdWVSZWdzKSk7CisgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZ3MpKTsKICAgICB9CiAK
ICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtMjYz
OCw3ICsyNjQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFs
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
ID8KICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAg
ICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dERv
dWJsZUJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRE
b3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKLSAgICAgICAgICAgICAgICBO
b1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVn
LCB2YWx1ZVJlZykpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVnKSk7CiAgICAgfQog
CiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKQEAgLTI2OTYsOSArMjcwMCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRC
eVZhbChOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QpCi0gICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdz
KTsKKyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJp
Y3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3ROb25TdHJpY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywg
cHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9u
UHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdCwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncyk7CisgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBv
cGVyYXRpb25QdXRCeVZhbFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0LCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVS
ZWdzKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgICAg
IG5vUmVzdWx0KG5vZGUpOwpAQCAtMjc1MSwxMSArMjc1NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQ
YXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZv
KCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbiwKLSAgICAg
ICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJvcGVydHlS
ZWdzLCB2YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBO
b1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1
ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uLAotICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgZ2VuLnN0dWJJbmZvKCksIG51
bGxwdHIpOworICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGJh
c2VSZWdzLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIp
OwogICAgICAgICB9CiAKICAgICAgICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CkBAIC0yODQ2LDcgKzI4NTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlz
U3RyaWN0KCkgPwogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERp
cmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QgOiBv
cGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KSA6CiAgICAgICAgICAgICAg
ICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25k
QXJyYXlCb3VuZHNOb25TdHJpY3QpLAotICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykpOwor
ICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlUmVncykpOwogICAgICAgICB9CiAKICAgICAgICAg
bm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTI5NTcsNyAr
Mjk2MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5v
ZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZXN1bHRSZWdzLnRhZ0dQUigpKTsKICNlbmRp
ZgogCi0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RyaW5nUHJvdG90eXBlU3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT5zdHJpbmdQcm90b3R5cGUoKS0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgU3Ry
dWN0dXJlKiBvYmplY3RQcm90b3R5cGVTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBXVEY6OmRlcGVuZGVudExvYWRMb2Fk
RmVuY2UoKTsKQEAgLTI5NzMsMTIgKzI5NzcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDoK
ICAgICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJBbmRXYXRjaFN0cnVjdHVyZVRyYW5z
aXRpb24ob2JqZWN0UHJvdG90eXBlU3RydWN0dXJlKTsKIAogICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRv
cj4oCi0gICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGJhc2VSZWcsIHBy
b3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMsIHRoaXMsIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICAgICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbFN0cmlu
Z0ludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBtX2N1
cnJlbnROb2RlKTsKQEAgLTMwMDIsNyArMzAwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
ICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQsIHJlc3VsdFJlZ3Ms
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcHJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkLCByZXN1bHRSZWdzLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3ByUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwpAQCAtMzAyMiw3ICszMDI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUZyb21DaGFyQ29kZShOb2RlKiBub2RlKQogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzbWFsbFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6U2NhbGVQdHIsIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7Ci0gICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgcHJvcGVydHlSZWcpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGUsIHNjcmF0Y2hS
ZWcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBwcm9wZXJ0eVJlZykpOwogICAgIGNl
bGxSZXN1bHQoc2NyYXRjaFJlZywgbV9jdXJyZW50Tm9kZSk7CiB9CiAKQEAgLTM5NDYsOSArMzk1
MCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkoTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUKICAgICAgICAgICAgICAgICAobm9kZS0+b3Ao
KSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0U3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlWYWxTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQ
dXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0IDogb3BlcmF0
aW9uUHV0QnlWYWxOb25TdHJpY3QpLAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBO
b1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVn
LCB2YWx1ZUdQUikpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsKICNlbHNlIC8vIG5v
dCBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwgSlNWYWx1ZVJlZ3Mo
cHJvcGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZh
bHVlR1BSKSkpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVnKSwgSlNWYWx1ZVJlZ3MocHJv
cGVydHlUYWdHUFIsIHByb3BlcnR5UmVnKSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVl
R1BSKSkpOwogI2VuZGlmCiAgICAgfQogCkBAIC00MDU2LDcgKzQwNjAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxGb3JPYmplY3RXaXRoU3RyaW5nKE5vZGUqIG5vZGUs
IGNvbnN0IFNjb3BlZAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdz
KTsKICAgICBlbHNlCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlWYWxPYmplY3RTdHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICBpZiAoY2FuVXNlRmx1c2ggPT0g
Q2FuVXNlRmx1c2g6Ok5vKQogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQwODMsNyArNDA4Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbEZvck9iamVjdFdpdGhTeW1ib2woTm9kZSogbm9kZSwg
Y29uc3QgU2NvcGVkCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3Mp
OwogICAgIGVsc2UKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3ltYm9sLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIpOwogICAgIGlmIChjYW5Vc2VGbHVzaCA9PSBD
YW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtNDE1MSwxMiArNDE1NSwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0UHJpdmF0ZU5hbWVCeVZhbChOb2RlKiBub2RlLCBKU1ZhbHVl
UmVncyBiYXNlLCBKUwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRG
R0pJVCkpIHsKICAgICAgICAgICAgIHJldHVybiBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZT
bG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRQcml2YXRlTmFtZU9wdGltaXplLAotICAgICAg
ICAgICAgICAgIHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCisg
ICAgICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwKICAgICAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9w
ZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc2xvd1BhdGhD
YWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRQcml2YXRlTmFt
ZU9wdGltaXplLAotICAgICAgICAgICAgcmVzdWx0LnJlZ3MoKSwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBn
ZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIHJlc3VsdC5yZWdzKCksIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBiYXNlLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShwcm9wZXJ0eS5wYXlsb2FkR1BSKCkpKTsKICAgICB9OwogCkBAIC00MjQ0LDcgKzQy
NDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN0
cmluZyhOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPwog
ICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRC
eVZhbERpcmVjdENlbGxTdHJpbmdTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdT
dHJpY3QpIDoKICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3RyaW5nTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00MjY3LDcgKzQyNzEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JDZWxsV2l0aFN5bWJv
bChOb2RlKiBub2RlKQogICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkKICAgICAg
ICAgICAgID8gKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdENlbGxTeW1ib2xTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJp
Y3QpCiAgICAgICAgICAgICA6IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3ltYm9sTm9uU3RyaWN0KSwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKKyAgICAgICAgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJHUFIsIGFyZzNSZWdzKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC00Mjg1LDcgKzQyODksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyhOb2RlKiBub2Rl
KQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRoaXNWYWx1ZVJlZ3Ms
IHN1YnNjcmlwdFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRo
VGhpcywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdz
LCB0aGlzVmFsdWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTQzMTEsNyAr
NDMxNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShOb2Rl
KiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGF1dG8gb3BlcmF0
aW9uID0gbm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLmlzRGVmaW5lKCkgPyBvcGVyYXRpb25Q
dXRCeVZhbERlZmluZVByaXZhdGVGaWVsZEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbFNldFBy
aXZhdGVGaWVsZEdlbmVyaWM7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBUcnVzdGVk
SW1tUHRyKG51bGxwdHIpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFs
dWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIFRydXN0
ZWRJbW1QdHIobnVsbHB0cikpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDM1NSwxMSArNDM1OSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5hbWUoTm9kZSogbm9kZSkKICAgICBpZiAoSklU
Q29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZv
KCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVj
dHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbiwKLSAgICAg
ICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVn
cywgc3R1YkluZm9HUFIsIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgbnVsbHB0
cik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAg
ICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKLSAgICAgICAgICAgIE5vUmVzdWx0
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgZ2VuLnN0dWJJbmZv
KCksIG51bGxwdHIpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0cik7CiAgICAg
fQogCiAgICAgbV9qaXQuYWRkUHV0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NDMz
LDExICs0NDM3LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1ByaXZhdGVC
cmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZH
SklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVy
czo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09w
ZXJhdGlvbigpKSwgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQs
Ci0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlUmVncywgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShi
cmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DaGVja1ByaXZhdGVCcmFu
ZE9wdGltaXplLCBOb1Jlc3VsdCwKLSAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwor
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZVJlZ3Ms
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CiAgICAgfQogCiAgICAgbV9qaXQu
YWRkUHJpdmF0ZUJyYW5kQWNjZXNzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtNDQ4MSwxMSAr
NDQ4NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU2V0UHJpdmF0ZUJyYW5kKE5v
ZGUqIG5vZGUpCiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7
CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQsCi0gICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xv
d0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25TZXRQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQs
Ci0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFu
ZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNs
b3dQYXRoLmdldCgpKTsKQEAgLTQ1MjEsNyArNDUyNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0g
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50R2VuZXJpYywgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgcmFkaXhHUFIpOwor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludEdlbmVyaWMsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIHJhZGl4R1BS
KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDUz
NCw3ICs0NTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZGUq
IG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJz
ZUludFN0cmluZywgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVl
R1BSLCByYWRpeEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRT
dHJpbmcsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUdQ
UiwgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC00NTQ3
LDcgKzQ1NTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSog
bm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNl
SW50Tm9SYWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50Tm9S
YWRpeEdlbmVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2
YWx1ZVJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC00NTYwLDcg
KzQ1NjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQoTm9kZSogbm9k
ZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4LCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIpOworICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmdOb1JhZGl4LCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIpOwogICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAg
LTQ1ODMsMTEgKzQ1ODcsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU92ZXJyaWRl
c0hhc0luc3RhbmNlKE5vZGUqIG5vZGUpCiAgICAgLy8gc2luY2UgaXQgcmVsaWVzIG9uIE9TUiBp
bmZvcm1hdGlvbi4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDgz
MgogICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmlzQ2VsbENvbnN0YW50KCkgfHwgZGVm
YXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmFzQ2VsbCgp
KSB7CiAgICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5zdGFu
Y2VWYWx1ZS5qc1ZhbHVlUmVncygpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFu
dChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFu
ZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIG5v
dERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVy
YW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLmdwcigpLCByZXN1bHRH
UFIpKTsKICNlbHNlCiAgICAgICAgIG5vdERlZmF1bHQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICBub3REZWZhdWx0LmFwcGVuZCht
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVl
UmVncy5wYXlsb2FkR1BSKCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsK
KyAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRHUFIp
KTsKICNlbmRpZgogICAgIH0KIApAQCAtNDYyMSwxMCArNDYyNiwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvckNlbGxzKE5vZGUqIG5vZGUsIEpTVmFsdWVSZWdz
IHZhbHVlUmVncwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBv
cGVyYXRpb25JbnN0YW5jZU9mT3B0aW1pemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHN0dWJJbmZvR1BSLCB2YWx1ZVJlZ3MsIHByb3RvdHlwZVJlZ3MpOworICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLCBw
cm90b3R5cGVSZWdzKTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
Q2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9w
dGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1Yklu
Zm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uSW5zdGFuY2VPZk9wdGltaXplLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBnZW4uc3R1YkluZm8oKSwgdmFsdWVSZWdzLCBwcm90b3R5cGVS
ZWdzKTsKICAgICB9CiAgICAgCiAgICAgbV9qaXQuYWRkSW5zdGFuY2VPZihnZW4sIHNsb3dQYXRo
LmdldCgpKTsKQEAgLTQ3MzQsNyArNDczOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZUJpdE5vdChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXROb3RIZWFw
QmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRHUFIpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUpOwogCkBAIC00NzQ5LDcgKzQ3NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcGVyYW5kUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUJpdE5vdCwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJhbmRSZWdzKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKQEAgLTQ3ODksNyArNDc5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkT3JBbnlCaWdJbnRCaXRPcChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAg
ICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CkBAIC00ODU0LDcgKzQ4NTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZh
bHVlKHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNh
bGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0
aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTQ5MTcsMTMgKzQ5
MjIsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0d2lzZU9wKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFZhbHVlQml0QW5k
OgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRIZWFwQmlnSW50LCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRH
UFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRYb3I6Ci0gICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFhvckhlYXBCaWdJbnQsIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWYWx1ZUJpdE9yOgotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE9ySGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTUwMDcsNyArNTAxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSogbm9kZSkKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTA3Myw3ICs1MDc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFVudHlwZWRPckJpZ0ludFJpZ2h0U2hpZnRCaXRPcChOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC5tb3ZlVmFsdWUocmlnaHRDaGlsZC0+YXNKU1ZhbHVlKCksIHJpZ2h0UmVncyk7CiAg
ICAgfQogCi0gICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwor
ICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKIAogICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpA
QCAtNTEwMiw3ICs1MTA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTFNo
aWZ0T3AoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNoaWZ0SGVhcEJpZ0lu
dCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRMU2hpZnRIZWFwQmlnSW50
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICByZXR1cm47CkBAIC01MTI5LDcgKzUx
MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVCaXRSU2hpZnQoTm9kZSog
bm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJl
Z3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdFJT
aGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0UlNo
aWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTIxNyw3ICs1MjIy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAg
ICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICAgICAgLy8gRklY
TUU6IGNhbGwgYSBtb3JlIHNwZWNpYWxpemVkIGZ1bmN0aW9uCi0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CkBAIC01MjM4LDcgKzUyNDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVB
ZGQoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQWRk
SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTI1NCw3ICs1MjU5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJl
ciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdo
dFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVy
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJp
Z2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC01MzE3LDcgKzUzMjIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVTdWIoTm9kZSogbm9kZSkKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCBy
ZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3ViLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVTdWIsIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3Ms
IG5vZGUpOwpAQCAtNTMzOCw3ICs1MzQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkhlYXBCaWdJbnQs
IHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQ
Uik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ViSGVhcEJpZ0ludCwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsK
IAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTQ0NSw5ICs1NDUwLDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU1hdGhJQyhOb2RlKiBub2RlLCBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9y
PiogbWF0aEkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFkZElDR2VuZXJhdGlv
blN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gpCi0gICAgICAgICAgICAgICAgYWRkSUNHZW5l
cmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0
aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0UmVn
cywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7CisgICAgICAgICAgICAg
ICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24ocmVw
YXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgaW5uZXJMZWZ0UmVncywgaW5uZXJSaWdodFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElDKSk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYWRkSUNHZW5lcmF0aW9uU3RhdGUt
PnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5uZXJMZWZ0UmVncywgaW5uZXJS
aWdodFJlZ3MpOworICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRS
ZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogICAgICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTU0NzYsNyArNTQ4MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0aElDPEdlbmVy
YXRvcj4qIG1hdGhJCiAgICAgICAgIH0KIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNTUwOSw3ICs1NTE0LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZDdXN0b20oTm9kZSogbm9kZSkKIAogICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHNsb3dDYXNlID0gbV9qaXQuanVtcCgpOwogCi0gICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25J
bnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2
YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJlZ3MpKTsKKyAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkluc3Rh
bmNlT2ZDdXN0b20sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZh
bHVlUmVncywgY29uc3RydWN0b3JHUFIsIGhhc0luc3RhbmNlUmVncykpOwogCiAgICAgdW5ibGVz
c2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtNTYwOCw5ICs1NjEzLDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvT2JqZWN0T3JDYWxsT2JqZWN0Q29uc3Ry
dWN0b3IoTm9kZSogbm9kZSkKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIGVycm9yTWVzc2Fn
ZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkgIT0gVUlO
VDMyX01BWCkKICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGlkZW50aWZpZXJVSUQobm9kZS0+
aWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9PYmplY3QsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgZXJyb3JNZXNzYWdlKSk7CisgICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvblRvT2JqZWN0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MsIGVycm9yTWVzc2FnZSkpOwogICAgIH0gZWxzZQotICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25DYWxs
T2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3Bl
cmFuZCgpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQ
YXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxPYmplY3RDb25zdHJ1Y3Rvciwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5j
ZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCB2YWx1ZVJlZ3MpKTsKIAogICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKIH0KQEAgLTU3NTQsNyArNTc1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcml0aEFicyhOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVncyBvcDFS
ZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQXJpdGhBYnMsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
MVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQWJzLCByZXN1bHQu
ZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIo
KSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTc3OCw3ICs1NzgzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQ2x6MzIoTm9kZSogbm9kZSkKICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQ2x6
MzIsIHJlc3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhDbHozMiwgcmVzdWx0UmVnLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogfQpAQCAtNTgwMiw3
ICs1ODA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRG91YmxlVW5hcnlP
cChOb2RlKiBub2RlLCBkb3VibGUgKCpkb3VibGVGdW5jdGkKICAgICBKU1ZhbHVlUmVncyBvcDFS
ZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBGUFJS
ZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHQu
ZnByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBkb3VibGVS
ZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTU5MTksNyArNTkyNCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbmNPckRlYyhOb2RlKiBub2RlKQogICAgIEpTVmFsdWVS
ZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3Vs
dFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGF1dG8gb3BlcmF0aW9uID0gbm9kZS0+b3AoKSA9
PSBJbmMgPyBvcGVyYXRpb25JbmMgOiBvcGVyYXRpb25EZWM7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdz
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTYwNTgsOSArNjA2
Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklU
VW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgICAgICBzaWxlbnRTcGlsbChz
YXZlUGxhbnMpOwogCiAgICAgICAgICAgICBpZiAoaWNHZW5lcmF0aW9uU3RhdGUtPnNob3VsZFNs
b3dQYXRoUmVwYXRjaCkKLSAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xvd1Bh
dGhDYWxsID0gY2FsbE9wZXJhdGlvbihyZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MsIFRydXN0ZWRJbW1QdHIobWF0aElD
KSk7CisgICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNh
bGxPcGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0
aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAgICAgICAgICAgICAg
aWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxPcGVyYXRpb24obm9uUmVwYXRj
aGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
Y2hpbGRSZWdzKTsKIAogICAgICAgICAgICAgc2lsZW50RmlsbChzYXZlUGxhbnMpOwogICAgICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTYwODEsNyArNjA4Niw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUVW5hcnlNYXRoSUM8
R2VuZXJhdG9yPiogbWF0aElDCiAgICAgICAgIH0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0
aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIH0KIApAQCAtNjE0Niw3ICs2MTUxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFs
dWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVn
cyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbk11bEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
TXVsSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNjE2NCw3ICs2MTY5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVz
dWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU11bCwgcmVz
dWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3Mp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlTXVsLCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKQEAgLTYzNDYsNyArNjM1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZIZWFw
QmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRpdkhlYXBCaWdJbnQs
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYzNjQsNyArNjM2OSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZURpdihOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CkBAIC02NDQ4LDcgKzY0NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVE
aXYoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFzSlNW
YWx1ZSgpLCByaWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VmFsdWVEaXYsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVn
cywgcmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVn
cyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKQEAgLTY2MTIsNyArNjYxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aEZSb3VuZChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEu
anNWYWx1ZVJlZ3MoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEZQUlJlc3VsdCByZXN1
bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0
LmZwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Bcml0aEZSb3VuZCwgcmVzdWx0LmZwcigpLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKIH0KQEAgLTY2MzcsNyArNjY0
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChOb2RlKiBub2RlKQog
ICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAg
ICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Nb2RIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk1vZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAg
LTY2NTQsNyArNjY1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU1vZChO
b2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVk
Q2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJl
c3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU1vZCwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC03
MDUxLDcgKzcwNTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGlu
ZyhOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBBcml0aFRydW5jKTsK
ICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uQXJpdGhUcnVuYzsKICAgICB9Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmd1bWVudFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRS
ZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiB9CkBAIC03MDg0LDcgKzcwODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhTcXJ0KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1Zh
bHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVzdWx0IHJlc3VsdCh0
aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoU3FydCwgcmVzdWx0LmZwcigp
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91
YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CkBAIC03MjEyLDcgKzcyMTcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9kZSkKICAgICAgICAg
SlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFs
dWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uUG93SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Qb3dIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC03MjMxLDcg
KzcyMzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVQb3coTm9kZSogbm9k
ZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVn
cygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVQb3csIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlUG93LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC03OTY4
LDcgKzc5NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nRXF1YWxpdHko
CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25D
b21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpKTsKKyAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRp
b25Db21wYXJlU3RyaW5nRXEsIGxlZnRUZW1wR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpKTsKICAgICAKICAgICBibGVzc2VkQm9vbGVhblJlc3Vs
dChsZWZ0VGVtcEdQUiwgbm9kZSk7CiB9CkBAIC04MTE4LDcgKzgxMjMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3RyaW5nQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxl
cjo6UmVsYXRpb25hbAogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24oY29tcGFyZUZ1bmN0aW9uLCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CisgICAgY2FsbE9wZXJhdGlvbihjb21wYXJlRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwpAQCAtODIxOSw3ICs4MjI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNh
bWVWYWx1ZShOb2RlKiBub2RlKQogCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TYW1lVmFsdWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
YW1lVmFsdWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFS
ZWdzLCBhcmcyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIHVuYmxl
c3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOwpAQCAtODIzNiw3ICs4MjQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVRvQm9vbGVhblN0cmluZyhOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICBHUFJUZW1wb3Jh
cnkgZXEodGhpcyk7CiAgICAgR1BSUmVnIGVxR1BSID0gZXEuZ3ByKCk7CiAKLSAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJp
bmcodm0oKSkpLCBlcUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyh2bSgp
KSksIGVxR1BSKTsKICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVydCA/IENDYWxsSGVscGVyczo6
RXF1YWwgOiBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzdHJHUFIsIGVxR1BSLCBlcUdQUik7CiAg
ICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChlcUdQUiwgbm9kZSk7CiB9CkBAIC04MjUzLDcgKzgy
NTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29sZWFuU3RyaW5nT3JPdGhl
cihOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAg
dmFsdWVSZWdzLCBub2RlLT5jaGlsZDEoKSwgKH5TcGVjQ2VsbENoZWNrKSB8IFNwZWNTdHJpbmcs
IG1faml0LmJyYW5jaElmTm90U3RyaW5nKGNlbGxHUFIpKTsKIAotICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyh2bSgp
KSksIHRlbXBHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCB0
ZW1wR1BSKTsKICAgICBtX2ppdC5jb21wYXJlUHRyKGludmVydCA/IENDYWxsSGVscGVyczo6RXF1
YWwgOiBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBjZWxsR1BSLCB0ZW1wR1BSLCB0ZW1wR1BSKTsK
ICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAKQEAgLTgyNzQsNyArODI3OSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdCcmFuY2goRWRnZSBub2RlVXNlLCBCYXNpY0Js
b2NrKiB0YWtlbiwgQmFzaWNCbG9jCiAKICAgICBzcGVjdWxhdGVTdHJpbmcobm9kZVVzZSwgc3Ry
R1BSKTsKIAotICAgIGJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBzdHJHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkp
LCBub3RUYWtlbik7CisgICAgYnJhbmNoVW5saW5rZWRDb25zdGFudChDQ2FsbEhlbHBlcnM6OkVx
dWFsLCBzdHJHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCks
IGpzRW1wdHlTdHJpbmcodm0oKSkpLCBub3RUYWtlbik7CiAgICAganVtcCh0YWtlbik7CiAKICAg
ICBub1Jlc3VsdChtX2N1cnJlbnROb2RlKTsKQEAgLTgyOTEsNyArODI5Niw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTdHJpbmdPck90aGVyQnJhbmNoKEVkZ2Ugbm9kZVVzZSwgQmFzaWNC
bG9jayogdGFrZW4sIEJhCiAgICAgR1BSUmVnIGNlbGxHUFIgPSB2YWx1ZVJlZ3MucGF5bG9hZEdQ
UigpOwogICAgIERGR19UWVBFX0NIRUNLKHZhbHVlUmVncywgbm9kZVVzZSwgKH5TcGVjQ2VsbENo
ZWNrKSB8IFNwZWNTdHJpbmcsIG1faml0LmJyYW5jaElmTm90U3RyaW5nKGNlbGxHUFIpKTsKIAot
ICAgIGJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkVxdWFsLCBjZWxsR1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgbm90VGFr
ZW4pOworICAgIGJyYW5jaFVubGlua2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgY2Vs
bEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0
eVN0cmluZyh2bSgpKSksIG5vdFRha2VuKTsKICAgICBqdW1wKHRha2VuLCBGb3JjZUp1bXApOwog
CiAgICAgbm90Q2VsbC5saW5rKCZtX2ppdCk7CkBAIC04MzA1LDcgKzgzMTAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ29uc3RhbnRTdG9yYWdlUG9pbnRlcihOb2RlKiBub2RlKQog
ewogICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAgIEdQUlJlZyBzdG9yYWdlR1BS
ID0gc3RvcmFnZS5ncHIoKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobm9kZS0+c3Rv
cmFnZVBvaW50ZXIoKSksIHN0b3JhZ2VHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0
YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50Ojpub25DZWxsUG9pbnRlcihtX2dyYXBo
LCBub2RlLT5zdG9yYWdlUG9pbnRlcigpKSwgc3RvcmFnZUdQUik7CiAgICAgc3RvcmFnZVJlc3Vs
dChzdG9yYWdlR1BSLCBub2RlKTsKIH0KIApAQCAtODM1OCw3ICs4MzYzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSogbm9kZSkK
ICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwo
CiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzdG9yYWdlUmVn
KSwKLSAgICAgICAgICAgICAgICB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc3RvcmFnZVJl
ZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcpKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc3RvcmFnZVJlZywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VSZWcpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSks
IHN0b3JhZ2VSZWcpOwogICAgICAgICBicmVhazsKQEAgLTg0NjksNyArODQ3NCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRGlyZWN0QXJndW1lbnRzKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZExhCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIGlzT3V0T2ZCb3VuZHMsIHRoaXMs
IG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAgICAgIGV4dHJhY3RSZXN1
bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9w
ZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAg
IH0KICAgICAKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtODU3NSw4
ICs4NTgwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEdsb2JhbFRoaXMoTm9k
ZSogbm9kZSkKIHsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICBtX2pp
dC5sb2FkUHRyKGdsb2JhbE9iamVjdC0+YWRkcmVzc09mR2xvYmFsVGhpcygpLCByZXN1bHRHUFIp
OworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCByZXN1bHRHUFIpOworICAgIG1faml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNHbG9iYWxPYmplY3Q6Om9mZnNldE9mR2xvYmFsVGhpcygp
KSwgcmVzdWx0R1BSKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKQEAg
LTg3MzgsNyArODc0Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlv
bkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0CiAgICAgZW1pdEFsbG9j
YXRlSlNPYmplY3RXaXRoS25vd25TaXplPENsYXNzVHlwZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93
UGF0aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZTY29wZUNoYWluKCkp
KTsKLSAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5n
cmFwaCgpLCBleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Z1
bmN0aW9uOjpvZmZzZXRPZkV4ZWN1dGFibGVPclJhcmVEYXRhKCkpKTsKKyAgICBtX2ppdC5sb2Fk
VW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFw
aCgpLCBleGVjdXRhYmxlKSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LnN0b3JlUHRyKHNjcmF0
Y2gxR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNl
dE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgp
KTsKIH0KIApAQCAtODgzMyw3ICs4ODM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNldEZ1bmN0aW9uTmFtZShOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG5hbWVWYWx1ZVJl
Z3MgPSBuYW1lVmFsdWUuanNWYWx1ZVJlZ3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRGdW5jdGlvbk5hbWUsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBmdW5jR1BSLCBuYW1lVmFsdWVSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGZ1bmNHUFIsIG5hbWVWYWx1ZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTg4NTAsNyArODg1Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYXJhcmdzTGVuZ3RoKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICB1bmxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogCi0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3Ms
IGRhdGEtPm9mZnNldCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGxvY2so
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwpAQCAtODg4Nyw3ICs4ODkzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUxvYWRWYXJhcmdzKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5z
dG9yZTMyKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBKSVRDb21waWxlcjo6cGF5bG9hZEZv
cihkYXRhLT5tYWNoaW5lQ291bnQpKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9h
ZFZhcmFyZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQu
b2Zmc2V0KCksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTG9hZFZhcmFyZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5t
YWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRhdG9yeU1pbmltdW0pOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTkwMTgsMTAgKzkw
MjQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2Rl
KiBub2RlKQogICAgIC8vIERvbid0IG5lZWQgYSBtZW1vcnkgYmFycmllcnMgc2luY2Ugd2UganVz
dCBmYXN0LWNyZWF0ZWQgdGhlIGFjdGl2YXRpb24sIHNvIHRoZQogICAgIC8vIGFjdGl2YXRpb24g
bXVzdCBiZSB5b3VuZy4KICAgICBtX2ppdC5zdG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSkpOwotICAgIG1faml0
LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLAot
ICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTTGV4aWNhbEVudmlyb25t
ZW50OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpKTsKLSAgICAgICAgCisgICAgbV9qaXQuc3RvcmVV
bmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5v
ZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNMZXhpY2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mU3ltYm9sVGFibGUoKSkpOworCiAgICAg
Ly8gTXVzdCBpbml0aWFsaXplIGFsbCBtZW1iZXJzIHRvIHVuZGVmaW5lZCBvciB0aGUgVERaIGVt
cHR5IHZhbHVlLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0YWJsZS0+c2NvcGVTaXpl
KCk7ICsraSkgewogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZSgKQEAgLTkxNDgsMTIg
KzkxNTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1l
bnRzKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
CiAgICAgICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3Zlcnkudmly
dHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIoCi0gICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCks
IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0g
ICAgICAgICAgICAgICAgc2NyYXRjaDFHUFIpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVy
eS5jb25zdGFudCgpLmFzQ2VsbCgpKSwgc2NyYXRjaDFHUFIpOwogICAgIH0gZWxzZQogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSksIHNjcmF0Y2gxR1BSKTsKIApAQCAtOTI1MSw3ICs5MjUxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAot
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAK
ICAgICAvLyBXZSBzZXQgdXAgdGhlIGFyZ3VtZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ugd2UgaGF2
ZSB0aGUgd2hvbGUgcmVnaXN0ZXIgZmlsZSBhbmQgd2UgY2FuCiAgICAgLy8gc2V0IHRoZW0gdXAg
ZGlyZWN0bHkgaW50byB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLiBUaGlzIGFsc28gbWVhbnMgdGhh
dCB3ZSBkb24ndCBoYXZlIHRvCkBAIC05MjY4LDExICs5MjY4LDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50KDIsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgZW1pdEdldEFyZ3VtZW50
U3RhcnQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudCgKICAgICAgICAgMSwgWyZdIChHUFJSZWcgZGVzdEdQUikgewotICAgICAgICAg
ICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QtPnNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgp
KSwKLSAgICAgICAgICAgICAgICBkZXN0R1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxp
bmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCks
IGdsb2JhbE9iamVjdC0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLCBkZXN0R1BSKTsKKyAg
ICAgICAgfSk7CisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKKyAgICAgICAgMCwgWyZdIChHUFJS
ZWcgZGVzdEdQUikgeworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGRlc3RHUFIpOwogICAgICAgICB9KTsK
LSAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBk
ZXN0R1BSKTsgfSk7CiAgICAgCiAgICAgYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVh
dGVTY29wZWRBcmd1bWVudHMsIHJlc3VsdEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKQEAgLTkyODYsNyArOTI4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVh
dGVDbG9uZWRBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVz
dWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKLSAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgCiAgICAgLy8gV2Ugc2V0IHVwIHRo
ZSBhcmd1bWVudHMgb3Vyc2VsdmVzLCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdob2xlIHJlZ2lzdGVy
IGZpbGUgYW5kIHdlIGNhbgogICAgIC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5IGludG8gdGhlIGFy
Z3VtZW50IHJlZ2lzdGVycy4KQEAgLTkyOTcsMTIgKzkyOTgsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIG1faml0
LnNldHVwQXJndW1lbnQoMiwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBlbWl0R2V0QXJndW1lbnRT
dGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7Ci0gICAgICAgICAg
ICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QtPmNsb25l
ZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKLSAgICAgICAgICAgICAgICBkZXN0R1BSKTsKKyAgICAg
ICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdC0+Y2xvbmVkQXJndW1lbnRzU3RydWN0
dXJlKCkpLCBkZXN0R1BSKTsKKyAgICAgICAgfSk7CisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgK
KyAgICAgICAgMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeworICAgICAgICAgICAgbV9qaXQubG9h
ZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3Jh
cGgoKSwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGRl
c3RHUFIpOwogICAgICAgICB9KTsKLSAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BS
UmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0R1BSKTsgfSk7CiAgICAgCiAgICAgYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb25DcmVhdGVDbG9uZWRBcmd1bWVudHMsIHJlc3VsdEdQUik7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTkzMTYsMTUgKzkzMTcsMTYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFyZ3VtZW50c0J1dHRlcmZseShOb2RlKiBub2RlKQog
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKIAotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLQogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJn
dW1lbnRzIG91cnNlbHZlcywgYmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxl
IGFuZCB3ZSBjYW4KICAgICAvLyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVu
dCByZWdpc3RlcnMuCiAKICAgICAvLyBBcmd1bWVudHM6IDA6SlNHbG9iYWxPYmplY3QqLCAxOnN0
YXJ0LCAzOmxlbmd0aAogICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZdIChHUFJSZWcgZGVz
dEdQUikgeyBlbWl0R2V0TGVuZ3RoKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0p
OwogICAgIG1faml0LnNldHVwQXJndW1lbnQoMSwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBlbWl0
R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGRlc3RHUFIpOyB9KTsKLSAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBkZXN0
R1BSKTsgfSk7CisgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKKyAgICAgICAgMCwgWyZdIChHUFJS
ZWcgZGVzdEdQUikgeworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGRlc3RHUFIpOworICAgICAgICB9KTsK
IAogICAgIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uQ3JlYXRlQXJndW1lbnRzQnV0dGVy
Zmx5LCByZXN1bHRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC05MzkzLDcg
KzkzOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUmVzdChOb2RlKiBu
b2RlKQogCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
cmVhdGVSZXN0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVu
dHNTdGFydEdQUiwgSW1tMzIobm9kZS0+bnVtYmVyT2ZBcmd1bWVudHNUb1NraXAoKSksIGFycmF5
TGVuZ3RoR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVJlc3QsIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1N0YXJ0R1BSLCBJ
bW0zMihub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpKSwgYXJyYXlMZW5ndGhHUFIpOwog
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CkBAIC05NDg3LDcgKzk0ODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
U3ByZWFkKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQpKTsKKyAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25T
cHJlYWRGYXN0QXJyYXksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZ3VtZW50KSk7CiAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIG1faml0
Lm11dGF0b3JGZW5jZSh2bSgpKTsKQEAgLTk0OTcsNyArOTQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSogbm9kZSkKIAogICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCk7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQpAQCAtOTUwNiw3ICs5NTA4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBub2RlKQogCiAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TcHJlYWRHZW5lcmljLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3ByZWFkR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnQpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgfQpAQCAt
OTY0Myw3ICs5NjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0FycmF5KE5v
ZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAogICAgIGNh
bGxPcGVyYXRpb24oCi0gICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIG1faml0LmdyYXBo
KCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKKyAgICAgICAg
b3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLAogICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4o
YnVmZmVyKSwgc2l6ZV90KG5vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCkBAIC05ODAyLDcgKzk4MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKE5vZGUqIG5vZGUpCiAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNwcmVhZFNsb3csIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0
KSwgYnVmZmVyLCBub2RlLT5udW1DaGlsZHJlbigpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNwcmVhZFNsb3csIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgYnVmZmVyLCBub2RlLT5udW1DaGls
ZHJlbigpKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwpAQCAtOTk4Miw3ICs5OTg0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFycmF5U2xpY2UoTm9kZSogbm9kZSkKICAgICAgICAgfQogCiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlh
YmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAotICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIHRlbXBWYWx1
ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOworICAgICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIHRlbXBWYWx1ZSwgc2l6ZUdQ
Uiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgIH0KIAogICAgIEdQUlRlbXBvcmFyeSB0ZW1wNCh0
aGlzKTsKQEAgLTEwMjAxLDcgKzEwMjAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFycmF5SW5kZXhPZihOb2RlKiBub2RlKQogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAK
LSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUluZGV4T2ZTdHJpbmcsIGxlbmd0
aEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1l
bnRHUFIsIGluZGV4R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUlu
ZGV4T2ZTdHJpbmcsIGxlbmd0aEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0
b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRHUFIsIGluZGV4R1BSKTsKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChsZW5ndGhHUFIsIG5v
ZGUpOwpAQCAtMTAyMTYsMTEgKzEwMjE4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcnJheUluZGV4T2YoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBB
cnJheTo6RG91YmxlOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BcnJheUlu
ZGV4T2ZWYWx1ZURvdWJsZSwgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
c3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVEb3VibGUsIGxlbmd0aEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRS
ZWdzLCBpbmRleEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBcnJheTo6
SW50MzI6CiAgICAgICAgIGNhc2UgQXJyYXk6OkNvbnRpZ3VvdXM6Ci0gICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlSW50MzJPckNvbnRpZ3VvdXMsIGxl
bmd0aEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVs
ZW1lbnRSZWdzLCBpbmRleEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkFycmF5SW5kZXhPZlZhbHVlSW50MzJPckNvbnRpZ3VvdXMsIGxlbmd0aEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHN0b3JhZ2VHUFIsIHNlYXJjaEVsZW1lbnRSZWdzLCBpbmRl
eEdQUik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDI4OSw3ICsxMDI5MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIG1faml0LmJveEludDMyKHN0b3JhZ2VMZW5ndGhHUFIsIHJlc3VsdFJlZ3MpOwogCiAgICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKLSAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgYmFzZUdQUikpOworICAgICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBiYXNlR1BS
KSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMDMzNSw3ICsxMDMzNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9kZSkKIAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBmYXN0UGF0aCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+
KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkpKTsKIAotICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1
c2hNdWx0aXBsZSwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VH
UFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0
aW9uQXJyYXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7
CiAKICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgc3RvcmFnZS51c2UoKTsKQEAgLTEwMzYw
LDcgKzEwMzYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2Rl
KiBub2RlKQogICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxlbmd0aEdQUiwgcmVz
dWx0UmVncyk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91
YmxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVGUFIsIGJh
c2VHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbkFycmF5UHVzaERvdWJsZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHZhbHVlRlBSLCBiYXNlR1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDQwNCw3ICsx
MDQwNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVB1c2goTm9kZSogbm9k
ZSkKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYXN0UGF0aCA9IG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0cihz
dGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkp
KTsKIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVt
cCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZSwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZElt
bTMyKGVsZW1lbnRDb3VudCkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlTXVsdGlw
bGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBi
dWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CiAKICAgICAgICAgYmFzZS51
c2UoKTsKICAgICAgICAgc3RvcmFnZS51c2UoKTsKQEAgLTEwNDM3LDcgKzEwNDM5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICAg
ICAgbV9qaXQuYm94SW50MzIoc3RvcmFnZUxlbmd0aEdQUiwgcmVzdWx0UmVncyk7CiAKICAgICAg
ICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2Fs
bChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAg
ICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGJhc2VHUFIp
KTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwNDgxLDcgKzEwNDgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBmYXN0UGF0aCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IGJ1ZmZlckdQUiwgVHJ1c3RlZEltbVB0cihzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNj
cmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIoKSkpKTsKIAogICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJh
dGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkpOwor
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJy
YXlQdXNoTXVsdGlwbGUsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSLCBidWZmZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CiAKICAg
ICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgc3RvcmFnZS51c2UoKTsKQEAgLTEwNTM2LDggKzEw
NTM4LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlzT2JqZWN0KE5vZGUqIG5vZGUp
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2ZJc09iamVjdChOb2RlKiBub2Rl
KQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgIAogICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAtMTA1NjksNyArMTA1NjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mSXNPYmplY3QoTm9kZSogbm9kZSkK
ICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgc2xvd1BhdGhDYWxsKAot
ICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblR5cGVPZklzT2JqZWN0LCByZXN1
bHRHUFIsIGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25UeXBlT2ZJc09iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAg
ICAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEwNTc5LDggKzEwNTc5LDYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZklzT2JqZWN0KE5vZGUqIG5vZGUpCiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NhbGxhYmxlKE5vZGUqIG5vZGUsIFNfSklUT3BlcmF0
aW9uX0dDIHNsb3dQYXRoT3BlcmF0aW9uKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwotICAgIAogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAg
IApAQCAtMTA2MDYsNyArMTA2MDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXND
YWxsYWJsZShOb2RlKiBub2RlLCBTX0pJVE9wZXJhdGlvbl9HQyBzbG93UGF0aE9wZQogICAgIAog
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAg
ICAgICBzbG93UGF0aCwgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgZ2xvYmFs
T2JqZWN0LAorICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAg
ICAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRHUFIoKSkpOwogICAgIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwpAQCAtMTA2MjIsMTQgKzEwNjIwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJc0NvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQg
cmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbklzQ29uc3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Jc0NvbnN0cnVjdG9yLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBpbnB1dFJlZ3MpOwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKiBub2Rl
KQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgIAogICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1
ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAtMTA2NDEsNyArMTA2MzcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHlwZU9mKE5vZGUqIG5vZGUpCiAgICAgbV9q
aXQuZW1pdFR5cGVPZigKICAgICAgICAgdmFsdWVSZWdzLCByZXN1bHRHUFIsCiAgICAgICAgIFsm
XSAoVHlwZW9mVHlwZSB0eXBlLCBib29sIGZhbGxzVGhyb3VnaCkgewotICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCB2bSgpLnNt
YWxsU3RyaW5ncy50eXBlU3RyaW5nKHR5cGUpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIHZtKCkuc21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1bHRH
UFIpOwogICAgICAgICAgICAgaWYgKCFmYWxsc1Rocm91Z2gpCiAgICAgICAgICAgICAgICAgZG9u
ZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfSwKQEAgLTEwNjUyLDcgKzEwNjQ4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKiBub2RlKQogCiAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25UeXBlT2ZPYmplY3QsIHJlc3VsdEdQUiwgZ2xvYmFs
T2JqZWN0LAorICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvblR5cGVPZk9iamVj
dCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgp
LCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwK
ICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAgICBjZWxsUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC0xMDcwMSw3ICsxMDY5Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDaGVja0lzQ29uc3RhbnQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpIHsKICAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2Vs
bC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSk7Cisg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkQ29uc3RhbnRWYWx1ZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwoY2VsbC5ncHIoKSksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5icmFuY2hVbmxp
bmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgY2VsbC5ncHIoKSwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgp
KSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVCghbm9kZS0+Y29uc3RhbnQoKS0+dmFs
dWUoKS5pc0NlbGwoKSB8fCAhbm9kZS0+Y29uc3RhbnQoKS0+dmFsdWUoKSk7CiAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtMTA5NzIsMTMg
KzEwOTY4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDYWxsRE9NKE5vZGUqIG5v
ZGUpCiAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBzaWduYXR1cmUt
PmFyZ3VtZW50Q291bnQgKyAxOwogICAgIHN3aXRjaCAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2Fz
dDxKX0pJVE9wZXJhdGlvbl9HUD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3Vs
dFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUD4oZnVuY3Rpb24u
Z2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgcmVnc1swXSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUD4oZnVuY3Rp
b24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgcmVnc1swXSwgcmVnc1sxXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ocmVpbnRl
cnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUFA+KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFjdFJl
c3VsdChyZXN1bHRSZWdzKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ3NbMF0s
IHJlZ3NbMV0pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24ocmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9HUFBQPihmdW5jdGlvbi5nZXQo
KSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCByZWdzWzBdLCByZWdzWzFdLCByZWdzWzJdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWlu
dGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUFA+KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFj
dFJlc3VsdChyZXN1bHRSZWdzKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ3Nb
MF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTEwMDIsOSArMTA5OTgsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2FsbERPTUdldHRlcihOb2RlKiBub2RlKQog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIGlmIChPcHRpb25zOjp1c2VKSVRD
YWdlKCkpCi0gICAgICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9H
SklQPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIGlkZW50aWZpZXJVSUQobm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRp
Zmllck51bWJlciksIGdldHRlci5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKSVA+KEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmll
clVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyKSwgZ2V0dGVy
LmV4ZWN1dGFibGVBZGRyZXNzKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSkk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllclVJRChub2Rl
LT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50czxKX0pJVE9wZXJhdGlvbl9HSkk+KEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmll
clVJRChub2RlLT5jYWxsRE9NR2V0dGVyRGF0YSgpLT5pZGVudGlmaWVyTnVtYmVyKSk7CiAKICAg
ICAgICAgbV9qaXQuc3RvcmVQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsICZ2bSgpLnRv
cENhbGxGcmFtZSk7CiAgICAgICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4obV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKTsKQEAgLTExMTQ1LDEwICsxMTE0MSwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3Ry
aW5nVmFsdWVPZihOb2RlKgogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCiAgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3Ax
UmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvU3RyaW5nLCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29uc3Ry
dWN0b3IpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29u
c3RydWN0b3IsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3Mp
OworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3RydWN0
b3IsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwog
ICAgICAgICB9CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTExMTc1LDEyICsxMTE3MSwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3Ry
aW5nVmFsdWVPZihOb2RlKgogICAgICAgICAgICAgc2xvd1BhdGgyLmxpbmsoJm1faml0KTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBUb1N0cmluZykKLSAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
b3AxUmVncyk7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPm9wKCkgPT0gU3RyaW5nVmFsdWVPZikK
LSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1ZhbHVlT2YsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIEFTU0VSVChub2RlLT5vcCgpID09IENhbGxTdHJpbmdDb25zdHJ1Y3Rvcik7Ci0gICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIH0KICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAg
LTExMjUxLDEwICsxMTI0NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJp
bmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9yU3RyaW5nVmFsdWVPZihOb2RlKgogICAgICAgICAg
ICAgbmVlZENhbGwubGluaygmbV9qaXQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5v
cCgpID09IFRvU3RyaW5nKQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0
cmluZ09uQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxR1BS
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMUdQUik7CiAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yT25DZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cDFHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5nQ29u
c3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMUdQUik7CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgaWYgKGRvbmUuaXNTZXQoKSkKQEAgLTExMzA3LDcgKzExMzAzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUZ1bmN0aW9uVG9TdHJpbmcoTm9kZSogbm9kZSkKICAgICBjb250
aW51YXRpb24ubGluaygmbV9qaXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNo
VGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVzdWx0LmdwcigpKSk7CiAKLSAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25G
dW5jdGlvblRvU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBmdW5jdGlvbi5ncHIoKSkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkZ1bmN0aW9uVG9TdHJpbmcsIHJlc3VsdC5ncHIo
KSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmN0aW9uLmdwcigpKSk7CiAKICAg
ICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiB9CkBAIC0xMTMyMSw3ICsxMTMxNyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4Q29uc3RhbnQoTm9kZSogbm9kZSwgaW50CiB7CiAgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBb
Jl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnKSB7CiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgVHJ1c3Rl
ZEltbTMyKHJhZGl4KSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMy
KHJhZGl4KSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICB9OwpAQCAtMTEzNjYsNyArMTEzNjIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoTm9kZSog
bm9kZSkKIAogICAgIGF1dG8gY2FsbFRvU3RyaW5nID0gWyZdIChhdXRvIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdEdQUiwgYXV0byB2YWx1ZVJlZywgR1BSUmVnIHJhZGl4R1BSKSB7CiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgcmFkaXhHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWcsIHJhZGl4R1BSKTsKICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAg
IH07CkBAIC0xMTQ2NCw3ICsxMTQ2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdTeW1ib2woTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5
bWJvbFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgc3RyaW5nR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdT
eW1ib2xXaXRoU3RyaW5nRGVzY3JpcHRpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0cmluZ0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTE0NzUsNyArMTE0NzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3lt
Ym9sKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAg
LTExNTk4LDcgKzExNTk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE5ld1R5cGVkQXJy
YXlXaXRoU2l6ZUluUmVnaXN0ZXIoTm9kZSogbm9kZSwgVHlwZWRBcnJheVQKICAgICAKICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCiAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlZEFycmF5VHlwZSks
Ci0gICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVy
ZSwgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOworICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHJ1Y3R1cmUsIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIAog
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTExNjIzLDEzICsxMTYxOSwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3UmVnZXhwKE5vZGUqIG5vZGUpCiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0PFJlZ0V4cE9iamVjdD4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIGJ1dHRlcmZseSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCk7CiAK
LSAgICBtX2ppdC5zdG9yZVB0cigKLSAgICAgICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3Bl
cmFuZCgpKSwKLSAgICAgICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgUmVnRXhw
T2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFuZEZsYWdzKCkpKTsKKyAgICBtX2ppdC5zdG9yZVVubGlu
a2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+
Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
UmVnRXhwT2JqZWN0OjpvZmZzZXRPZlJlZ0V4cEFuZEZsYWdzKCkpKTsKICAgICBtX2ppdC5zdG9y
ZVZhbHVlKGxhc3RJbmRleFJlZ3MsIENDYWxsSGVscGVyczo6QWRkcmVzcyhyZXN1bHRHUFIsIFJl
Z0V4cE9iamVjdDo6b2Zmc2V0T2ZMYXN0SW5kZXgoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5j
ZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0
aCwgdGhpcywgb3BlcmF0aW9uTmV3UmVnZXhwV2l0aExhc3RJbmRleCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnZXhwLCBsYXN0SW5kZXhSZWdzKSk7CisgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25O
ZXdSZWdleHBXaXRoTGFzdEluZGV4LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCByZWdleHAsIGxhc3RJbmRleFJlZ3MpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKIH0KQEAgLTEyNTU1LDcgKzEyNTQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFN3aXRjaENoYXJTdHJpbmdKdW1wKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEs
IEdQUlIKIHsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
LCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaCk7CiAgICAgYXV0byBpc1JvcGUg
PSBtX2ppdC5icmFuY2hJZlJvcGVTdHJpbmdJbXBsKHNjcmF0Y2gpOwotICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChpc1JvcGUsIHRoaXMsIG9wZXJhdGlvblJlc29sdmVSb3Bl
LCBzY3JhdGNoLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWUpKTsKKyAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25SZXNv
bHZlUm9wZSwgc2NyYXRjaCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlKSk7
CiAgICAgCiAgICAgYWRkQnJhbmNoKAogICAgICAgICBtX2ppdC5icmFuY2gzMigKQEAgLTEyNzk3
LDcgKzEyNzkxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uU3Ry
aW5nKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEsIEdQUlIKIAogICAgIGlmICghY2FuRG9C
aW5hcnlTd2l0Y2ggfHwgdG90YWxMZW5ndGggPiBPcHRpb25zOjptYXhpbXVtQmluYXJ5U3RyaW5n
U3dpdGNoVG90YWxMZW5ndGgoKSkgewogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0Y2hUYWJsZUlu
ZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmluZyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpLCAmdW5saW5rZWRU
YWJsZSwgc3RyaW5nKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
bV9qaXQuZmFySnVtcChzdHJpbmcsIEpTU3dpdGNoUHRyVGFnKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTI4MzQsNyArMTI4MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3Ry
aW5nT25TdHJpbmcoTm9kZSogbm9kZSwgU3dpdGNoRGF0YSogZGF0YSwgR1BSUgogICAgIAogICAg
IHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3Ry
aW5nKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5zd2l0
Y2hUYWJsZUluZGV4KSwgJnVubGlua2VkVGFibGUsIHN0cmluZyk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YS0+c3dpdGNoVGFibGVJbmRleCksICZ1bmxp
bmtlZFRhYmxlLCBzdHJpbmcpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1faml0LmZhckp1bXAoc3RyaW5nLCBKU1N3aXRj
aFB0clRhZyk7CkBAIC0xMjk4MSw3ICsxMjk3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRBY2Nlc3NvckJ5SWQoTm9kZSogbm9kZSkKICAgICBHUFJSZWcgYWNjZXNzb3JHUFIg
PSBhY2Nlc3Nvci5ncHIoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJh
dGlvbihub2RlLT5vcCgpID09IFB1dEdldHRlckJ5SWQgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeUlk
IDogb3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSwgbm9kZS0+YWNj
ZXNzb3JBdHRyaWJ1dGVzKCksIGFjY2Vzc29yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG5vZGUt
Pm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9wZXJhdGlvblB1dEdldHRlckJ5SWQgOiBvcGVyYXRp
b25QdXRTZXR0ZXJCeUlkLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwg
aWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0
dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEyOTk5LDcgKzEyOTkzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEdldHRlclNldHRlckJ5SWQoTm9kZSogbm9kZSkKICAgICBHUFJS
ZWcgc2V0dGVyR1BSID0gc2V0dGVyLmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJl
cigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRlckdQUiwgc2V0dGVyR1BSKTsK
KyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmll
ck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRlckdQUiwgc2V0dGVy
R1BSKTsKICNlbHNlCiAgICAgLy8gVGhlc2UgSlNWYWx1ZXMgbWF5IGJlIEpTVW5kZWZpbmVkIE9S
IEpTRnVuY3Rpb24qLgogICAgIC8vIEF0IHRoYXQgdGltZSwKQEAgLTEzMDExLDcgKzEzMDA1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEdldHRlclNldHRlckJ5SWQoTm9kZSog
bm9kZSkKICAgICBKU1ZhbHVlUmVncyBzZXR0ZXJSZWdzID0gc2V0dGVyLmpzVmFsdWVSZWdzKCk7
CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0
R2V0dGVyU2V0dGVyLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5hY2Nlc3NvckF0dHJpYnV0
ZXMoKSwgZ2V0dGVyUmVncy5wYXlsb2FkR1BSKCksIHNldHRlclJlZ3MucGF5bG9hZEdQUigpKTsK
KyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmll
ck51bWJlcigpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRlclJlZ3MucGF5bG9h
ZEdQUigpLCBzZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCkBAIC0xMzAyNSw3ICsxMzAxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGUoTm9kZSogbm9kZSkKICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2
ZVNjb3BlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwg
aWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc2NvcGVHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJl
cigpKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CkBAIC0xMzAzNyw3ICsxMzAzMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKE5vZGUqIG5v
ZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJl
Z3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5n
RnVuY0RlY2xJbkV2YWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBz
Y29wZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2
YWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwg
aWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBA
IC0xMzA2NSw3ICsxMzA1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXREeW5h
bWljVmFyKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVn
c0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldER5bmFt
aWNWYXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29wZUdQUiwg
aWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpLCBub2RlLT5nZXRQdXRJbmZv
KCkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0RHluYW1pY1ZhciwgcmVzdWx0UmVn
cywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBpZGVudGlmaWVyVUlE
KG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUp
OwogfQpAQCAtMTMwNzksNyArMTMwNzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0RHluYW1pY1ZhcihOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZh
bHVlLmpzVmFsdWVSZWdzKCk7CiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVy
YXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1Zh
clN0cmljdCA6IG9wZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CisgICAgY2FsbE9wZXJhdGlv
bihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXREeW5hbWljVmFyU3Ry
aWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHNjb3BlR1BSLCB2YWx1ZVJlZ3MsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMTMxNDUsNyArMTMxMzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QWNjZXNzb3JCeVZhbChOb2RlKiBub2Rl
KQogICAgIEdQUlJlZyBhY2Nlc3NvckdQUiA9IGFjY2Vzc29yLmdwcigpOwogCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIHN1YnNjcmlwdFJlZ3MsIG5vZGUtPmFjY2Vzc29yQXR0cmli
dXRlcygpLCBhY2Nlc3NvckdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBzdWJzY3JpcHRSZWdzLCBub2RlLT5h
Y2Nlc3NvckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEzMzIyLDcgKzEzMzE2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1JlcGxhY2UoTm9kZSogbm9kZSkKIAogICAg
ICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyLCByZXN1bHQuZ3By
KCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUik7Cisg
ICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBs
YWNlUmVnRXhwRW1wdHlTdHIsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIHN0cmluZ0dQUiwgcmVnRXhwR1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKICAgICAgICAgICAgICAgICBpZiAoc2FtcGxlKQpAQCAtMTMzNDMsNyArMTMzMzcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nUmVwbGFjZShOb2RlKiBub2RlKQog
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0
IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90
b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUiwgcmVwbGFjZUdQUik7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZywg
cmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBy
ZWdFeHBHUFIsIHJlcGxhY2VHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGlmIChzYW1w
bGUpCkBAIC0xMzM2NSw3ICsxMzM1OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dHJpbmdSZXBsYWNlKE5vZGUqIG5vZGUpCiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VHZW5lcmljLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdSZWdzLCBzZWFyY2hSZWdzLCByZXBsYWNlUmVncyk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJp
YywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nUmVn
cywgc2VhcmNoUmVncywgcmVwbGFjZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgIGlmIChzYW1wbGUpCkBA
IC0xMzM4Niw3ICsxMzM4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdFeHBF
eGVjTm9uR2xvYmFsT3JTdGlja3koTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICBvcGVyYXRp
b25SZWdFeHBFeGVjTm9uR2xvYmFsT3JTdGlja3ksIHJlc3VsdFJlZ3MsCi0gICAgICAgIGdsb2Jh
bE9iamVjdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwgYXJndW1lbnRH
UFIpOworICAgICAgICBnbG9iYWxPYmplY3RHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIGFyZ3VtZW50R1BSKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKQEAgLTEzNDA2LDcgKzEzNDAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlZ0V4cE1hdGNoRmFzdEdsb2JhbChOb2RlKiBub2RlKQogICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAg
IG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFzdEdsb2JhbFN0cmluZywgcmVzdWx0UmVncywKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0R1BSLCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLCBh
cmd1bWVudEdQUik7CisgICAgICAgIGdsb2JhbE9iamVjdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgYXJndW1l
bnRHUFIpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtMTM1OTAsNyArMTM1ODQsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVz
ZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmli
dXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3Bl
cnR5U3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVy
dHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNjA3LDcgKzEzNjAxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBub2Rl
KQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmlu
Z0lkZW50LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIHZh
bHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCBpZGVudEdQUiwgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM2
MTksNyArMTM2MTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lRGF0YVBy
b3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5l
RGF0YVByb3BlcnR5U3ltYm9sLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwg
cHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3ltYm9sLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlUmVncywgYXR0cmlidXRl
c0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEzNjMwLDcgKzEzNjI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2Rl
KTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHksIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYXR0cmli
dXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTEzNjcxLDcgKzEzNjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZURlZmluZUFjY2Vzc29yUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRy
ZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BS
LCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVB
Y2Nlc3NvclByb3BlcnR5U3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMTM2ODgsNyArMTM2ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5l
QWNjZXNzb3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsK
IAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGJhc2VHUFIsIGlkZW50R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmli
dXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eVN0cmluZ0lkZW50LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UiwgaWRlbnRHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM3
MDAsNyArMTM2OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNz
b3JQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRl
ZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
eW1ib2wsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eUdQ
UiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzcxMSw3ICsxMzcw
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5
KE5vZGUqIG5vZGUpCiAgICAgICAgIHVzZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNz
b3JQcm9wZXJ0eSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5
UmVncywgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHksIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3MsIGdldHRlckdQUiwgc2V0dGVy
R1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM4NDMsNyArMTM4MzcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlR2V0TWFwQnVja2V0TmV4dChOb2RlKiBub2RlKQogICAgICAgICBBU1NF
UlQobm9kZS0+YnVja2V0T3duZXJUeXBlKCkgPT0gQnVja2V0T3duZXJUeXBlOjpTZXQpOwogICAg
ICAgICBzZW50aW5lbCA9IHZtKCkuc2VudGluZWxTZXRCdWNrZXQoKTsKICAgICB9Ci0gICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBzZW50aW5l
bCksIHJlc3VsdEdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgc2VudGluZWwpLCByZXN1bHRHUFIp
OwogICAgIGRvbmUubGluaygmbV9qaXQpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwpAQCAtMTM5MDUsNyArMTM4OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VGhyb3coTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3Mo
KTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhy
b3dERkcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVGhyb3dERkcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgbV9qaXQuYnJl
YWtwb2ludCgpOwogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTM5MTcsNyArMTM5MTEsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVGhyb3dTdGF0aWNFcnJvcihOb2RlKiBub2RlKQog
ICAgIEdQUlJlZyBtZXNzYWdlR1BSID0gbWVzc2FnZS5ncHIoKTsKICAgICBzcGVjdWxhdGVTdHJp
bmcobm9kZS0+Y2hpbGQxKCksIG1lc3NhZ2VHUFIpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YXRpY0Vycm9yLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbWVzc2FnZUdQUiwgbm9kZS0+ZXJyb3JUeXBlKCkpOworICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvciwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG1lc3NhZ2VHUFIsIG5vZGUtPmVycm9yVHlwZSgpKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgIG1faml0LmJyZWFrcG9pbnQoKTsKICAgICBub1Jlc3VsdChub2Rl
KTsKQEAgLTE0MDA3LDcgKzE0MDAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUVu
dW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBtb2Rl
R1BSLCBlbnVtZXJhdG9yR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0
b3JOZXh0VXBkYXRlSW5kZXhBbmRNb2RlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSLCBlbnVtZXJhdG9yR1BSKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVn
cywgbm9kZSk7CiB9CkBAIC0xNDA4MCwxMiArMTQwNzQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGRvbmVDYXNlcy5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBvdXRPZkJv
dW5kcy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgdm0oKS5zbWFsbFN0cmluZ3Muc2VudGluZWxTdHJpbmcoKSksIHJl
c3VsdEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHZtKCkuc21hbGxTdHJpbmdzLnNlbnRpbmVsU3Ry
aW5nKCkpLCByZXN1bHRHUFIpOwogICAgICAgICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CiAgICAgICAgIG9wZXJhdGlvbkNhbGwubGluaygmbV9qaXQpOwogICAgIH0KIAotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRW51bWVyYXRvck5leHRVcGRhdGVQcm9wZXJ0eU5hbWUsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGluZGV4LCBtb2RlLCBlbnVtZXJh
dG9yKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlUHJv
cGVydHlOYW1lLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbmRl
eCwgbW9kZSwgZW51bWVyYXRvcik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAg
IGRvbmVDYXNlcy5saW5rKCZtX2ppdCk7CkBAIC0xNDEyOSw5ICsxNDEyMyw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9ySGFzUHJvcGVydHkoTm9kZSogbm9kZSwgU2xv
d1BhdGhGdW5jdGlvblR5CiAgICAgICAgIG9wZXJhdGlvbkNhc2VzLmxpbmsoJm1faml0KTsKIAog
ICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxv
YWRHUFIoKSksIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBh
eWxvYWRHUFIoKSksIHByb3BlcnR5TmFtZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzbG93UGF0aEZ1bmN0aW9uLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHByb3BlcnR5TmFt
ZVJlZ3MsIGluZGV4R1BSLCBtb2RlR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xv
d1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWdzLCBwcm9wZXJ0eU5hbWVSZWdzLCBpbmRleEdQUiwgbW9kZUdQUik7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBA
IC0xNDI0NSw3ICsxNDIzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeUlk
V2l0aFRoaXMoTm9kZSogbm9kZSkKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgY2FsbE9w
ZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeUlkV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMsCi0gICAgICAgIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+
Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgdGhpc1JlZ3MsIHZhbHVlUmVncywgbm9kZS0+Y2Fj
aGVhYmxlSWRlbnRpZmllcigpLnJhd0JpdHMoKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMTQzMjYsNyArMTQzMjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvcGVydHlFbnVtZXJhdG9yKE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsT3JPdGhlclVzZSkg
ewogICAgICAgICAgICAgYXV0byBub3RPdGhlciA9IG1faml0LmJyYW5jaElmTm90T3RoZXIoYmFz
ZVJlZ3MsIHNjcmF0Y2gxR1BSKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgdm0oKS5lbXB0eVByb3BlcnR5TmFtZUVudW1lcmF0b3Io
KSksIHNjcmF0Y2gxR1BSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHZtKCkuZW1wdHlQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yKCkpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgICAgICBkb25lQ2FzZXMu
YXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBub3RPdGhlci5saW5rKCZtX2ppdCk7
CiAgICAgICAgIH0KQEAgLTE0Mzg0LDcgKzE0Mzc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogCiAgICAgICAgIHNsb3dD
YXNlcy5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0
Y2gxR1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1l
cmF0b3JDZWxsLCBzY3JhdGNoMUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VS
ZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJv
cGVydHlFbnVtZXJhdG9yQ2VsbCwgc2NyYXRjaDFHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBiYXNlUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTE0Mzk5LDcg
KzE0MzkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVy
YXRvcihOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvciwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTQ0ODgs
OSArMTQ0ODIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyQ2F0KE5vZGUqIG5v
ZGUpCiAKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgaWYgKG5v
ZGUtPmNoaWxkMygpKQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDMsIHJl
c3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3Ms
IG9wM1JlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0ckNhdDMsIHJlc3Vs
dC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MsIG9wMlJlZ3Ms
IG9wM1JlZ3MpOwogICAgIGVsc2UKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJD
YXQyLCByZXN1bHQuZ3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBv
cDJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQyLCByZXN1bHQu
Z3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsK
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUpOwpAQCAtMTQ1NjAsNyArMTQ1NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAgIGJpZ0xlbmd0aC5saW5rKCZt
X2ppdCk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwog
ICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJy
YXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RydWN0
dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0cik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNDU4OCw3ICsx
NDU4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUq
IG5vZGUpCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBjYWxs
T3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1
bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2Rl
LT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7CisgICAgICAgICAgICByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVy
U3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShu
b2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpA
QCAtMTQ2MjMsNyArMTQ2MTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlz
KE5vZGUqIG5vZGUpCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0Owog
ICAgIGVsc2UKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24sIHRl
bXBSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOworICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIGZ1bmN0
aW9uLCB0ZW1wUmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRoaXNWYWx1ZVJl
Z3MpKTsKIAogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUpOwogfQpAQCAtMTQ2NzMs
NyArMTQ2NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2Jq
ZWN0R2V0T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXMsIHRoaXMs
IG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHRHUFIsICZ2bSgpLCBhcnJheVN0cnVjdHVy
ZSwgc2NyYXRjaDNHUFIpKTsKIAotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3Bl
cmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFt
ZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQ
UikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5
c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmplY3QsIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUikpOwogCiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTE0Njg4LDcgKzE0NjgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVj
dEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMp
OwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNP
YmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVjdEtleXNP
YmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0LCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKQEAgLTE0NzAzLDcgKzE0Njk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0
KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9iamVj
dEtleXMgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RLZXlzIDogb3Bl
cmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3MzAs
NyArMTQ3MjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0QXNzaWduKE5v
ZGUqIG5vZGUpCiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDIoKSwgc291cmNl
R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk9iamVjdEFzc2lnbk9iamVjdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IHRhcmdldEdQUiwgc291cmNlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25P
YmplY3RBc3NpZ25PYmplY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB0YXJnZXRH
UFIsIHNvdXJjZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDc0Myw3ICsxNDczNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJl
Z3Mgc291cmNlUmVncyA9IHNvdXJjZS5qc1ZhbHVlUmVncygpOwogCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWduVW50
eXBlZCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlUmVncyk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWduVW50eXBlZCwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlUmVncyk7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBA
IC0xNDc2OCw3ICsxNDc2Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RD
cmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENy
ZWF0ZU9iamVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgcHJvdG90
eXBlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGVPYmpl
Y3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZUdQ
Uik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3ODMsNyArMTQ3NzcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHByb3RvdHlwZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
cHJvdG90eXBlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ4MzUsMTQgKzE0ODI5LDE0IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqIG5vZGUpCiAgICAg
bV9qaXQuZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdEdQUiwgaW5saW5lQ2FwYWNp
dHlHUFIpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlVGhp
cywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2FsbGVlR1BSLCBub2Rl
LT5pbmxpbmVDYXBhY2l0eSgpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjYWxsZWVHUFIsIG5vZGUtPmlubGluZUNhcGFjaXR5
KCkpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKIHsKLSAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBjYWxsZWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CkBAIC0xNDg2MCw3ICsxNDg1NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJhcmVE
YXRhR1BSID0gc3RydWN0dXJlR1BSOwogCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1f
aml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+aXNJbnRlcm5hbFByb21pc2UoKSA/
IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlU3RydWN0dXJlKCkgOiBnbG9iYWxPYmplY3Qt
PnByb21pc2VTdHJ1Y3R1cmUoKSkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgIGF1dG8gZmFzdFByb21p
c2VQYXRoID0gbV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWwsIGNhbGxlZUdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbm9kZS0+aXNJbnRlcm5h
bFByb21pc2UoKSA/IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoKSA6
IGdsb2JhbE9iamVjdC0+cHJvbWlzZUNvbnN0cnVjdG9yKCkpKTsKKyAgICBhdXRvIGZhc3RQcm9t
aXNlUGF0aCA9IG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJzOjpFcXVh
bCwgY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgp
LCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gZ2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3RvcigpIDogZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSkpOwog
CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIApAQCAtMTQ4NzIsNyAr
MTQ4NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2Rl
KiBub2RlKQogICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJl
R1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2RlLT5p
c0ludGVybmFsUHJvbWlzZSgpID8gSlNJbnRlcm5hbFByb21pc2U6OmluZm8oKSA6IEpTUHJvbWlz
ZTo6aW5mbygpKSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOwot
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
Z2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0
YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGdsb2JhbE9i
amVjdCksIHNjcmF0Y2gxR1BSKTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0
cihDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkpKTsKIAog
ICAgIGZhc3RQcm9taXNlUGF0aC5saW5rKCZtX2ppdCk7CkBAIC0xNDg4NSw3ICsxNDg3OSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAg
ICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZklu
dGVybmFsRmllbGQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0
aW9uc09yUmVzdWx0KSkpKTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UobV9qaXQudm0oKSk7CiAK
LSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBu
b2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNl
IDogb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVHUFIpKTsKKyAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5p
c0ludGVybmFsUHJvbWlzZSgpID8gb3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNlIDogb3Bl
cmF0aW9uQ3JlYXRlUHJvbWlzZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVHUFIpKTsKIAogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0ODk0LDcgKzE0ODg4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKIHRlbXBs
YXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlvbj4KIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0KE5vZGUqIG5vZGUsIE9wZXJh
dGlvbiBvcGVyYXRpb24pCiB7Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2FsbGVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMTQ5MjEs
NyArMTQ5MTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxG
aWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3BlcgogICAgIG1faml0LmVtaXROb25O
dWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1Y3R1cmVHUFIpOwogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0NsYXNzOjppbmZvKCkpLCBzY3JhdGNoMUdQUik7CiAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpOb3RFcXVh
bCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVj
dHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBzY3JhdGNoMUdQUik7
CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNj
cmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVk
SW1tUHRyKG51bGxwdHIpOwpAQCAtMTQ5MzIsNyArMTQ5MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRp
b24gb3BlcgogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShpbml0aWFsVmFsdWVzW2lu
ZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZpZWxkT2Jq
ZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAgICAgbV9qaXQubXV0
YXRvckZlbmNlKG1faml0LnZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGNhbGxlZUdQUikp
OworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2pp
dC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBjYWxsZWVHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1MDU2LDcgKzE1MDUwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiAgICAgYWxyZWFkeVByaW1p
dGl2ZS5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3Ms
IHJlc3VsdFJlZ3MpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5v
dFByaW1pdGl2ZSwgdGhpcywgb3BlcmF0aW9uVG9QcmltaXRpdmUsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlzLCBvcGVyYXRpb25Ub1ByaW1p
dGl2ZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50
UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0
SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CkBAIC0xNTA4MCw3ICsxNTA3NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Byb3BlcnR5S2V5KE5vZGUqIG5vZGUp
CiAgICAgYWxyZWFkeVByb3BlcnR5S2V5LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFs
dWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uVG9Qcm9wZXJ0eUtleSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlLCBEYXRhRm9ybWF0SlNDZWxsLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
fQpAQCAtMTUxMTAsNyArMTUxMDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9O
dW1lcmljKE5vZGUqIG5vZGUpCiAgICAgaXNIZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBt
X2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25U
b051bWVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVu
dFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTKTsKIH0KQEAgLTE1MTQ1LDcgKzE1MTM5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNhbGxOdW1iZXJDb25zdHJ1Y3RvcihOb2RlKiBub2Rl
KQogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5h
cHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCB0ZW1wR1BSKSk7CiAg
ICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwotICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwog
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTE1MTkyLDcgKzE1
MTg2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ1NoYWRvd0NoaWNrZW5UYWls
KE5vZGUqIG5vZGUpCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOwogICAgIEdQUlJlZyBzY29wZVJlZyA9IHNjb3BlLmdwcigpOwogCi0gICAgbV9q
aXQubG9nU2hhZG93Q2hpY2tlblRhaWxQYWNrZXQoc2hhZG93UGFja2V0UmVnLCB0aGlzUmVncywg
c2NvcGVSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKSks
IGNhbGxTaXRlSW5kZXgpOworICAgIG1faml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRy
KENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaywgc2NyYXRjaDFSZWcpOworICAgIG1faml0LmxvZ1No
YWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tldFJlZywgdGhpc1JlZ3MsIHNjb3BlUmVn
LCBzY3JhdGNoMVJlZywgY2FsbFNpdGVJbmRleCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
QEAgLTE1MjExLDcgKzE1MjA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEFk
ZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFzaEdQUik7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHNldEdQUiwga2V5UmVncywgaGFzaEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNTIzMyw3
ICsxNTIyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXBTZXQoTm9kZSogbm9k
ZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTWFwU2V0LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIHZhbHVlUmVncywgaGFzaEdQUik7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25NYXBTZXQsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG1hcEdQUiwga2V5UmVncywgdmFsdWVSZWdzLCBoYXNoR1BSKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
QEAgLTE1NDUyLDcgKzE1NDQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
b3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgICAgIG1faml0LmVtaXRMb2FkUHJvdG90eXBlKHZtKCksIG9iamVjdEdQUiwg
cmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBlT2ZPYmplY3Qs
Ci0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2Jq
ZWN0R1BSKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdz
LCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU0NjksNyArMTU0NjQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJvdG90eXBlT2YoTm9kZSogbm9kZSkKIAogICAgICAg
ICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2bSgpLCB2YWx1ZUdQUiwgcmVzdWx0UmVncywgc2xv
d0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJvdG90eXBlT2YsCi0gICAgICAgICAgICByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgICAg
ICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKSk7
CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMTU1OTYsNyArMTU1OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKLSAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwKKyAgICAgICAgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwKICAgICAgICAg
c3RydWN0dXJlLAogICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2Ug
PyBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFn
ZSkpIDogc3RydWN0dXJlLAogICAgICAgICBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CkBAIC0xNTcy
OSw3ICsxNTcyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJv
cGVydHkoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25fR0NaIHNsCiAgICAgfQogICAgIH0KIAot
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIHNs
b3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBpbmRleEdQUikpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQUikpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdENhdGNoTG9jYWwoTm9kZSogbm9kZSkKQEAgLTE1
ODU0LDExICsxNTg0OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VHUFIsIEpTVmFsdQogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGg7CiAgICAgaWYgKEpJVENvZGU6OnVz
ZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJ
Q0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHVi
SW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBnZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBO
b1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgdmFsdWVSZWdzLAorICAgICAg
ICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9m
U2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVuY3Rpb24oKSwgTm9SZXN1bHQsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywKICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2Rl
T3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3Jp
Z2luKSksIGdlbi5zdHViSW5mbygpLCB2YWx1ZVJlZ3MsCiAgICAgICAgICAgICBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KIApA
QCAtMTU4ODcsNyArMTU4ODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1
ZU5vblBlZXBob2xlQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcgogICAgICAgICBh
cmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVy
YXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVu
Y3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdz
LCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
dW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CkBAIC0xNTkwOCw3ICsxNTkwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1i
bGVyCiAgICAgbV9qaXQuY29tcGFyZTMyKGNvbmQsIGFyZzFSZWdzLnBheWxvYWRHUFIoKSwgYXJn
MlJlZ3MucGF5bG9hZEdQUigpLCByZXN1bHRHUFIpOwogCiAgICAgaWYgKCFpc0tub3duSW50ZWdl
cihub2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8ICFpc0tub3duSW50ZWdlcihub2RlLT5jaGlsZDIo
KS5ub2RlKCkpKQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xv
d1BhdGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBoZWxwZXJGdW5jdGlvbiwgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKSk7
CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRy
ZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KQEAgLTE1OTQ4LDcgKzE1OTQzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVQZWVwaG9sZUJyYW5jaChOb2RlKiBub2RlLCBOb2Rl
KiBicmFuY2hOb2RlLAogICAgICAgICBhcmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKICAgICAgICAgYnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24s
IHJlc3VsdEdQUiwgdGFrZW4pOwpAQCAtMTU5NzIsNyArMTU5NjcsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpnZW5lcmljSlNWYWx1ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJy
YW5jaE5vZGUsCiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAKICAgICAgICAg
ICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbiho
ZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTE2MDEyLDcgKzE2
MDA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShO
b2RlKiBub2RlKQogICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZtX2ppdCk7CiAKICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFy
ZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAg
IGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTYxNjUsNyArMTYxNjAsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gaXNOb25FbXB0
eVN0cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGFsbG9j
YXRvckdQUik7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
aml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcobV9qaXQuZ3JhcGgoKS5tX3ZtKSksIHJlc3VsdEdQ
Uik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9qaXQuZ3JhcGgoKSwganNFbXB0eVN0cmluZyhtX2ppdC5ncmFwaCgpLm1fdm0p
KSwgcmVzdWx0R1BSKTsKIAogICAgIGlzTm9uRW1wdHlTdHJpbmcubGluaygmbV9qaXQpOwogICAg
IG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKQEAgLTE2MTczLDExICsxNjE2OCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAgICBzd2l0Y2gg
KG51bU9wR1BScykgewogICAgIGNhc2UgMjoKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VS
b3BlMiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBv
cEdQUnNbMV0pKTsKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25NYWtlUm9w
ZTIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwg
b3BHUFJzWzFdKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKICAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMs
IG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSkpOworICAgICAgICAgICAgc2xvd1Bh
dGgsIHRoaXMsIG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSkpOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtMTYxOTEsMTEgKzE2MTg2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYWtlUm9wZShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CiAgICAgc3dpdGNoIChudW1PcEdQUnMpIHsKICAgICBjYXNlIDI6Ci0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25NYWtlUm9wZTMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wR1BSc1swXSwgb3BHUFJzWzFdLCBvcEdQUnNbMl0pOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk1ha2VSb3BlMywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0sIG9wR1BSc1syXSk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xNjI5OCw5
ICsxNjI5Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJhdG9yR2V0QnlW
YWwoTm9kZSogbm9kZSkKIAogICAgICAgICBpZiAoIXJlY292ZXJHZW5lcmljQ2FzZS5lbXB0eSgp
KSB7CiAgICAgICAgICAgICBpZiAoYmFzZVJlZ3MudGFnR1BSKCkgPT0gSW52YWxpZEdQUlJlZykK
LSAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3Zl
ckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRC
eVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVy
czo6Q2VsbFZhbHVlKGJhc2VSZWdzLnBheWxvYWRHUFIoKSksIGluZGV4R1BSLCBlbnVtZXJhdG9y
R1BSKSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1l
QW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkpLCBpbmRleEdQUiwg
ZW51bWVyYXRvckdQUikpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9w
ZXJhdGlvbkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BS
KSk7CisgICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHJl
Y292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVyYXRvclJlY292ZXJOYW1lQW5k
R2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
UmVncywgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKICAgICAgICAgfQogCiAgICAgICAgIGRv
bmVDYXNlcy5saW5rKCZtX2ppdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKaW5kZXggM2UxNDI5ODJmZDc4NzcyYzUzNDJmMWQ2MTU0NDBlODU2Njg1
ZDZjNy4uOWE5ZWQxMThmYjU5NzYyNjA0MzkzNTVkNmFiZDQ1YTU2MDc1NjNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTIyLDcgKzEy
Miw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICAgICAgZXhwbGljaXQgVHJ1c3RlZElt
bVB0cihUKiB2YWx1ZSkKICAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEpTQ2VsbCwgVD46OnZh
bHVlLCAiVG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBoIG11c3QgYmUgYXdhcmUgb2YgaXQu
IFVzZSBTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIgaW5zdGVhZC4i
KTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxKU0NlbGwsIFQ+
Ojp2YWx1ZSwgIlRvIHVzZSBhIEdDIHBvaW50ZXIsIHRoZSBncmFwaCBtdXN0IGJlIGF3YXJlIG9m
IGl0LiBVc2UgU3BlY3VsYXRpdmVKSVQ6OkpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50IGlu
c3RlYWQuIik7CiAgICAgICAgIH0KIAogICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQpAQCAtOTc0LDE2ICs5NzQsMTUgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgICAgICBhcHBlbmRDYWxsKENDYWxsSGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpub25BcmdHUFIwLCBhZGRyZXNzLm9mZnNldCkpOwogICAgIH0KIAotICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2Vw
dGlvbihWX0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIENvZGVCbG9jayogY29kZUJsb2NrKQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tP
bkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlvbl9DYiBvcGVyYXRpb24sIEdQUlJlZyBjb2RlQmxvY2tH
UFIpCiAgICAgewotICAgICAgICAvLyBEbyBub3QgcmVnaXN0ZXIgQ29kZUJsb2NrKiBhcyBhIHdl
YWstcG9pbnRlci4KLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Vl9KSVRPcGVyYXRpb25f
Q2I+KFRydXN0ZWRJbW1QdHIoc3RhdGljX2Nhc3Q8dm9pZCo+KGNvZGVCbG9jaykpKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Vl9KSVRPcGVyYXRpb25fQ2I+KGNvZGVCbG9ja0dQUik7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRp
b24ob3BlcmF0aW9uKTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oWl9KSVRPcGVyYXRpb25fRyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhj
ZXB0aW9uKFpfSklUT3BlcmF0aW9uX0cgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcg
Z2xvYmFsT2JqZWN0R1BSKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Wl9K
SVRPcGVyYXRpb25fRz4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFs
T2JqZWN0KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPFpfSklUT3BlcmF0aW9uX0c+
KGdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFt
ZVJvbGxiYWNrT25FeGNlcHRpb25TZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
ICAgICAKQEAgLTExNTgsNiArMTE1NywxMiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAg
ewogICAgICAgICByZXR1cm4gYWRkQnJhbmNoKG1faml0LmJyYW5jaFB0cihjb25kLCBsZWZ0LCBy
aWdodCksIGRlc3RpbmF0aW9uKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgorICAgIHZvaWQgYnJhbmNoVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFUgcmlnaHQsIEJhc2ljQmxvY2sqIGRl
c3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZEJyYW5jaChtX2ppdC5icmFuY2hV
bmxpbmtlZENvbnN0YW50KGNvbmQsIGxlZnQsIHJpZ2h0KSwgZGVzdGluYXRpb24pOworICAgIH0K
ICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIHZvaWQgYnJh
bmNoVGVzdFB0cihKSVRDb21waWxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFQgdmFsdWUsIFUg
bWFzaywgQmFzaWNCbG9jayogZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAyN2MzNTVkMzAyMzRi
MGYyM2ZlZWEyNjk4YmIzZjhlNzljOWJhMWM4Li4zOWY0YTZiNTZhNjk1ZmI1ZTRjODZmMzEzZTBh
OGQzMDIzMGE0MWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoCiAgICAgaWYgKGJhc2VUYWdHUFJPck5vbmUgPT0gSW52
YWxpZEdQUlJlZykgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9u
KHR5cGUpLAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlUGF5bG9hZEdQUiksCiAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0
eXBlKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFsdWVSZWdzKGJhc2VU
YWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9y
Tm9uZSwgYmFzZVBheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogCiAg
ICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1MSw3ICsyNTEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCiAgICAgaWYg
KGJhc2VUYWdHUFJPck5vbmUgPT0gSW52YWxpZEdQUlJlZyAmJiB0aGlzVGFnR1BSID09IEludmFs
aWRHUFJSZWcpIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0
dWJJbmZvKCksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUGF5bG9h
ZEdQUiksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZSh0aGlzUGF5bG9hZEdQ
UiksCiAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CkBAIC0yNjEsNyArMjYxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKAogICAgICAgICAK
ICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMs
IHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAgICAgICAgICAgSlNW
YWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikp
LCBnZW4uc3R1YkluZm8oKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxv
YWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BSLCB0aGlzUGF5bG9hZEdQUiksIGlkZW50aWZp
ZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIEpTVmFs
dWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhp
c1RhZ0dQUiwgdGhpc1BheWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQog
CiAgICAgbV9qaXQuYWRkR2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAt
MzAzLDcgKzMwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVl
cGhvbGVDb21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuCiAgICAgICAgIGlzTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2Jh
bE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0
YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9i
amVjdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJn
UGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQ
Uik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5
bG9hZEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9i
amVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdFBheWxvYWRH
UFIpOwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5kLCBOCiAgICAKICAg
ICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxP
YmplY3QuZ3ByKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAg
bV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zm
c2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90
ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWws
IGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIGludmVydCA/IG5v
dFRha2VuIDogdGFrZW4pOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBOb2RlKiBicmFuY2hO
b2RlCiAgICAgICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGFyZzFQYXlsb2FkR1BS
LCBhcmcyUGF5bG9hZEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CiAgICAgICAgIAog
ICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXls
b2FkR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVBheWxvYWRHUFIsIGFyZzJQ
YXlsb2FkR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0
RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YXJnMVBheWxvYWRHUFIsIGFyZzJQYXlsb2FkR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogCkBAIC00MzAsNyAr
NDMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmlj
dEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAgICAgLy8gRklYTUU6IEFkZCBm
YXN0IHBhdGhzIGZvciB0d29DZWxscywgbnVtYmVyIGV0Yy4KIAogICAgICAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIApAQCAt
NDY5LDcgKzQ2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVl
cGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICAgICAgbm90RXF1YWxD
YXNlLmxpbmsoJm1faml0KTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlBheWxvYWRHUFIpOworICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlBheWxvYWRH
UFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKCk7CiAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZl
cnQpCiAgICAgICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBwYXRocy4KIAogICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIGVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKHZt
KCksIG1faml0LCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzY3JhdGNo
R1BSMywgaW5saW5lQ2FsbEZyYW1lLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgc2xvd0Nhc2Up
OwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAg
ICAgICAgICAgIHNsb3dDYXNlLmxpbmsoJm1faml0KTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNv
bihERkdWYXJhcmdzVGhyb3dpbmdQYXRoRGlkTm90VGhyb3cpOwogICAgICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CkBAIC02NjUsNyArNjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgLy8gUmlnaHQgbm93LCBhcmd1bWVudHMg
aXMgaW4gYXJndW1lbnRzVGFnR1BSL2FyZ3VtZW50c1BheWxvYWRHUFIgYW5kIHRoZSByZWdpc3Rl
ciBmaWxlIGlzCiAgICAgICAgICAgICAvLyBmbHVzaGVkLgotICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGFyZ3VtZW50c1RhZ0dQ
UiwgYXJndW1lbnRzUGF5bG9hZEdQUiksIG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZh
ckFyZ09mZnNldCk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFt
ZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2Fk
R1BSKSwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIE5vdyB3ZSBoYXZlIHRoZSBhcmd1bWVudCBjb3VudCBvZiB0aGUgY2FsbGVlIGZyYW1lLCBi
dXQgd2UndmUgbG9zdCB0aGUgYXJndW1lbnRzIG9wZXJhbmQuCkBAIC02NzUsNyArNjc1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGVt
aXRTZXRWYXJhcmdzRnJhbWUobV9qaXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBmYWxzZSwg
c2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIxKTsKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVz
dGVkSW1tMzIoLShzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgc2NyYXRj
aEdQUjEsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRj
aEdQUjEsIEpTVmFsdWVSZWdzKGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiks
IGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CisgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjcmF0Y2hH
UFIxLCBKU1ZhbHVlUmVncyhhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1BheWxvYWRHUFIpLCBk
YXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFkZFB0cihU
cnVzdGVkSW1tMzIoc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIH0KQEAg
LTgxNiw3ICs4MTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
KQogICAgICAgICByZXF1aXJlZEJ5dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSwgcmVxdWlyZWRCeXRlcyk7CiAgICAgICAgIG1faml0LnN1YlB0cihU
cnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdp
c3Rlcik7CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCku
dmFsdWUoKSksIEdQUkluZm86OnJlZ1QxKTsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8
ZGVjbHR5cGUob3BlcmF0aW9uQ2FsbEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQ
UkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5h
bENhbGwoKTsKICAgICAgICAgbV9qaXQuYXBwZW5kQ2FsbChvcGVyYXRpb25DYWxsRXZhbCk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC04MjUsOCArODI1LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgcGFydCB3aGVyZSB3ZSBtZWFudCB0byBtYWtlIGEgbm9ybWFsIGNhbGwuIE9vcHMuCiAgICAg
ICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIEpJVENvbXBpbGVy
OjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIG1faml0LmxvYWRWYWx1ZShKSVRDb21w
aWxlcjo6Y2FsbGVlRnJhbWVTbG90KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSksIEpTVmFsdWVSZWdz
IHsgR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86OnJlZ1QwIH0pOwotICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJ
bmZvOjpyZWdUMyk7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJl
Z1QzKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQ6Om5vbkNlbGxQb2ludGVyKG1fZ3JhcGgsIGluZm8pLCBHUFJJbmZvOjpy
ZWdUMik7CiAgICAgICAgIG1faml0LmVtaXRWaXJ0dWFsQ2FsbFdpdGhvdXRNb3ZpbmdHbG9iYWxP
YmplY3Qodm0oKSwgR1BSSW5mbzo6cmVnVDIsIENhbGxNb2RlOjpSZWd1bGFyKTsKICAgICAgICAg
QVNTRVJUKGluZm8tPmNhbGxNb2RlKCkgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIpOwogICAgICAgICAK
QEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlKQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIH0K
IAotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xv
YmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0
YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCks
IEdQUkluZm86OnJlZ1QzKTsKICAgICBpbmZvLT5lbWl0U2xvd1BhdGgodm0oKSwgbV9qaXQpOwog
CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xNTAyLDEwICsxNTAyLDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xlYW5PYmplY3RPck90aGVyKEVkZ2Ugbm9kZVVzZSwg
Ym9vbCBpbnZlcnQpCiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh2YWx1ZVBheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVVc2UsIAotICAgICAgICAgICAgbV9q
aXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVW5saW5rZWRDb25zdGFudCgK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVu
dE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTE1ODMsNyArMTU4Myw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xlYW4oTm9kZSogbm9kZSwgYm9vbCBpbnZl
cnQpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICAgICAg
Ym9vbCBzaG91bGRDaGVja01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAhbWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKTsKLSAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBtX2pp
dC5lbWl0Q29udmVydFZhbHVlVG9Cb29sZWFuKHZtKCksIGFyZzEuanNWYWx1ZVJlZ3MoKSwgcmVz
dWx0R1BSLCB0ZW1wLmdwcigpLCB2YWx1ZUZQUi5mcHIoKSwgdGVtcEZQUi5mcHIoKSwgc2hvdWxk
Q2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3QsIGludmVydCk7CiAgICAg
ICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MTYyNywxMCArMTYyNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBCYQogCiAgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BS
KSwgbm9kZVVzZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAgICAgIG1f
aml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3Jh
dGNoR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwog
CiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAg
fQpAQCAtMTczMCw3ICsxNzMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChO
b2RlKiBub2RlKQogICAgICAgICB1c2Uobm9kZS0+Y2hpbGQxKCkpOwogCiAgICAgICAgIGJvb2wg
c2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gIW1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCk7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgYXV0byBmYWxz
ZXkgPSBtX2ppdC5icmFuY2hJZkZhbHNleSh2bSgpLCB2YWx1ZVJlZ3MsIHJlc3VsdEdQUiwgdGVt
cC5ncHIoKSwgdmFsdWVGUFIuZnByKCksIHRlbXBGUFIuZnByKCksIHNob3VsZENoZWNrTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgYWRkQnJhbmNoKGZhbHNl
eSwgbm90VGFrZW4pOwogICAgICAgICBqdW1wKHRha2VuLCBGb3JjZUp1bXApOwpAQCAtMTgwMCw3
ICsxODAwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAgICAgICBzaWxl
bnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZUdQUiwgcHJvcGVydHlSZWdzKTsKICAgICAgICAgICAgIGlmIChjYW5Vc2VGbHVzaCA9PSBD
YW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygp
OwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTE4NDQsMTEgKzE4NDQs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNv
bnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAgIGlmIChiYXNlUmVncy50
YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKSB7CiAgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxs
VmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgcHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwg
bnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQUigpKSwg
cHJvcGVydHlSZWdzKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZVJlZ3Ms
IHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNv
ZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCksIG51bGxwdHIsIGJhc2VSZWdzLCBwcm9wZXJ0eVJl
Z3MpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtX2ppdC5hZGRHZXRCeVZhbChnZW4s
IHNsb3dQYXRoLmdldCgpKTsKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYW1iZGE8c3RkOjp0
dXBsZTxKCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlW
YWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5
UmVnKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yMDExLDcgKzIwMTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8Sgog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
ICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0
SW50LAotICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3Ms
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwog
CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMjA2OCw3ICsyMDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAg
ICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFz
ZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKIAogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTI2
NTUsNyArMjY1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUt
PmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3Qg
OiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3Mp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0
aGlzUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtMjc1Niw3ICsyNzU2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAg
ICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3BBbmRSZWNv
dmVyTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwg
dmFsdWVQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsK
KyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9h
ZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9h
ZEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3OTEsNyArMjc5MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAg
ICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxl
bmd0aCwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVl
UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIp
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIs
IG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yODI5LDcgKzI4MjksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAg
ICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcCwKLSAgICAgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVl
VGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
OTg2LDcgKzI5ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIC8vIEluc3RlYWQgb2YgdGhlIHNsb3cgcGF0aCBnZW5lcmF0b3IsIHdlIGVtaXQg
Y2FsbE9wZXJhdGlvbiBoZXJlLgogICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNCeXRlY29kZU51bWJlcikpIHsKICAgICAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVt
YmVyLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdz
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpOwogICAgICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE51bWJlcjsKQEAgLTMwMDAsNyArMzAwMCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAg
bm90TnVtYmVyLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdFJlZ3MpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051
bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVn
cyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRS
ZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKTsKICAgICAg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAKQEAgLTM1MjcsNyArMzUyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIg
PSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9i
YWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0Lmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RH
UFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6
Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAgICAg
ICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0
R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC0zNTkxLDcgKzM1
OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25OdW1iZXJJc0ludGVnZXIsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uTnVtYmVySXNJbnRlZ2VyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM2MzQsNyArMzYzNCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGlucHV0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjY1LDkgKzM2NjUsOSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmpl
Y3RVc2UpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tl
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlSZWdz
LCBoYXNoR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5k
QnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIs
IGtleVJlZ3MsIGhhc2hHUFIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbWFwR1BSLCBrZXlSZWdzLCBoYXNoR1BSKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIGhhc2hHUFIpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzkyNiw3ICszOTI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0ZW1wR1BSKTsKICAgICAg
ICAgICAgIGtleVJlZ3MgPSBKU1ZhbHVlUmVncyh0ZW1wR1BSLCBrZXlSZWdzLnBheWxvYWRHUFIo
KSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9w
ZXJ0eSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBr
ZXlSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBrZXlS
ZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogCkBAIC00MjE0LDcgKzQyMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhSYW5kb20oTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGRmZmRkZjhmMmU1OGQ2YjMzYmZmMGMwYTBjMzhkZGFkMTZmYzlmZDguLjk1YzBiMmNl
ZmVhZDM4NWM1Y2MzNWRkNDZhZWQyODk2NmQ3YTkxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTgxLDEyICsxODEsMTIg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElD
Q2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJ
bmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJ
bmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5
SWRGdW5jdGlvbih0eXBlKSwKICAgICAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVP
cmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAg
ICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFz
ZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBhcHByb3By
aWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24odHlwZSksCiAgICAgICAgICAgICBzcGlsbE1v
ZGUsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIGdlbi5zdHViSW5mbygpLCBiYXNlR1BSLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CisgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKICAg
ICB9CiAgICAgCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAg
LTIyMSwxMiArMjIxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWRXaXRo
VGhpcyhDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSCiAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5z
dHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25H
ZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKICAgICAgICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9u
Q2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIu
cmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBz
dHViSW5mb0dQUiwgYmFzZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXNPcHRpbWl6ZSwKICAgICAg
ICAgICAgIERvbnRTcGlsbCwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQs
Ci0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgZ2VuLnN0dWJJbmZvKCks
IGJhc2VHUFIsIHRoaXNHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgdGhp
c0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRH
ZXRCeUlkV2l0aFRoaXMoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yNjMsNyArMjYzLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxs
T3JVbmRlZmluZWQoRWRnZSBvcGVyYW4KIAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmpl
Y3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUds
b2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxH
bG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCBh
cmdHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6
RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3Vs
dEdQUik7CkBAIC0zMDUsNiArMzA1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVQZWVwaG9sZUJyYW5jaE51bGxPclVuZGVmaW5lZChFZGdlIG9wZXJhbmQsIE4KICAgICAg
ICAgR1BSVGVtcG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOwogCisgICAgICAgIEdQUlJlZyBsb2NhbEds
b2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOworICAgICAgICBHUFJSZWcg
cmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOworCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGw7CiAgICAgICAgIGlmICghaXNLbm93bkNlbGwo
b3BlcmFuZC5ub2RlKCkpKQogICAgICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKQEAgLTMxMyw5ICszMTYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVk
Z2Ugb3BlcmFuZCwgTgogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgbm90VGFrZW4pOwogCi0gICAg
ICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdwcigp
OwotICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2Jq
ZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFyZ0dQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xv
YmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFu
Y2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSLCB0YWtlbik7CkBAIC00NTgsNyArNDU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJy
YW5jaE5vZGUKICAgICAgICAgYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxR1BSLCBh
cmcyR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAgCiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMUdQUiwgYXJnMkdQUik7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCkBAIC01
MDksNyArNTEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9s
ZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKIAogICAgICAgICBqdW1wKGlu
dmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNlSnVtcCk7CiAKLSAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
MUdQUiwgYXJnMkdQUikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CiAg
ICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBp
bGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICB9CiAKQEAgLTU0Nyw3ICs1NDgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0
RXEoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZt
X2ppdCk7CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGws
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVn
cyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJS
ZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICAKQEAgLTYwMyw3ICs2MDQsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwg
Ym9vbCBpbnZlcnQpCiAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02NCgwKSwgcmVzdWx0R1BS
KTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2Vz
LCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncykpOworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJl
U3RyaWN0RXEsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFS
ZWdzLCBhcmcyUmVncykpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKQEAgLTc0Myw3ICs3
NDQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAg
ICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uodm0oKSwgbV9qaXQsIHNjcmF0Y2hH
UFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxpbmVDYWxsRnJh
bWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93Q2FzZSk7CiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgc2xvd0Nhc2Uu
bGluaygmbV9qaXQpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0
YWNrT3ZlcmZsb3dGb3JWYXJhcmdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVGhy
b3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFyZ3NUaHJvd2lu
Z1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTc3
Miw3ICs3NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpc0ZsdXNoZWQoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFJpZ2h0IG5vdywgYXJndW1lbnRzIGlzIGlu
IGFyZ3VtZW50c0dQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMgZmx1c2hlZC4KLSAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNHUFIs
IG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CisgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRzR1BS
LCBudW1Vc2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
Tm93IHdlIGhhdmUgdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBjYWxsZWUgZnJhbWUsIGJ1dCB3
ZSd2ZSBsb3N0IHRoZSBhcmd1bWVudHMgb3BlcmFuZC4KQEAgLTc4Miw3ICs3ODMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgZW1pdFNl
dFZhcmFyZ3NGcmFtZShtX2ppdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGZhbHNlLCBzY3Jh
dGNoR1BSMSwgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJ
bW0zMigtKHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDUgKiBzaXplb2Yodm9pZCopKSkpLCBzY3JhdGNoR1BS
MSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY3JhdGNoR1BS
MSwgYXJndW1lbnRzR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCwgR1BSSW5mbzo6cmV0dXJu
VmFsdWVHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFy
Z3NGcmFtZSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBzY3JhdGNoR1BSMSwgYXJndW1lbnRzR1BSLCBkYXRhLT5maXJzdFZhckFyZ09mZnNl
dCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKENh
bGxlckZyYW1lQW5kUEMpKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIH0KQEAgLTk0Myw3ICs5NDQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICByZXF1aXJlZEJ5
dGVzID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgcmVx
dWlyZWRCeXRlcyk7CiAgICAgICAgIG1faml0LnN1YlB0cihUcnVzdGVkSW1tMzIocmVxdWlyZWRC
eXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSksIEdQUkluZm86OnJl
Z1QxKTsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8ZGVjbHR5cGUob3BlcmF0aW9uQ2Fs
bEV2YWwpPihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25DYWxsRXZhbCk+KEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZv
OjpyZWdUMSk7CiAgICAgICAgIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKTsKICAgICAgICAgbV9q
aXQuYXBwZW5kQ2FsbChvcGVyYXRpb25DYWxsRXZhbCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CkBAIC05NTIsOCArOTUzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB3ZSBtZWFu
dCB0byBtYWtlIGEgbm9ybWFsIGNhbGwuIE9vcHMuCiAgICAgICAgIG1faml0LmFkZFB0cihUcnVz
dGVkSW1tMzIocmVxdWlyZWRCeXRlcyksIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6Y2FsbGVlRnJhbWVTbG90KENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSksIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsKLSAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmpl
Y3QpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50
KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQ
UkluZm86OnJlZ1QzKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQ6Om5vbkNlbGxQb2ludGVyKG1fZ3JhcGgsIGNhbGxMaW5r
SW5mbyksIEdQUkluZm86OnJlZ1QyKTsKICAgICAgICAgbV9qaXQuZW1pdFZpcnR1YWxDYWxsV2l0
aG91dE1vdmluZ0dsb2JhbE9iamVjdCh2bSgpLCBHUFJJbmZvOjpyZWdUMiwgQ2FsbE1vZGU6OlJl
Z3VsYXIpOwogICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvLT5jYWxsTW9kZSgpID09IENhbGxN
b2RlOjpSZWd1bGFyKTsKICAgICAgICAgCkBAIC0xMDM1LDEzICsxMDM2LDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIENhbGxGcmFtZVNodWZm
bGVyIGNhbGxGcmFtZVNodWZmbGVyKG1faml0LCBzaHVmZmxlRGF0YSk7CiAgICAgICAgIGNhbGxG
cmFtZVNodWZmbGVyLnNldENhbGxlZUpTVmFsdWVSZWdzKEpTVmFsdWVSZWdzKEdQUkluZm86OnJl
Z1QwKSk7CiAgICAgICAgIGNhbGxGcmFtZVNodWZmbGVyLnByZXBhcmVGb3JTbG93UGF0aCgpOwor
ICAgICAgICAvLyBGSVhNRQorICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9i
YWxPYmplY3QgbmVlZHMgdG8gYmUgaW4gcmVnVDMKICAgICB9IGVsc2UgewogICAgICAgICBtX2pp
dC5tb3ZlKGNhbGxlZUdQUiwgR1BSSW5mbzo6cmVnVDApOyAvLyBDYWxsZWUgbmVlZHMgdG8gYmUg
aW4gcmVnVDAKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMp
OyAvLyBKU0dsb2JhbE9iamVjdCBuZWVkcyB0byBiZSBpbiByZWdUMwogICAgICAgICBpZiAoaXNU
YWlsKQogICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAvLyBUaGlz
IG5lZWRzIHRvIGhhcHBlbiBhZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAKICAgICB9
CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGds
b2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QzKTsgLy8gSlNHbG9iYWxPYmplY3QgbmVlZHMgdG8g
YmUgaW4gcmVnVDMKICAgICBjYWxsTGlua0luZm8tPmVtaXRTbG93UGF0aCh2bSgpLCBtX2ppdCk7
CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTE5MjYsNyArMTkyOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJlRXFQdHIoTm9kZSogbm9kZSkKICAgICBHUFJSZWcg
dmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5n
cmFwaCgpLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCByZXN1bHRHUFIpOworICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIHJlc3VsdEdQUik7CiAg
ICAgbV9qaXQuY29tcGFyZTY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdmFsdWVHUFIsIHJlc3Vs
dEdQUiwgcmVzdWx0R1BSKTsKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiB9CkBAIC0xOTY3LDEwICsxOTcwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUb0Jvb2xlYW5PYmplY3RPck90aGVyKEVkZ2Ugbm9kZVVzZSwgYm9vbCBpbnZlcnQpCiAK
ICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHN0cnVjdHVy
ZUdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFs
dWVHUFIpLCBub2RlVXNlLCAKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKKyAgICAgICAg
ICAgIG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSkpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0
LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LmxpbmsoJm1faml0KTsKICAgICB9CkBAIC0yMTIyLDEwICsyMTI1LDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKEVkZ2Ugbm9kZVVzZSwgQmFzaWNCbG9j
ayogdGFrZW4sIEJhCiAKICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFs
dWVHUFIsIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLAotICAgICAgICAgICAgbV9qaXQuYnJhbmNo
UHRyKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVW5saW5rZWRDb25zdGFudCgKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZz
ZXQoKSksIAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0
LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9j
dXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIxOTEsNyArMjE5NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQnJhbmNoKEVkZ2Ugbm9kZVVzZSwgQmFz
aWNCbG9jayogdGFrZW4sIEJhc2ljQmxvCiAgICAgICAgICAgICBpZiAoIWlzRGVmaW5pdGVseVN0
cmluZykKICAgICAgICAgICAgICAgICBza2lwU3RyaW5nQ2FzZSA9IG1faml0LmJyYW5jaElmTm90
U3RyaW5nKHZhbHVlR1BSKTsKIAotICAgICAgICAgICAgYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCwgdmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBo
KCksIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBub3RUYWtlbik7CisgICAgICAgICAgICBicmFuY2hV
bmxpbmtlZENvbnN0YW50KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdmFsdWVHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIGpzRW1wdHlTdHJpbmcodm0oKSkp
LCBub3RUYWtlbik7CiAgICAgICAgICAgICBqdW1wKHRha2VuLCBGb3JjZUp1bXApOwogCiAgICAg
ICAgICAgICBpZiAoIWlzRGVmaW5pdGVseVN0cmluZykKQEAgLTIyMTUsOCArMjIxOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQnJhbmNoKEVkZ2Ugbm9kZVVzZSwgQmFzaWNC
bG9jayogdGFrZW4sIEJhc2ljQmxvCiAgICAgICAgIGlmIChzaG91bGRDaGVja01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpIHsKICAgICAgICAgICAgIGJyYW5jaFRlc3Q4KE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCksIHRha2Vu
KTsKICAgICAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVlR1BSLCB0
ZW1wMUdQUik7Ci0gICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgdGVtcDJHUFIpOworICAgICAgICAgICAgbV9qaXQu
bG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIHRlbXAyR1BSKTsKICAgICAgICAgICAgIGJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAxR1BSLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgdGVtcDJHUFIsIHRha2VuKTsKICAgICAgICAg
ICAgIGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7CiAgICAgICAgIH0gZWxzZQpAQCAtMjQxNCw3
ICsyNDE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5v
ZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAgICAgICBzaWxl
bnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgICAgICAgICBpZiAoY2FuVXNlRmx1c2ggPT0gQ2Fu
VXNlRmx1c2g6Ok5vKQogICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsK
ICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0yNDcwLDExICsyNDcyLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25z
dCBTY29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGlmIChKSVRDb2RlOjp1c2VEYXRh
SUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElD
Q2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb25HZXRCeVZhbE9wdGlt
aXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAgICAgIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgbnVsbHB0ciwgYmFzZUdQ
UiwgcHJvcGVydHlHUFIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25HZXRCeVZhbE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBnZW4uc3R1YkluZm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBnZW4uc3R1Yklu
Zm8oKSwgbnVsbHB0ciwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOwogICAgICAgICB9CiAKICAgICAg
ICAgbV9qaXQuYWRkR2V0QnlWYWwoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0yNTQ5LDcgKzI1
NTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwg
Y29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAg
ICAgICAgICAgICAgICByZXN1bHRSZWcsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
UmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWcsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAgICAg
ICB9CiAKIApAQCAtMjY0MSw3ICsyNjQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAg
ICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRo
Q2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRC
eVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncy5ncHIoKSwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdFJlZ3MuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLmdwcigpLCBub2RlKTsKICAgICAgICAgfQogCkBAIC0yNjk5LDcgKzI3MDEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3Qg
U2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigK
ICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAgICAgIHJlc3VsdFJl
ZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZywgcHJvcGVydHlSZWcpKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Zywgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjgwNSw3ICsyODA3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVJlZ0V4cFRlc3RJbmxpbmUoTm9kZSogbm9kZSkKICAgICAgICAg
Ly8gIFNhdmVkIGNhY2hlZCByZXN1bHQKICAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9IEpTR2xv
YmFsT2JqZWN0OjpyZWdFeHBHbG9iYWxEYXRhT2Zmc2V0KCkgKyBSZWdFeHBHbG9iYWxEYXRhOjpv
ZmZzZXRPZkNhY2hlZFJlc3VsdCgpOwogCi0gICAgICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIHJlZ0V4cCksIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGdsb2JhbE9iamVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZkxh
c3RSZWdFeHAoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgcmVnRXhwKSwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoZ2xvYmFsT2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNl
dE9mTGFzdFJlZ0V4cCgpKSk7CiAgICAgICAgIG1faml0LnN0b3JlUHRyKGFyZ3VtZW50R1BSLCBK
SVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hl
ZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0SW5wdXQoKSkpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKHlh
cnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGdsb2JhbE9i
amVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0OjpvZmZzZXRPZlJlc3VsdCgpICsg
T0JKRUNUX09GRlNFVE9GKE1hdGNoUmVzdWx0LCBzdGFydCkpKTsKICAgICAgICAgbV9qaXQuc3Rv
cmUzMih5YXJyUmVnaXN0ZXJzLnJldHVyblJlZ2lzdGVyMiwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
Z2xvYmFsT2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVz
dWx0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIGVuZCkpKTsKQEAgLTM1MzAsNyAr
MzUzMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAg
ICAgICBpZiAoIXN0b3JhZ2VFZGdlKSB7CiAgICAgICAgICAgICBhdXRvIGNhbGxTbG93UGF0aCA9
IFsmXSAoKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBnbG9iYWxPYmplY3RJbW1QdHIgPSBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGdsb2JhbE9iamVj
dEltbVB0ciA9IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpOwogICAgICAgICAgICAgICAg
IHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljc0FkZDoK
ICAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzQWRkLCBy
ZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFyZ0dQUnNb
MF0pOwpAQCAtMzczOSw3ICszNzQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkF0b21pY3NJc0xvY2tGcmVlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcGVyYW5kR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWlj
c0lzTG9ja0ZyZWUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9w
ZXJhbmRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMzg4MSw3ICszODgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSksIHZhbHVlR1BSKSk7CiAgICAgICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292
ZXJMZW5ndGgsIHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikp
OworICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQb3BB
bmRSZWNvdmVyTGVuZ3RoLCB2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2UgY2FuJ3Qga25vdyBm
b3Igc3VyZSB0aGF0IHRoZSByZXN1bHQgaXMgYW4gaW50IGJlY2F1c2Ugb2YgdGhlIHNsb3cgcGF0
aHMuIDotLwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CkBAIC0z
OTE0LDcgKzM5MTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkFycmF5UG9wLCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25BcnJheVBvcCwgdmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
R1BSKSk7CiAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVHUFIsIG5vZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC00MDQwLDcgKzQwNDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIEluc3RlYWQgb2YgdGhlIHNsb3cgcGF0
aCBnZW5lcmF0b3IsIHdlIGVtaXQgY2FsbE9wZXJhdGlvbiBoZXJlLgogICAgICAgICBpZiAoISht
X3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNCeXRlY29kZU51bWJl
cikpIHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmd1bWVudEdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvTnVtYmVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1
bWVudEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90TnVtYmVyID0gbV9q
aXQuYnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRHUFIpOwpAQCAtNDA0OSw3ICs0MDUxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBu
b3ROdW1iZXIubGluaygmbV9qaXQpOwogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0R1BSKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1i
ZXIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsK
KyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdEdQUiwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BSKTsKICAgICAgICAgICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKQEAgLTQ1MzUsNyArNDUzNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5l
Y21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZhbHVlR1BSKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZh
bFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIsIHZh
bHVlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBub1Jl
c3VsdChub2RlKTsKQEAgLTQ2NzMsNyArNDY3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5s
aW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBs
b2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxP
YmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0Lmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIp
OworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9qaXQuZ3JhcGgoKSwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkp
OwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQu
Z3ByKCksIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIpOyAKICAgICAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHQuZ3By
KCkpOwpAQCAtNDg3OCw3ICs0ODgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogCiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAg
ICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25NYXBIYXNoLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBKU1ZhbHVlUmVncyhpbnB1dEdQUikpOworICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25NYXBIYXNoLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBKU1ZhbHVlUmVncyhpbnB1dEdQUikpOwogICAgICAgICAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAt
NDkyMyw3ICs0OTI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogCiAgICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxB
bGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25N
YXBIYXNoLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKU1ZhbHVlUmVn
cyhpbnB1dEdQUikpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0
R1BSKSk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtNTA3MSw5ICs1MDczLDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgc2xvd1BhdGhDYXNlcy5saW5r
KCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhpbmRleEdQUik7
CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE1hcE9iamVjdFVz
ZSkKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tl
dCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlHUFIs
IGhhc2hHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBG
aW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBH
UFIsIGtleUdQUiwgaGFzaEdQUik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKKyAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIp
OwogICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CkBAIC01MDgxLDkgKzUwODMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAKICAgICAgICAgbm90UHJlc2VudEluVGFibGUubGluaygmbV9qaXQpOwogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAgICAg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgdm0oKS5zZW50aW5lbE1hcEJ1Y2tldCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
aml0LmdyYXBoKCksIHZtKCkuc2VudGluZWxNYXBCdWNrZXQoKSksIHJlc3VsdEdQUik7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgdm0oKS5zZW50aW5lbFNldEJ1Y2tldCgpKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1faml0LmdyYXBoKCksIHZtKCkuc2VudGluZWxTZXRCdWNrZXQoKSksIHJl
c3VsdEdQUik7CiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTM4Niw3ICs1Mzg4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIHNsb3dQ
YXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
R1BSKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBrZXlHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc093blByb3BlcnR5LCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIsIGtleUdQUik7CiAgICAg
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IGNjNmMw
NTIzMWQ3MzM5OThkOWI4MDQ0NWEyMTgzMjhkM2RjYmJhZTIuLjBlOWI0NzhlYWM4OGQzNWJkMTc5
Y2FkYWJmNTlhOWZlMGU1OGM5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVGh1bmtzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5r
cy5jcHAKQEAgLTE3Miw2ICsxNzIsMTAgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKIAogICAgIGppdC5yZXN0b3Jl
Q2FsbGVlU2F2ZXNGcm9tRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVyKHZtLnRvcEVudHJ5RnJh
bWUpOwogICAgIGppdC5lbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgaml0LmVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKENhbGxG
cmFtZVNsb3Q6OmNvZGVCbG9jaywgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rl
ciwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIEdQUkluZm86OmNvbnN0YW50c1JlZ2lz
dGVyKTsKKyNlbmRpZgogCiAgICAgaml0LmZhckp1bXAoR1BSSW5mbzo6cmVnVDEsIEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCmluZGV4IDAyNGRkZjBhZjY3NzJiODVjZjQ2NDllOWJhYjI0ZmM0ODY0
MGU1OTYuLjg5ZTViOTEwNDVhNzQ0YzkyY2MzOTA5MDA3MDVkNjA2MDJhMzgzMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKQEAgLTQ1LDE0ICs0
NSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1FeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxw
ZXJzOjpleGVjdXRhYmxlRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luKQotewotICAgIGF1dG8qIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKCk7Ci0gICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIHJl
dHVybiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwotICAgIHJldHVybiBpbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKLX0KLQogQXNzZW1i
bHlIZWxwZXJzOjpKdW1wIEFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZGYXN0VHlwZWRBcnJheShH
UFJSZWcgYmFzZUdQUikKIHsKICAgICByZXR1cm4gYnJhbmNoMzIoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAppbmRleCBlN2FkNDVmMzliZTk5ODcwYWE4YzQw
YzllOGUzOGM0YjA2ZTRhNWEyLi4zMjM1ZWIwZmNhNTZjMTRjYjE4NjRiZDA3OTgzNWUzNjkxNjc4
NzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAg
LTE1MzcsMTMgKzE1MzcsNiBAQCBjbGFzcyBBc3NlbWJseUhlbHBlcnMgOiBwdWJsaWMgTWFjcm9B
c3NlbWJsZXIgewogICAgIHZvaWQgY2xlYXJTYW1wbGluZ0ZsYWcoaW50MzJfdCBmbGFnKTsKICNl
bmRpZgogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4pCi0gICAgewotICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKTsKLSAgICB9Ci0gICAgCi0gICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGVGb3IoQ29kZUJsb2NrKiwgY29uc3QgQ29kZU9yaWdpbiYpOwotICAgIAogICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2Vs
aW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggYjRiOWMzYzBhMWZhNmYyMzdmY2Nh
MDRiMmE4NzdiZjIzNGU2YWE2Mi4uN2Q1MjcyYTZjNDZhNmJhMzI4NjFmN2VjY2M2ZTgyODhhNWEy
MDIwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC02OSw2
ICs2OSwxMCBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsK
ICAgICAgICAgR1BSUmVnIG1fZ3ByOwogICAgIH07CiAKKyAgICAvLyBCYXNlIGNsYXNzIGZvciBj
b25zdGFudCBtYXRlcmlhbGl6ZXJzLgorICAgIC8vIEl0IG9mZmVycyBEZXJpdmVkQ2xhc3M6Om1h
dGVyaWFsaXplIGFuZCBwb2tlIGZ1bmN0aW9ucy4KKyAgICBjbGFzcyBDb25zdGFudE1hdGVyaWFs
aXplciB7IH07CisKICAgICAvLyBUaGUgbW9zdCBnZW5lcmFsIGhlbHBlciBmb3Igc2V0dGluZyBh
cmd1bWVudHMgdGhhdCBmaXQgaW4gYSBHUFIsIGlmIHlvdSBjYW4gY29tcHV0ZSBlYWNoCiAgICAg
Ly8gYXJndW1lbnQgd2l0aG91dCB1c2luZyBhbnkgYXJndW1lbnQgcmVnaXN0ZXJzLiBZb3UgdXN1
YWxseSB3YW50IG9uZSBvZiB0aGUgc2V0dXBBcmd1bWVudHMqKCkKICAgICAvLyBtZXRob2RzIGJl
bG93IGluc3RlYWQgb2YgdGhpcy4gVGhpcyB0aGluZyBpcyBtb3N0IHVzZWZ1bCBpZiB5b3UgaGF2
ZSAqYSBsb3QqIG9mIGFyZ3VtZW50cy4KQEAgLTM2NSw3ICszNjksMTAgQEAgY2xhc3MgQ0NhbGxI
ZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVscGVycyB7CiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHBva2VGb3JBcmd1bWVudChBcmdUeXBlIGFyZywgdW5zaWduZWQgY3VycmVudEdQUkFyZ3VtZW50
LCB1bnNpZ25lZCBjdXJyZW50RlBSQXJndW1lbnQsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywg
dW5zaWduZWQgZXh0cmFHUFJBcmdzLCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRy
YVBva2UpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBwb2tlT2Zmc2V0ID0gY2FsY3VsYXRlUG9r
ZU9mZnNldChjdXJyZW50R1BSQXJndW1lbnQsIGN1cnJlbnRGUFJBcmd1bWVudCwgbnVtQ3Jvc3NT
b3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFyZ0dQUnMsIGV4dHJhUG9rZSk7Ci0gICAgICAgIHBv
a2UoYXJnLCBwb2tlT2Zmc2V0KTsKKyAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OmlzX2Jhc2Vf
b2ZfdjxDb25zdGFudE1hdGVyaWFsaXplciwgQXJnVHlwZT4pCisgICAgICAgICAgICBhcmcucG9r
ZSgqdGhpcywgYWRkcmVzc0ZvclBva2UocG9rZU9mZnNldCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwb2tlKGFyZywgcG9rZU9mZnNldCk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSBib29sIHN0YWNrQWxpZ25lZCh1bnNpZ25lZCBjdXJyZW50R1BSQXJndW1lbnQsIHVuc2lnbmVk
IGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBl
eHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSkKQEAg
LTY0Nyw2ICs2NTQsMjcgQEAgY2xhc3MgQ0NhbGxIZWxwZXJzIDogcHVibGljIEFzc2VtYmx5SGVs
cGVycyB7CiAgICAgICAgIHNldHVwQXJndW1lbnRzSW1wbDxPcGVyYXRpb25UeXBlPihhcmdTb3Vy
Y2VSZWdzLCBUcnVzdGVkSW1tUHRyKGFyZy5nZXQoKSksIGFyZ3MuLi4pOwogICAgIH0KIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlvblR5cGUsIHVuc2lnbmVkIG51bUdQUkFyZ3MsIHVu
c2lnbmVkIG51bUdQUlNvdXJjZXMsIHVuc2lnbmVkIG51bUZQUkFyZ3MsIHVuc2lnbmVkIG51bUZQ
UlNvdXJjZXMsIHVuc2lnbmVkIG51bUNyb3NzU291cmNlcywgdW5zaWduZWQgZXh0cmFHUFJBcmdz
LCB1bnNpZ25lZCBub25BcmdHUFJzLCB1bnNpZ25lZCBleHRyYVBva2UsIHR5cGVuYW1lIEFyZywg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICBBTFdBWVNfSU5MSU5FIHN0ZDo6ZW5hYmxlX2lmX3Q8c3Rk
Ojppc19iYXNlX29mX3Y8Q29uc3RhbnRNYXRlcmlhbGl6ZXIsIEFyZz4+CisgICAgc2V0dXBBcmd1
bWVudHNJbXBsKEFyZ0NvbGxlY3Rpb248bnVtR1BSQXJncywgbnVtR1BSU291cmNlcywgbnVtRlBS
QXJncywgbnVtRlBSU291cmNlcywgbnVtQ3Jvc3NTb3VyY2VzLCBleHRyYUdQUkFyZ3MsIG5vbkFy
Z0dQUnMsIGV4dHJhUG9rZT4gYXJnU291cmNlUmVncywgQXJnIGFyZywgQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19mbG9hdGluZ19wb2ludDxDVVJS
RU5UX0FSR1VNRU5UX1RZUEU+Ojp2YWx1ZSwgIldlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGZs
b2F0cy9kb3VibGVzIGluIHNldHVwQXJndW1lbnRzIik7CisgICAgICAgIGF1dG8gbnVtQXJnUmVn
aXN0ZXJzID0gR1BSSW5mbzo6bnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVyczsKKyNpZiBPUyhXSU5E
T1dTKSAmJiBDUFUoWDg2XzY0KQorICAgICAgICBhdXRvIGN1cnJlbnRBcmdDb3VudCA9IG51bUdQ
UkFyZ3MgKyBudW1GUFJBcmdzICsgKHN0ZDo6aXNfc2FtZTxSRVNVTFRfVFlQRSwgU2xvd1BhdGhS
ZXR1cm5UeXBlPjo6dmFsdWUgPyAxIDogMCk7CisjZWxzZQorICAgICAgICBhdXRvIGN1cnJlbnRB
cmdDb3VudCA9IG51bUdQUkFyZ3MgKyBleHRyYUdQUkFyZ3M7CisjZW5kaWYKKyAgICAgICAgaWYg
KGN1cnJlbnRBcmdDb3VudCA8IG51bUFyZ1JlZ2lzdGVycykgeworICAgICAgICAgICAgc2V0dXBB
cmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJjZVJlZ3MuYWRkR1BSQXJnKCksIGFy
Z3MuLi4pOworICAgICAgICAgICAgYXJnLm1hdGVyaWFsaXplKCp0aGlzLCBHUFJJbmZvOjp0b0Fy
Z3VtZW50UmVnaXN0ZXIoY3VycmVudEFyZ0NvdW50KSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBwb2tlRm9yQXJndW1lbnQoYXJnLCBudW1HUFJBcmdzLCBudW1G
UFJBcmdzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQ
b2tlKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlvblR5cGU+KGFyZ1NvdXJj
ZVJlZ3MuYWRkR1BSQXJnKCksIGFyZ3MuLi4pOworICAgIH0KKwogI3VuZGVmIENVUlJFTlRfQVJH
VU1FTlRfVFlQRQogI3VuZGVmIFJFU1VMVF9UWVBFCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJ
bmZvLmgKaW5kZXggMWViMDVhZjQxZWY1YTVhZDU4NDRkMWY2YTRjYjZlYWI1OTIzZDdiOS4uZDBi
YjQzNTBjMjA4MWI1NjdlNDliZmI1M2YwM2E3MmQ1MGIyY2U4MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgKQEAgLTQyMCwxMyArNDIwLDE0IEBAIGNsYXNzIEdQUkluZm8gewogY2xh
c3MgR1BSSW5mbyB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSAxMTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gMTA7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJzID0gTlVN
QkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUzsKIAogICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRj
aCB0aGUgYmFzZWxpbmUgSklULgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFt
ZVJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjplYnA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgbnVtYmVyVGFnUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OnIxNDsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBub3RDZWxsTWFza1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBYODZSZWdpc3Rl
cnM6OnIxMzsKIAogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsKQEAgLTQ1MCwxNiArNDUxLDE2
IEBAIGNsYXNzIEdQUkluZm8gewogCiAjaWYgIU9TKFdJTkRPV1MpCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1MxID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjpyMTM7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTU7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjpyMTM7IC8vIGNvbnN0YW50c1JlZ2lz
dGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpy
MTQ7IC8vIG51bWJlclRhZ1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVn
Q1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTU7IC8vIG5vdENlbGxNYXNrUmVnaXN0ZXIKICNlbHNlCiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxID0gWDg2UmVnaXN0ZXJzOjplc2k7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MyID0gWDg2UmVnaXN0ZXJzOjplZGk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MzID0gWDg2UmVnaXN0ZXJzOjpyMTI7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTM7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0gWDg2UmVnaXN0ZXJzOjpyMTQ7Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gWDg2UmVnaXN0ZXJzOjpyMTU7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gWDg2UmVnaXN0ZXJzOjpyMTM7IC8v
IGNvbnN0YW50c1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M1ID0g
WDg2UmVnaXN0ZXJzOjpyMTQ7IC8vIG51bWJlclRhZ1JlZ2lzdGVyCisgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M2ID0gWDg2UmVnaXN0ZXJzOjpyMTU7IC8vIG5vdENlbGxNYXNrUmVn
aXN0ZXIKICNlbmRpZgogCiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVz
IGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVy
cy4KQEAgLTQ5Nyw5ICs0OTgsOSBAQCBjbGFzcyBHUFJJbmZvIHsKICAgICB7CiAgICAgICAgIEFT
U0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKICNpZiAhT1MoV0lORE9XUykKLSAgICAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJz
XSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJl
Z1Q3LCByZWdDUzAsIHJlZ0NTMSwgcmVnQ1MyIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwg
cmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ1Q2LCByZWdUNywgcmVnQ1MwLCByZWdDUzEg
fTsKICNlbHNlCi0gICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtu
dW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwg
cmVnVDUsIHJlZ0NTMCwgcmVnQ1MxLCByZWdDUzIsIHJlZ0NTMywgcmVnQ1M0IH07CisgICAgICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10g
PSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUsIHJlZ0NTMCwgcmVn
Q1MxLCByZWdDUzIsIHJlZ0NTMyB9OwogI2VuZGlmCiAgICAgICAgIHJldHVybiByZWdpc3RlckZv
ckluZGV4W2luZGV4XTsKICAgICB9CkBAIC02MzQsNiArNjM1LDcgQEAgY2xhc3MgR1BSSW5mbyB7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBBUk02NFJl
Z2lzdGVyczo6ZnA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0
ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI3OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5v
dENlbGxNYXNrUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI4OworICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIGNvbnN0YW50c1JlZ2lzdGVyID0gQVJNNjRSZWdpc3RlcnM6OngyNjsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBkYXRhVGVtcFJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJs
ZXI6OmRhdGFUZW1wUmVnaXN0ZXI7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWVtb3J5
VGVtcFJlZ2lzdGVyID0gTWFjcm9Bc3NlbWJsZXI6Om1lbW9yeVRlbXBSZWdpc3RlcjsKICAgICAv
LyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgpAQCAtNjYwLDcgKzY2Miw3IEBAIGNsYXNzIEdQUkluZm8g
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNCA9IEFSTTY0UmVnaXN0ZXJzOjp4
MjM7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdD
UzUgPSBBUk02NFJlZ2lzdGVyczo6eDI0OyAvLyBVc2VkIGJ5IEZUTCBvbmx5CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gQVJNNjRSZWdpc3RlcnM6OngyNTsKLSAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBBUk02NFJlZ2lzdGVyczo6eDI2OworICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJzOjp4MjY7IC8vIGNv
bnN0YW50cwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0
ZXJzOjp4Mjc7IC8vIG51bWJlclRhZwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NT
OSA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7IC8vIG5vdENlbGxNYXNrCiAgICAgLy8gVGhlc2UgY29u
c3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50
ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KQEAgLTc3Nyw3ICs3NzksNyBAQCBjbGFzcyBHUFJJ
bmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdU
MTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIg
PSByZWdUMjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzAgPSBNSVBTUmVnaXN0
ZXJzOjpzMDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBNSVBTUmVnaXN0
ZXJzOjpzMTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBNSVBTUmVnaXN0
ZXJzOjpzMTsgLy8gY29uc3RhbnRzCiAKICAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5z
aWduZWQgaW5kZXgpCiAgICAgewpAQCAtODMyLDYgKzgzNCw3IEBAIGNsYXNzIEdQUkluZm8gewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gUklTQ1Y2NFJl
Z2lzdGVyczo6ZnA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0
ZXIgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
bm90Q2VsbE1hc2tSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBjb25zdGFudHNSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6Ongy
NDsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ1QwID0gUklTQ1Y2NFJlZ2lzdGVy
czo6eDEwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ1QxID0gUklTQ1Y2NFJlZ2lz
dGVyczo6eDExOwpAQCAtODU0LDcgKzg1Nyw3IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNCA9IFJJU0NWNjRSZWdpc3RlcnM6OngyMTsKICAgICBz
dGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjI7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M2ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDIz
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IFJJU0NWNjRSZWdpc3RlcnM6
OngyNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzcgPSBSSVNDVjY0UmVnaXN0
ZXJzOjp4MjQ7IC8vIGNvbnN0YW50cwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NT
OCA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNTsgLy8gbnVtYmVyVGFnCiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M5ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2OyAvLyBub3RDZWxsTWFz
awogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTMTAgPSBSSVNDVjY0UmVnaXN0ZXJz
Ojp4Mjc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjM5YjcxYzQ5MDIwZDViNjgx
YTNhY2MxM2VkZmVjMWU3ZjlhYzlmMy4uYjk1YmU1NzIxZGI5ZTgzZGMzZWMwNDRlNDIxNWRkMzEy
Y2E0ODJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjUxLDcgKzI1MSw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgaWYgKG9wY29kZUlE
ICE9IG9wX2NhdGNoKSB7CiAgICAgICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKSwgcmVnVDApOwogICAgICAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJl
Z1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mTWV0YWRhdGFUYWJsZSgpKSwgcmVnVDEpOwotICAgICAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVK
SVREYXRhKCkpLCByZWdUMik7CisgICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCByZWdUMik7CiAKICAgICAgICAgICAgIGF1dG8g
bWV0YWRhdGFPSyA9IGJyYW5jaFB0cihFcXVhbCwgcmVnVDEsIHNfbWV0YWRhdGFHUFIpOwogICAg
ICAgICAgICAgYnJlYWtwb2ludCgpOwpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgSklUOjplbWl0
TWF0ZXJpYWxpemVNZXRhZGF0YUFuZENvbnN0YW50UG9vbFJlZ2lzdGVycygpCiB7CiAgICAgbG9h
ZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayksIHJlZ1QwKTsKICAgICBs
b2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkp
LCBzX21ldGFkYXRhR1BSKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6
b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKCkpLCBzX2NvbnN0YW50
c0dQUik7CiB9CiAKIHZvaWQgSklUOjplbWl0U2F2ZUNhbGxlZVNhdmVzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGZmNDg0MTMxYzZkZmYwZWUyZTljOGQz
MGEzN2FkMWFiYWNlMWRlNjkuLjA2YTcyYTVkM2VjNzEwNDE2NjA2MTczNDA3YzllMTlmZDMxN2Q5
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTAxNSw3
ICsxMDE1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSlNJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIC8vIFNvIHdlIHJlcGxlbmlzaCBpdCBoZXJlLgogICAg
IHsKICAgICAgICAgbG9hZFB0cihhZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayks
IHJlZ1QwKTsKLSAgICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNl
dE9mQmFzZWxpbmVKSVREYXRhKCkpLCBzX2NvbnN0YW50c0dQUik7CisgICAgICAgIGxvYWRQdHIo
QWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHNfY29uc3RhbnRz
R1BSKTsKICAgICB9CiAKICAgICBjYWxsT3BlcmF0aW9uTm9FeGNlcHRpb25DaGVjayhvcGVyYXRp
b25SZXRyaWV2ZUFuZENsZWFyRXhjZXB0aW9uSWZDYXRjaGFibGUsICZ2bSgpKTsKQEAgLTEwMzYs
NiArMTAzNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEpTSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIAogICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgJnZtKCksIG1fYnl0
ZWNvZGVJbmRleC5hc0JpdHMoKSk7CiAgICAgYXV0byBza2lwT1NSRW50cnkgPSBicmFuY2hUZXN0
UHRyKFplcm8sIHJldHVyblZhbHVlR1BSKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIo
cmV0dXJuVmFsdWVHUFIyLCBDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spOwogICAgIGVtaXRSZXN0
b3JlQ2FsbGVlU2F2ZXMoKTsKICAgICBmYXJKdW1wKHJldHVyblZhbHVlR1BSLCBFeGNlcHRpb25I
YW5kbGVyUHRyVGFnKTsKICAgICBza2lwT1NSRW50cnkubGluayh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGViMzgzNzBjYjkxNjI4ODVh
MTk3N2YxN2JmMzliN2Y1ZDcwZTk0OGMuLjkyZDQ2MGY2NmM1MWM4MWE4MGFhMGFiNWY1NjExYTk0
MGJmMGRmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cApAQCAtMjA4NCw3ICsyMDg0LDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
bk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5cGUsIChWTSogdm1Qb2ludGVyLAogICAgIHJldHVy
biBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKLUpTQ19ERUZJTkVfSklUX09Q
RVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUsIGNoYXIq
LCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpKQorSlNDX0RFRklO
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmls
ZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJ
bmRleEJpdHMpKQogewogICAgIFZNJiB2bSA9ICp2bVBvaW50ZXI7CiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwpAQCAtMjA5NCwxMyArMjA5NCwxMyBA
QCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5k
VmFsdWVQcm9maWxlLCBjaGFyKiwgKFZNKgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKTsKICAgICBDb2RlQmxvY2sqIG9wdGltaXplZFJlcGxhY2VtZW50
ID0gY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpOwogICAgIGlmIChVTkxJS0VMWSghb3B0aW1pemVk
UmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKIAogICAgIHN3aXRjaCAob3B0aW1pemVkUmVw
bGFjZW1lbnQtPmppdFR5cGUoKSkgewogICAgIGNhc2UgSklUVHlwZTo6REZHSklUOgogICAgIGNh
c2UgSklUVHlwZTo6RlRMSklUOiB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxFeGNl
cHRpb25IYW5kbGVyUHRyVGFnPiBlbnRyeSA9IERGRzo6cHJlcGFyZUNhdGNoT1NSRW50cnkodm0s
IGNhbGxGcmFtZSwgY29kZUJsb2NrLCBvcHRpbWl6ZWRSZXBsYWNlbWVudCwgYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgICAgIHJldHVybiBlbnRyeS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4oKTsKKyAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChlbnRyeS5leGVjdXRhYmxlQWRkcmVzczxjaGFyKj4o
KSwgb3B0aW1pemVkUmVwbGFjZW1lbnQpOwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKQEAgLTIxMTMsNyArMjExMyw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUsIGNoYXIqLCAoVk0qCiAgICAg
ICAgIHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxGcmFtZS0+dW5j
aGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKICAgICB9KTsKIAotICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApp
bmRleCBiOWU4MzBjYWQzYjNkNWYzYTQzMjAzMzkyYjRkNzdhNmMwOTE0OThiLi5kMTE5MzJhYTdk
ZjAxMjhmMDhlM2IwMWJjMWU4MjBkOTZmMDk1M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMjYwLDcgKzI2MCw3IEBAIEpTQ19ERUNMQVJFX0pJVF9P
UEVSQVRJT04ob3BlcmF0aW9uVGhyb3csIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEVuY29kZWRK
U1ZhbHVlCiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkRlYnVnLCB2b2lkLCAo
Vk0qLCBpbnQzMl90KSk7CiAjaWYgRU5BQkxFKERGR19KSVQpCiBKU0NfREVDTEFSRV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvbk9wdGltaXplLCBTbG93UGF0aFJldHVyblR5cGUsIChWTSosIHVpbnQz
Ml90KSk7Ci1KU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRD
YXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChWTSosIHVpbnQzMl90KSk7CitKU0NfREVDTEFS
RV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmls
ZSwgU2xvd1BhdGhSZXR1cm5UeXBlLCAoVk0qLCB1aW50MzJfdCkpOwogI2VuZGlmCiBKU0NfREVD
TEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEdldHRlckJ5SWQsIHZvaWQsIChKU0dsb2Jh
bE9iamVjdCosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwgaW50MzJfdCBvcHRpb25zLCBK
U0NlbGwqKSk7CiBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFNldHRlckJ5
SWQsIHZvaWQsIChKU0dsb2JhbE9iamVjdCosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKiwg
aW50MzJfdCBvcHRpb25zLCBKU0NlbGwqKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlZ2lzdGVyU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVn
aXN0ZXJTZXQuY3BwCmluZGV4IGIyZWZmNjUyNGM0YjI2ZWM2OTg1YjI5NWRkZjQxYTViNDc1MjE0
NDIuLjFjMzEyNzU0ZDBjMzlhMjFhYjYwMGQ3NmVhNWM5NWQ1OWVjZGM2YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCkBAIC0yMDAsMTYgKzIwMCwxOCBAQCBS
ZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhbGxlZVNhdmVSZWdpc3RlcnMo
KQogI2VsaWYgQ1BVKFg4Nl82NCkKICNpZiAhT1MoV0lORE9XUykKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMSk7Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOworICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MyID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVy
KTsKICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTMyA9PSBHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3Rlcik7CiAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTNCk7CiAjZWxzZQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZv
OjpyZWdDUzQgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwogICAgIHN0YXRpY19hc3Nl
cnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKICAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzUpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRp
ZgpAQCAtMjE4LDkgKzIyMCwxMCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNl
bGluZUNhbGxlZVNhdmVSZWdpc3RlcnMoKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mx
KTsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCiAgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzYpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKKyAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNyA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7
CiAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOwogICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzkpOwogI2Vsc2UKQEAgLTIzNiwxNyArMjM5LDIwIEBAIFJlZ2lzdGVyU2V0IFJlZ2lz
dGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICNlbGlmIENQVShYODZfNjQpCiAgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1MxKTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CiAjaWYgIU9TKFdJTkRPV1Mp
CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzIgPT0gR1BSSW5mbzo6Y29uc3RhbnRz
UmVnaXN0ZXIpOwogICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsKICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9
PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86
OnJlZ0NTMik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbHNlCisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKLSAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTNCk7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BS
SW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwogICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVn
Q1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKICAgICBzdGF0aWNfYXNzZXJ0KEdQ
UkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzUp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M2KTsKICNlbmRpZgpAQCAtMjU0LDggKzI2
MCwxMCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6ZGZnQ2FsbGVlU2F2ZVJlZ2lzdGVycygp
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzApOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1MxKTsKICNlbGlmIENQVShBUk02NCkgfHwgQ1BVKFJJU0NWNjQpCisgICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzcgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwog
ICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKTsKICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNyk7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
cmVnQ1M5KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKaW5k
ZXggYzAzMzNkMzQyYjA5YjAzMDQwMTBmNDQ2Mjg0M2ZjMDg5NDgyOWVlNC4uMTUxMTVlZTA3ZDI0
ZjE0YmVlNmRiYWZlNjIyNjJjNjgwMjQ1MDI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaApAQCAtMzk1LDEzICszOTUsMTMgQEAgc3RydWN0IFJlZ2lzdGVycyB7CiAK
ICNpZiBDUFUoWDg2XzY0KSAmJiAhT1MoV0lORE9XUykKICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6cmVnQ1MxOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVnQ1MyOworICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXI7CiAjZWxpZiBDUFUo
WDg2XzY0KSAmJiBPUyhXSU5ET1dTKQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFk
YXRhVGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgcGJHUFIgPSBHUFJJbmZvOjpyZWdDUzQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cGJHUFIgPSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlcjsKICNlbGlmIENQVShBUk02NCkgfHwg
Q1BVKFJJU0NWNjQpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQ
UiA9IEdQUkluZm86OnJlZ0NTNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9
IEdQUkluZm86OnJlZ0NTNzsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQ
UkluZm86OmNvbnN0YW50c1JlZ2lzdGVyOwogI2VsaWYgQ1BVKE1JUFMpIHx8IENQVShBUk1fVEhV
TUIyKQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRhVGFibGVHUFIgPSBHUFJJ
bmZvOjpyZWdDUzA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJHUFIgPSBHUFJJbmZv
OjpyZWdDUzE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggNWQ3OWNmYzg5MDIwYjA1YTRlMTZjODdjY2UwZTUxOTMxZjJh
ODM3ZC4uZmI3ZjY4MDI2OTAzN2RmNmY0MTBkOTk0MjMyMDJhMDk2YTVhNmNjMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtMjU3MCw3ICsyNTcwLDcgQEAgaWYgSklUCiAgICAgbWFjcm8gbG9hZEJhc2VsaW5lSklUQ29u
c3RhbnRQb29sKCkKICAgICAgICAgIyBCYXNlbGluZSB1c2VzIExMSW50J3MgUEIgcmVnaXN0ZXIg
Zm9yIGl0cyBKSVQgY29uc3RhbnQgcG9vbC4KICAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9iYXNlbGluZUpJVERhdGFbUEJdLCBQQgor
ICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1faml0RGF0YVtQQl0sIFBCCiAgICAgZW5kCiAKICAg
ICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxpbmVBZnRlckNoZWNrcG9pbnRFeGl0SWZOZWVkZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggZmJlMmEyMWRjMDc1OTE2NmRkNWMwZTMwM2RkNjhjZWNhODllMDVkOC4uNWFjNjI5M2QwZjcy
NmFhNTE4YTJiMWU0YTNhMzE1MjYxZjkxZjI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC05MjEsNiArOTIxLDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgUmVn
RXhwR2xvYmFsRGF0YSYgcmVnRXhwR2xvYmFsRGF0YSgpIHsgcmV0dXJuIG1fcmVnRXhwR2xvYmFs
RGF0YTsgfQogICAgIHN0YXRpYyBwdHJkaWZmX3QgcmVnRXhwR2xvYmFsRGF0YU9mZnNldCgpIHsg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9yZWdFeHBHbG9iYWxEYXRh
KTsgfQogCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2JhbFRoaXMoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsVGhpcyk7IH0KICAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0oKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNH
bG9iYWxPYmplY3QsIG1fdm0pOyB9CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9i
amVjdCwgbV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQpOyB9CiAgICAgc3RhdGljIHB0cmRpZmZf
dCBvZmZzZXRPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457299</attachid>
            <date>2022-04-11 16:36:16 -0700</date>
            <delta_ts>2022-04-11 17:26:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237863-20220411163615.patch</filename>
            <type>text/plain</type>
            <size>281279</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Zjc3NzE5YTYyNGFkYmYyZjEwMWJjOWNiZTVkZTY4NTZmZDM4YWI4Li5kYWEzMjNhNjhiYTBhM2Y3
OWE0ZGFjNDg4OTQ4MzgzMmYzYWIyODA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzkgQEAKKzIwMjItMDQtMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBVc2UgY29uc3RhbnRzIGJ1ZmZlciBpbiBERkcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzg2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6dHJh
bnNmZXI2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnRyYW5zZmVyUHRy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk02NDo6YnJhbmNoNjQpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTY0OjpicmFuY2hQdHIpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJSSVNDVjY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJSSVND
VjY0Ojp0cmFuc2ZlclB0cik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyUklTQ1Y2NDo6
YnJhbmNoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclJJU0NWNjQ6OmJyYW5jaFB0
cik6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0cmFuc2ZlcjY0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnRyYW5zZmVyUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJYODZfNjQ6OmJyYW5jaDY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZfNjQ6OmJyYW5jaFB0cik6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmFsaXplSklUSW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluZFN0dWJJbmZvKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpyZXNldEJhc2VsaW5lSklURGF0YSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmRQQyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6b2Zmc2V0T2ZKSVREYXRhKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpiYXNlbGluZUpJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNl
dERGR0pJVERhdGEpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRmZ0pJVERhdGEpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Om9mZnNldE9mQmFzZWxpbmVKSVREYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBkZmcvREZHSklUQ29kZS5oOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVTZXR1cFJlZ2lz
dGVyc0ZvckVudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bG9hZFVubGlua2VkQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpzdG9yZVVubGlua2VkQ29u
c3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
OjpVbmxpbmtlZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudDo6bWF0ZXJpYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50Ojpwb2tlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGls
ZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNoVW5saW5rZWRDb25z
dGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtQdHIpOiBE
ZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjphZGRVbmxpbmtlZENvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpQbGFuOjpmaW5hbGl6ZUpJVERhdGEpOgorICAgICAgICAqIGRmZy9ERkdQ
bGFuLmg6CisgICAgICAgICogZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldENhbGxlZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlRGVsZXRlQnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVEZWxldGVCeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbkJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW5CeVZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVIYXNQcml2YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1c2hXaXRoU2NvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU3RyaW5nU2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlVG9Mb3dlckNhc2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3VycmVudEJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNoZWNrVHJhcHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OlRydXN0ZWRJbW1QdHI6OlRydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNl
cHRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hVbmxpbmtl
ZENvbnN0YW50KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xl
Q29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0
RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5v
blBlZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jv
b2xlYW5PYmplY3RPck90aGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoUmFuZG9tKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29t
cGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5vblBl
ZXBob2xlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb21wYXJl
RXFQdHIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Cb29s
ZWFuT2JqZWN0T3JPdGhlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdFVudHlwZWRCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlUmVnRXhwVGVzdElubGluZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdUaHVua3MuY3BwOgorICAgICAgICAoSlND
OjpERkc6Om9zckVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9Bc3NlbWJseUhl
bHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3Ip
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpnbG9iYWxPYmplY3RGb3IpOiBEZWxldGVkLgorICAgICAgICAq
IGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpwb2tlRm9y
QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwQXJndW1lbnRzSW1w
bCk6CisgICAgICAgICogaml0L0dQUkluZm8uaDoKKyAgICAgICAgKEpTQzo6R1BSSW5mbzo6dG9S
ZWdpc3Rlcik6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdE1hdGVyaWFsaXpl
TWV0YWRhdGFBbmRDb25zdGFudFBvb2xSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9KSVRPcGNv
ZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAgICAgICAgKiBq
aXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSklUX09QRVJB
VElPTik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvUmVn
aXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNh
bGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6ZGZnQ2FsbGVl
U2F2ZVJlZ2lzdGVycyk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6CisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6b2Zmc2V0T2ZHbG9iYWxU
aGlzKToKKwogMjAyMi0wNC0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIFtKU0NdIFJlZHVjZSB1c2Ugb2YgdW5uZWNlc3NhcnkgY3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb20gbnVtYmVycwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAppbmRleCBlOTY3ZjJjNzFmMmJlNDYwZDdkOWNmMWIy
MTI1ZmFlNjJmZjlkYTRhLi44YTM4YjU3ZDczYjA1N2U2ZGVhNDc0NjdmZjAwYzM2ZTBjNmJiNWQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNNjQuaApAQCAtMTk2Miw2ICsxOTYyLDE3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAg
ICAgc3RvcmU2NChkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lk
IHRyYW5zZmVyNjQoQWRkcmVzcyBzcmMsIEFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIGxv
YWQ2NChzcmMsIGdldENhY2hlZERhdGFUZW1wUmVnaXN0ZXJJREFuZEludmFsaWRhdGUoKSk7Cisg
ICAgICAgIHN0b3JlNjQoZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5kSW52YWxpZGF0ZSgp
LCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICB0cmFuc2ZlcjY0KHNyYywgZGVzdCk7CisgICAgfQor
CiAgICAgRGF0YUxhYmVsMzIgc3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJ
RCBzcmMsIEFkZHJlc3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGxhYmVs
KHRoaXMpOwpAQCAtMzM0Niw2ICszMzU3LDE5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNNjQg
OiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0
dXJuIGJyYW5jaDY0KGNvbmQsIG1lbW9yeVRlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAor
ICAgIEp1bXAgYnJhbmNoNjQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQs
IEFkZHJlc3MgcmlnaHQpCisgICAgeworICAgICAgICAvLyBsb2FkNjQgY2xvYmJlcnMgbWVtb3J5
VGVtcFJlZ2lzdGVyLCB0aHVzIHdlIHNob3VsZCBmaXJzdCB1c2UgZGF0YVRlbXBSZWdpc3RlciBo
ZXJlLgorICAgICAgICBsb2FkNjQobGVmdCwgZ2V0Q2FjaGVkRGF0YVRlbXBSZWdpc3RlcklEQW5k
SW52YWxpZGF0ZSgpKTsKKyAgICAgICAgLy8gQW5kIGJyYW5jaDY0IHdpbGwgdXNlIG1lbW9yeVRl
bXBSZWdpc3RlciB0byBsb2FkIHJpZ2h0IHRvIGEgcmVnaXN0ZXIuCisgICAgICAgIHJldHVybiBi
cmFuY2g2NChjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIEFkZHJl
c3MgcmlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmln
aHQpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewogICAgICAgICByZXR1
cm4gYnJhbmNoNjQoY29uZCwgbGVmdCwgcmlnaHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJSSVNDVjY0LmgKaW5kZXggNTZkNGVj
YmVjYzkwYzc2ODgxMjc2NDJkNDcxMmYzNzhlNDUwYWUzMS4uMWFmNzI4YzcwNWQ4NmRjNjgyNDlm
MGNmZmY3ZjMxMWVhOWI0ZjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NWNjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oCkBAIC0xMTczLDYgKzExNzMsMTgg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJSSVNDVjY0IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNkSW5zbih0ZW1wLm1lbW9y
eSgpLCBpbW1SZWdpc3RlciwgSW1tOjpTPDA+KCkpOwogICAgIH0KIAorICAgIHZvaWQgdHJhbnNm
ZXI2NChBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgYXV0byB0ZW1w
ID0gdGVtcHM8RGF0YT4oKTsKKyAgICAgICAgbG9hZDY0KHNyYywgdGVtcC5kYXRhKCkpOworICAg
ICAgICBzdG9yZTY0KHRlbXAuZGF0YSgpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5z
ZmVyUHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICB0cmFuc2Zl
cjY0KHNyYywgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzdG9yZVBhaXIzMihSZWdpc3RlcklE
IHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
c3RvcmVQYWlyMzIoc3JjMSwgc3JjMiwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKQEAgLTIxNTYs
NiArMjE2OCwxNiBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIG1ha2VCcmFuY2go
Y29uZCwgdGVtcC5kYXRhKCksIHJocyk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2g2NChSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7
CisgICAgICAgIGF1dG8gdGVtcCA9IHRlbXBzPERhdGEsIE1lbW9yeT4oKTsKKyAgICAgICAgYXV0
byBsZWZ0UmVzb2x1dGlvbiA9IHJlc29sdmVBZGRyZXNzKGxlZnQsIHRlbXAubWVtb3J5KCkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5sZEluc24odGVtcC5kYXRhKCksIGxlZnRSZXNvbHV0aW9uLmJh
c2UsIEltbTo6SShsZWZ0UmVzb2x1dGlvbi5vZmZzZXQpKTsKKyAgICAgICAgYXV0byByaWdodFJl
c29sdXRpb24gPSByZXNvbHZlQWRkcmVzcyhyaWdodCwgdGVtcC5tZW1vcnkoKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxkSW5zbih0ZW1wLm1lbW9yeSgpLCByaWdodFJlc29sdXRpb24uYmFzZSwg
SW1tOjpJKHJpZ2h0UmVzb2x1dGlvbi5vZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VCcmFu
Y2goY29uZCwgdGVtcC5kYXRhKCksIHRlbXAubWVtb3J5KCkpOworICAgIH0KKwogICAgIEp1bXAg
YnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwg
QmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBpbW0pCiAgICAgewogICAgICAgICByZXR1
cm4gYnJhbmNoMzIoY29uZCwgYWRkcmVzcywgaW1tKTsKQEAgLTI2NDcsNiArMjY2OSwxMSBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlclJJU0NWNjQgOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxBc3NlbWJsZXI+IHsKICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGFkZHJlc3MsIHJo
cyk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIEFkZHJlc3MgcmlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gYnJh
bmNoNjQoY29uZCwgbGVmdCwgcmlnaHQpOworICAgIH0KKwogICAgIERhdGFMYWJlbDMyIG1vdmVX
aXRoUGF0Y2goVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgUklTQ1Y2NEFzc2VtYmxlcjo6SW1tZWRpYXRlTG9hZGVyIGltbWwoUklTQ1Y2NEFzc2VtYmxl
cjo6SW1tZWRpYXRlTG9hZGVyOjpQbGFjZWhvbGRlciwgaW1tLm1fdmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5o
CmluZGV4IGIyZTkxMWFhMTM2NjNhMjUwOTg0MGEwNTY4ODQxMmYyOTI4ZWY0NjMuLmM3ZmU2Mjc5
NmQwNDE2OWJkZDRiMGI0NDFkNTdkY2E3NzhlYzAwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKQEAgLTEwMjYs
NiArMTAyNiwxNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4Nl82NCA6IHB1YmxpYyBNYWNyb0Fz
c2VtYmxlclg4NkNvbW1vbiB7CiAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnFfcm0oc2NyYXRjaFJlZ2lzdGVyKCksIGFkZHJlc3Mu
b2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAg
IH0KKworICAgIHZvaWQgdHJhbnNmZXI2NChBZGRyZXNzIHNyYywgQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgbG9hZDY0KHNyYywgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBzdG9y
ZTY0KHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsKKyAgICB9CisKKyAgICB2b2lkIHRyYW5zZmVy
UHRyKEFkZHJlc3Mgc3JjLCBBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICB0cmFuc2ZlcjY0
KHNyYywgZGVzdCk7CisgICAgfQogICAgIAogICAgIERhdGFMYWJlbDMyIHN0b3JlNjRXaXRoQWRk
cmVzc09mZnNldFBhdGNoKFJlZ2lzdGVySUQgc3JjLCBBZGRyZXNzIGFkZHJlc3MpCiAgICAgewpA
QCAtMTEzNCw2ICsxMTQ1LDEyIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGlj
IE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uIHsKICAgICAgICAgbV9hc3NlbWJsZXIuY21wcV9ybShy
aWdodCwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRp
b24oY29uZCkpKTsKICAgICB9CisKKyAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBsZWZ0LCBBZGRyZXNzIHJpZ2h0KQorICAgIHsKKyAgICAgICAgbG9h
ZDY0KHJpZ2h0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBicmFuY2g2NChj
b25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgfQogICAgIAogICAgIEp1bXAgYnJh
bmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgUmVn
aXN0ZXJJRCByaWdodCkKICAgICB7CkBAIC0xMTUyLDYgKzExNjksMTEgQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJYODZfNjQgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24gewogICAgICAg
ICByZXR1cm4gYnJhbmNoUHRyKGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
bGVmdCwgQWRkcmVzcyByaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25k
LCBsZWZ0LCByaWdodCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hUZXN0NjQoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci50ZXN0cV9ycihyZWcsIG1hc2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA5YTIxYjcwYmEyNzEyNDViNmEyNzBh
N2IyZDgzMDk1NWM2ZGU4MTk1Li4yZDk5OTkyNmU2NmFmODk1ZDQ5ODEzY2QxNDdlYzUyNGRlNmQw
NGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtNzczLDkgKzc3Myw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2Vs
aW5lQ29kZShSZWY8QmFzZWxpbmVKSVRDb2RlPiBqaXRDb2RlKQogCiAgICAgewogICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgIEFTU0VSVCghbV9iYXNl
bGluZUpJVERhdGEpOwotICAgICAgICBtX2Jhc2VsaW5lSklURGF0YSA9IEJhc2VsaW5lSklURGF0
YTo6Y3JlYXRlKGppdENvZGUtPm1fY29uc3RhbnRQb29sLnNpemUoKSk7Ci0gICAgICAgIG1fYmFz
ZWxpbmVKSVREYXRhLT5tX3N0dWJJbmZvcyA9IEZpeGVkVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZv
PihqaXRDb2RlLT5tX3VubGlua2VkU3R1YkluZm9zLnNpemUoKSk7CisgICAgICAgIEFTU0VSVCgh
bV9qaXREYXRhKTsKKyAgICAgICAgYXV0byBiYXNlbGluZUpJVERhdGEgPSBCYXNlbGluZUpJVERh
dGE6OmNyZWF0ZShqaXRDb2RlLT5tX2NvbnN0YW50UG9vbC5zaXplKCkpOworICAgICAgICBiYXNl
bGluZUpJVERhdGEtPm1fc3R1YkluZm9zID0gRml4ZWRWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+
KGppdENvZGUtPm1fdW5saW5rZWRTdHViSW5mb3Muc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRv
JiB1bmxpbmtlZENhbGxMaW5rSW5mbyA6IGppdENvZGUtPm1fdW5saW5rZWRDYWxscykgewogICAg
ICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBnZXRDYWxsTGlua0luZm9Gb3JC
eXRlY29kZUluZGV4KGxvY2tlciwgdW5saW5rZWRDYWxsTGlua0luZm8uYnl0ZWNvZGVJbmRleCk7
CiAgICAgICAgICAgICBBU1NFUlQoY2FsbExpbmtJbmZvKTsKQEAgLTc4NiwyOCArNzg2LDI5IEBA
IHZvaWQgQ29kZUJsb2NrOjpzZXR1cFdpdGhVbmxpbmtlZEJhc2VsaW5lQ29kZShSZWY8QmFzZWxp
bmVKSVRDb2RlPiBqaXRDb2RlKQogICAgICAgICAgICAgYXV0byBlbnRyeSA9IGppdENvZGUtPm1f
Y29uc3RhbnRQb29sLmF0KGkpOwogICAgICAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKCkpIHsK
ICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBlOjpHbG9iYWxPYmplY3Q6Ci0g
ICAgICAgICAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPmF0KGkpID0gbV9nbG9iYWxPYmplY3Qu
Z2V0KCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5hdChpKSA9IG1fZ2xvYmFs
T2JqZWN0LmdldCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBK
SVRDb25zdGFudFBvb2w6OlR5cGU6OlN0cnVjdHVyZVN0dWJJbmZvOiB7CiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW5kZXggPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihlbnRyeS5wb2ludGVy
KCkpOwogICAgICAgICAgICAgICAgIFVubGlua2VkU3RydWN0dXJlU3R1YkluZm8mIHVubGlua2Vk
U3R1YkluZm8gPSBqaXRDb2RlLT5tX3VubGlua2VkU3R1YkluZm9zW2luZGV4XTsKLSAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBtX2Jhc2VsaW5lSklURGF0YS0+
bV9zdHViSW5mb3NbaW5kZXhdOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbyA9IGJhc2VsaW5lSklURGF0YS0+bV9zdHViSW5mb3NbaW5kZXhdOwogICAgICAgICAg
ICAgICAgIHN0dWJJbmZvLmluaXRpYWxpemVGcm9tVW5saW5rZWRTdHJ1Y3R1cmVTdHViSW5mbyh0
aGlzLCB1bmxpbmtlZFN0dWJJbmZvKTsKLSAgICAgICAgICAgICAgICBtX2Jhc2VsaW5lSklURGF0
YS0+YXQoaSkgPSAmc3R1YkluZm87CisgICAgICAgICAgICAgICAgYmFzZWxpbmVKSVREYXRhLT5h
dChpKSA9ICZzdHViSW5mbzsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBlOjpGdW5jdGlvbkRlY2w6IHsK
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KGVudHJ5LnBvaW50ZXIoKSk7Ci0gICAgICAgICAgICAgICAgbV9iYXNlbGluZUpJVERhdGEtPmF0
KGkpID0gZnVuY3Rpb25EZWNsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZUpJVERh
dGEtPmF0KGkpID0gZnVuY3Rpb25EZWNsKGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgSklUQ29uc3RhbnRQb29sOjpUeXBlOjpG
dW5jdGlvbkV4cHI6IHsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KGVudHJ5LnBvaW50ZXIoKSk7Ci0gICAgICAgICAgICAgICAgbV9iYXNl
bGluZUpJVERhdGEtPmF0KGkpID0gZnVuY3Rpb25FeHByKGluZGV4KTsKKyAgICAgICAgICAgICAg
ICBiYXNlbGluZUpJVERhdGEtPmF0KGkpID0gZnVuY3Rpb25FeHByKGluZGV4KTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQor
ICAgICAgICBtX2ppdERhdGEgPSBiYXNlbGluZUpJVERhdGEucmVsZWFzZSgpOwogICAgIH0KIAog
ICAgIHN3aXRjaCAoY29kZVR5cGUoKSkgewpAQCAtODkyLDIwICs4OTMsMjQgQEAgQ29kZUJsb2Nr
Ojp+Q29kZUJsb2NrKCkKICAgICAvLyBkZXN0cnVjdG9ycy4KIAogI2lmIEVOQUJMRShKSVQpCi0g
ICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAg
ICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKLSAgICAgICAg
ICAgIHN0dWJJbmZvLmFib3V0VG9EaWUoKTsKLSAgICAgICAgICAgIHN0dWJJbmZvLmRlcmVmKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6
OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
ICAgIGZvciAoYXV0byogc3R1YkluZm8gOiBqaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5tX3N0dWJJ
bmZvcykgewogICAgICAgICAgICAgc3R1YkluZm8tPmFib3V0VG9EaWUoKTsKICAgICAgICAgICAg
IHN0dWJJbmZvLT5kZXJlZigpOwogICAgICAgICB9Ci0gICAgfQorICAgICAgICBpZiAobV9qaXRE
YXRhKQorICAgICAgICAgICAgZGVsZXRlIGJpdHdpc2VfY2FzdDxERkc6OkRGR0pJVERhdGEqPiht
X2ppdERhdGEpOwogI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERh
dGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5m
byA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7CisgICAgICAgICAgICAgICAgc3R1YkluZm8uYWJv
dXRUb0RpZSgpOworICAgICAgICAgICAgICAgIHN0dWJJbmZvLmRlcmVmKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkZWxldGUgaml0RGF0YTsKKyAgICAgICAgfQorICAgIH0KICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQogfQogCkBAIC0xMjMzLDE4ICsxMjM4LDE3IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBWaXNp
dG9yJiB2aXNpdG9yCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6
aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxp
bmVKSVREYXRhLmdldCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0
RGF0YS0+bV9zdHViSW5mb3MpCi0gICAgICAgICAgICAgICAgc3R1YkluZm8ucHJvcGFnYXRlVHJh
bnNpdGlvbnModmlzaXRvcik7Ci0gICAgICAgIH0KLSAgICB9Ci0jaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgICAgIGZvciAoYXV0byogc3R1YkluZm8gOiBqaXRDb2RlKCktPmRm
Z0NvbW1vbigpLT5tX3N0dWJJbmZvcykKICAgICAgICAgICAgIHN0dWJJbmZvLT5wcm9wYWdhdGVU
cmFuc2l0aW9ucyh2aXNpdG9yKTsKLSAgICB9CiAjZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAg
ICBpZiAoYXV0byogaml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpCisgICAgICAgICAgICAg
ICAgc3R1YkluZm8ucHJvcGFnYXRlVHJhbnNpdGlvbnModmlzaXRvcik7CisgICAgICAgIH0KKyAg
ICB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTE1NzAsMTUgKzE1NzQsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNh
Y2hlcygpCiAjaWYgRU5BQkxFKEpJVCkKIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUpJVElubGlu
ZUNhY2hlcygpCiB7Ci0gICAgaWYgKGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5n
ZXQoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5m
b3MpIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlckJhc2UgbG9ja2VyKE5vTG9ja2lu
Z05lY2Vzc2FyeSk7Ci0gICAgICAgICAgICBzdHViSW5mby52aXNpdFdlYWtSZWZlcmVuY2VzKGxv
Y2tlciwgdGhpcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUt
PmRmZ0NvbW1vbigpOwogICAgICAgICBmb3IgKGF1dG8qIGNhbGxMaW5rSW5mbyA6IGRmZ0NvbW1v
bi0+bV9jYWxsTGlua0luZm9zKQogICAgICAgICAgICAgY2FsbExpbmtJbmZvLT52aXNpdFdlYWso
dm0oKSk7CkBAIC0xNTg2LDggKzE1ODMsMTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplSklU
SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlckJhc2UgbG9ja2Vy
KE5vTG9ja2luZ05lY2Vzc2FyeSk7CiAgICAgICAgICAgICBzdHViSW5mby0+dmlzaXRXZWFrUmVm
ZXJlbmNlcyhsb2NrZXIsIHRoaXMpOwogICAgICAgICB9Ci0gICAgfQogI2VuZGlmCisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgewor
ICAgICAgICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7
CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyQmFzZSBsb2NrZXIoTm9Mb2NraW5n
TmVjZXNzYXJ5KTsKKyAgICAgICAgICAgICAgICBzdHViSW5mby52aXNpdFdlYWtSZWZlcmVuY2Vz
KGxvY2tlciwgdGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiB9CiAjZW5k
aWYKIApAQCAtMTY3NCwxMiArMTY3OCw4IEBAIHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01h
cChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogICAgIH0K
ICNpZiBFTkFCTEUoSklUKQogICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gbV9iYXNlbGluZUpJVERhdGEuZ2V0KCkpIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYWRkKHN0dWJJbmZvLmNvZGVPcmlnaW4sIElDU3RhdHVzKCkp
Lml0ZXJhdG9yLT52YWx1ZS5zdHViSW5mbyA9ICZzdHViSW5mbzsKLSAgICAgICAgfQotI2lmIEVO
QUJMRShERkdfSklUKQogICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5
cGUoKSkpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgICAgIERGRzo6Q29tbW9uRGF0
YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKICAgICAgICAgICAgIGZvciAo
YXV0byogc3R1YkluZm8gOiBkZmdDb21tb24tPm1fc3R1YkluZm9zKQogICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOwpAQCAtMTY5NSw4ICsxNjk1LDEzIEBAIHZvaWQgQ29k
ZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1
c01hcCYgcmVzdWx0KQogICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNT
dGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmluU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMu
ZGVsZXRlcykKICAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVz
KCkpLml0ZXJhdG9yLT52YWx1ZS5kZWxldGVTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKLSAg
ICAgICAgfQogI2VuZGlmCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoYXV0byog
aml0RGF0YSA9IGJhc2VsaW5lSklURGF0YSgpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRv
JiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkKHN0dWJJbmZvLmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1
ZS5zdHViSW5mbyA9ICZzdHViSW5mbzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0K
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CkBAIC0xNzEzLDIxICsxNzE4LDIxIEBA
IHZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KQogU3Ry
dWN0dXJlU3R1YkluZm8qIENvZGVCbG9jazo6ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4gY29kZU9y
aWdpbikKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgaWYg
KGF1dG8qIGppdERhdGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICBmb3Ig
KGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+bV9zdHViSW5mb3MpIHsKLSAgICAgICAgICAgIGlm
IChzdHViSW5mby5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCi0gICAgICAgICAgICAgICAgcmV0
dXJuICZzdHViSW5mbzsKLSAgICAgICAgfQotICAgIH0KLQotI2lmIEVOQUJMRShERkdfSklUKQog
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworI2lmIEVOQUJM
RShERkdfSklUKQogICAgICAgICBmb3IgKGF1dG8qIHN0dWJJbmZvIDogaml0Q29kZSgpLT5kZmdD
b21tb24oKS0+bV9zdHViSW5mb3MpIHsKICAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29kZU9y
aWdpbiA9PSBjb2RlT3JpZ2luKQogICAgICAgICAgICAgICAgIHJldHVybiBzdHViSW5mbzsKICAg
ICAgICAgfQotICAgIH0KICNlbmRpZgorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvKiBq
aXREYXRhID0gYmFzZWxpbmVKSVREYXRhKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgc3R1
YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJbmZvcykgeworICAgICAgICAgICAgICAgIGlmIChzdHVi
SW5mby5jb2RlT3JpZ2luID09IGNvZGVPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAmc3R1YkluZm87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKQEAgLTE3NjYsNyArMTc3MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZXNl
dEJhc2VsaW5lSklURGF0YSgpCiAgICAgUkVMRUFTRV9BU1NFUlQoIUpJVENvZGU6OmlzSklUKGpp
dFR5cGUoKSkpOwogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKICAgICAK
LSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRhLmdldCgpKSB7CisgICAg
aWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgewogICAgICAgICAvLyBXZSBj
YW4gY2xlYXIgdGhlc2UgYmVjYXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBoYXZlIHJlZmVyZW5j
ZXMgdG8gYW55IHN0dWIgaW5mb3MsIGNhbGwKICAgICAgICAgLy8gbGluayBpbmZvcywgb3IgYnkg
dmFsIGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRo
ZXNlIGRhdGEKICAgICAgICAgLy8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkg
KGdldElDU3RhdHVzTWFwIGFuZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCkBA
IC0xNzg3LDcgKzE3OTIsNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRCYXNlbGluZUpJVERhdGEo
KQogICAgICAgICAvLyBXZSBjYW4gY2xlYXIgdGhpcyBiZWNhdXNlIHRoZSBERkcncyBxdWVyaWVz
IHRvIHRoZXNlIGRhdGEgc3RydWN0dXJlcyBhcmUgZ3VhcmRlZCBieSB3aGV0aGVyCiAgICAgICAg
IC8vIHRoZXJlIGlzIEpJVCBjb2RlLgogCi0gICAgICAgIG1fYmFzZWxpbmVKSVREYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgbV9qaXREYXRhID0gbnVsbHB0cjsKICAgICB9CiB9CiAjZW5kaWYKQEAg
LTE4MzMsMTkgKzE4MzgsMTkgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdS
ZWZlcmVuY2VzKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLAogICAgIH0pOwogCiAj
aWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoYXV0byogaml0RGF0YSA9IG1fYmFzZWxpbmVKSVREYXRh
LmdldCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc3R1YkluZm8gOiBqaXREYXRhLT5tX3N0dWJJ
bmZvcykKLSAgICAgICAgICAgIHN0dWJJbmZvLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOwotICAg
IH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIERG
Rzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKICAgICAg
ICAgZm9yIChhdXRvKiBzdHViSW5mbyA6IGRmZ0NvbW1vbi0+bV9zdHViSW5mb3MpCiAgICAgICAg
ICAgICBzdHViSW5mby0+dmlzaXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgICAgIGRmZ0NvbW1v
bi0+cmVjb3JkZWRTdGF0dXNlcy52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgdmlz
aXRPU1JFeGl0VGFyZ2V0cyhsb2NrZXIsIHZpc2l0b3IpOworI2VuZGlmCisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKGF1dG8qIGppdERhdGEgPSBiYXNlbGluZUpJVERhdGEoKSkgeworICAgICAg
ICAgICAgZm9yIChhdXRvJiBzdHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKQorICAgICAg
ICAgICAgICAgIHN0dWJJbmZvLnZpc2l0QWdncmVnYXRlKHZpc2l0b3IpOworICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCiB9CkBAIC0zNDYyLDIxICszNDY3LDIyIEBAIHN0ZDo6b3B0aW9uYWw8Q29k
ZU9yaWdpbj4gQ29kZUJsb2NrOjpmaW5kUEModm9pZCogcGMpCiAKICAgICB7CiAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgaWYgKGF1dG8qIGppdERh
dGEgPSBtX2Jhc2VsaW5lSklURGF0YS5nZXQoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBz
dHViSW5mbyA6IGppdERhdGEtPm1fc3R1YkluZm9zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0
dWJJbmZvLmNvbnRhaW5zUEMocGMpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3R1Yklu
Zm8uY29kZU9yaWdpbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2lmIEVOQUJMRShERkdf
SklUKQogICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsK
KyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29t
bW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKICAgICAgICAgICAgIGZvciAoYXV0byogc3R1
YkluZm8gOiBkZmdDb21tb24tPm1fc3R1YkluZm9zKSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0
dWJJbmZvLT5jb250YWluc1BDKHBjKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJ
bmZvLT5jb2RlT3JpZ2luOwogICAgICAgICAgICAgfQotICAgICAgICB9CiAjZW5kaWYKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBqaXREYXRhID0gYmFzZWxpbmVKSVRE
YXRhKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHN0dWJJbmZvIDogaml0RGF0YS0+
bV9zdHViSW5mb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNvbnRhaW5z
UEMocGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0dWJJbmZvLmNvZGVPcmln
aW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQog
CiAgICAgcmV0dXJuIG1faml0Q29kZS0+ZmluZFBDKHRoaXMsIHBjKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA0OGU0NjUyYWFkMTViNDI0NzM4Y2Fl
ODBjMmI1YzgyNjJhNjAwMDQwLi4zZjc1ZTYzYzljN2EwYWIyMGYyOTAzYzFhZGFiYzJhM2MyNmMy
NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC03
OSw2ICs3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjaWYgRU5BQkxFKERGR19KSVQpCiBuYW1l
c3BhY2UgREZHIHsKK2NsYXNzIERGR0pJVERhdGE7CiBzdHJ1Y3QgT1NSRXhpdFN0YXRlOwogfSAv
LyBuYW1lc3BhY2UgREZHCiAjZW5kaWYKQEAgLTI0NSw3ICsyNDYsNyBAQCBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHN0ZDo6b3B0aW9uYWw8Qnl0ZWNvZGVJbmRleD4g
Ynl0ZWNvZGVJbmRleEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOwogCi0gICAgLy8g
QmVjYXVzZSB3ZSBtaWdodCB0aHJvdyBvdXQgYmFzZWxpbmUgSklUIGNvZGUgYW5kIGFsbCBpdHMg
YmFzZWxpbmUgSklUIGRhdGEgKG1fYmFzZWxpbmVKSVREYXRhKSwKKyAgICAvLyBCZWNhdXNlIHdl
IG1pZ2h0IHRocm93IG91dCBiYXNlbGluZSBKSVQgY29kZSBhbmQgYWxsIGl0cyBiYXNlbGluZSBK
SVQgZGF0YSAobV9qaXREYXRhKSwKICAgICAvLyB5b3UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0
IHRoZSBsaWZldGltZSBvZiB3aGVuIHlvdSB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIGZ1
bmN0aW9uLgogICAgIC8vIFRoZSByZXR1cm4gdmFsdWUgbWF5IGhhdmUgcmF3IHBvaW50ZXJzIGlu
dG8gdGhpcyBkYXRhIHN0cnVjdHVyZSB0aGF0IGdldHMgdGhyb3duIGF3YXkuCiAgICAgLy8gU3Bl
Y2lmaWNhbGx5LCB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBubyBHQyBjYW4gYmUgZmluYWxpemVk
ICh0eXBpY2FsbHkgdGhhdCBtZWFucyBubwpAQCAtMjU2LDcgKzI1Nyw3IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogI2lmIEVOQUJMRShKSVQpCiAgICAgdm9pZCBzZXR1cFdp
dGhVbmxpbmtlZEJhc2VsaW5lQ29kZShSZWY8QmFzZWxpbmVKSVRDb2RlPik7CiAKLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mQmFzZWxpbmVKSVREYXRhKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKENvZGVCbG9jaywgbV9iYXNlbGluZUpJVERhdGEpOyB9CisgICAgc3RhdGljIHB0cmRp
ZmZfdCBvZmZzZXRPZkpJVERhdGEoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29kZUJsb2Nr
LCBtX2ppdERhdGEpOyB9CiAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkT3B0aW1pemluZ1N0
dWJJbmZvKEFjY2Vzc1R5cGUsIENvZGVPcmlnaW4pOwogCkBAIC01MzAsOSArNTMxLDI1IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYmFz
ZWxpbmVTdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpOwogICAgIEJhc2VsaW5l
SklURGF0YSogYmFzZWxpbmVKSVREYXRhKCkKICAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGppdFR5cGUoKSA9PSBKSVRUeXBlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIHJldHVybiBtX2Jh
c2VsaW5lSklURGF0YS5nZXQoKTsKKyAgICAgICAgaWYgKCFKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoaml0VHlwZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8QmFzZWxpbmVK
SVREYXRhKj4obV9qaXREYXRhKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorCisj
aWYgRU5BQkxFKERGR19KSVQpCisgICAgdm9pZCBzZXRERkdKSVREYXRhKHN0ZDo6dW5pcXVlX3B0
cjxERkc6OkRGR0pJVERhdGE+JiYgaml0RGF0YSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9q
aXREYXRhKTsKKyAgICAgICAgbV9qaXREYXRhID0gaml0RGF0YS5yZWxlYXNlKCk7CisgICAgfQor
CisgICAgREZHOjpERkdKSVREYXRhKiBkZmdKSVREYXRhKCkKKyAgICB7CisgICAgICAgIGlmIChK
SVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkKKyAgICAgICAgICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8REZHOjpERkdKSVREYXRhKj4obV9qaXREYXRhKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorI2VuZGlmCiAjZW5kaWYKICAgICBzaXplX3QgbnVtYmVyT2ZVbmxp
bmtlZFN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVt
YmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgfQogICAgIGNvbnN0IFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlJiB1bmxpbmtlZFN3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBy
ZXR1cm4gbV91bmxpbmtlZENvZGUtPnVubGlua2VkU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgp
OyB9CkBAIC05MzMsNyArOTUwLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgUmVmUHRyPEpJVENvZGU+IG1faml0Q29kZTsKICNpZiBFTkFCTEUoSklUKQogcHVibGlj
OgotICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNlbGluZUpJVERhdGE+IG1fYmFzZWxpbmVKSVREYXRh
OworICAgIHZvaWQqIG1faml0RGF0YSB7IG51bGxwdHIgfTsKIHByaXZhdGU6CiAjZW5kaWYKICNp
ZiBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRl
eCBjZjBiODk4NTQ1ZDFjYTVkZWE5NjM0ZjVmMjI1NzhmNWNiOWU3OWUwLi5mODA4YTdkNDE2OTM4
NjVkODE4YjE1MTE4NmRiYWIzOTk2OWQ1YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdl
bmVyYXRvci5oCkBAIC03NSw3ICs3NSw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhW
YXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvciBmaW5hbCA6IHB1YmxpYyBKdW1waW5nCiBwdWJs
aWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVK
SVQqIGppdCwgUF9KSVRPcGVyYXRpb25fR1N0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBnbG9iYWxPYmplY3QsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgY29udGlndW91c1N0cnVjdHVyZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBh
cnJheVN0b3JhZ2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQg
Z2xvYmFsT2JqZWN0LCBSZWdpc3RlcmVkU3RydWN0dXJlIGNvbnRpZ3VvdXNTdHJ1Y3R1cmUsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdG9yYWdlU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUiwg
R1BSUmVnIHN0b3JhZ2VHUFIpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24o
ZnVuY3Rpb24pCiAgICAgICAgICwgbV9jb250aWd1b3VzU3RydWN0dXJlKGNvbnRpZ3VvdXNTdHJ1
Y3R1cmUpCkBAIC0xMTUsNyArMTE1LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZh
cmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsIDogcHVibGljIEp1bXBpbmcKICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIG1fY29udGlndW91c1N0cnVjdHVyZTsKICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlIG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlOwogICAgIEdQUlJl
ZyBtX3Jlc3VsdEdQUjsKLSAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIgbV9nbG9iYWxP
YmplY3Q7CisgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQgbV9nbG9iYWxPYmplY3Q7
CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwogICAgIFZl
Y3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpAQCAtMTI1LDcgKzEyNSw3
IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxl
U2l6ZVNsb3dQYXRoR2VuZXJhdG9yIGZpbmFsCiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2Nh
dG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IoCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0
LCBQX0pJVE9wZXJhdGlvbl9HU3RaQiBmdW5jdGlvbiwKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIGdsb2JhbE9iamVjdCwgR1BSUmVnIHN0cnVj
dHVyZUdQUiwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BSKQorICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCBnbG9iYWxPYmplY3Qs
IEdQUlJlZyBzdHJ1Y3R1cmVHUFIsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikK
ICAgICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0Pihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAg
LCBtX3Jlc3VsdEdQUihyZXN1bHRHUFIpCkBAIC0xNTIsNyArMTUyLDcgQEAgY2xhc3MgQ2FsbEFy
cmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5l
cmF0b3IgZmluYWwKIAogICAgIFBfSklUT3BlcmF0aW9uX0dTdFpCIG1fZnVuY3Rpb247CiAgICAg
R1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0ciBtX2ds
b2JhbE9iamVjdDsKKyAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCBtX2dsb2JhbE9i
amVjdDsKICAgICBHUFJSZWcgbV9zdHJ1Y3R1cmVHUFI7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsK
ICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
ZGUuaAppbmRleCA0NTNjM2RjZGFlZDFmM2MzYzJhZjE0YjgxMmI4YTIzYTU2ZDExY2EyLi40MDU4
N2U5YWQ1ZWQ5MDUxZDFjMjEwYmNhMWRmZWI4YmI1ZWQxMjRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvZGUuaApAQCAtNDksNiArNDksMjMgQEAgbmFtZXNwYWNlIERGRyB7CiAK
IGNsYXNzIEpJVENvbXBpbGVyOwogCitjbGFzcyBERkdKSVREYXRhIGZpbmFsIDogcHVibGljIFRy
YWlsaW5nQXJyYXk8REZHSklURGF0YSwgdm9pZCo+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBUcmFpbGluZ0FycmF5PERGR0pJVERhdGEsIHZvaWQqPjsKKworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8REZHSklURGF0YT4gY3JlYXRlKHVuc2lnbmVkIHBvb2xT
aXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiB7
IG5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShwb29sU2l6ZSkp
KSBERkdKSVREYXRhKHBvb2xTaXplKSB9OworICAgIH0KKworICAgIGV4cGxpY2l0IERGR0pJVERh
dGEodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBCYXNlKHNpemUpCisgICAgeworICAgIH0KK307
CisKIGNsYXNzIEpJVENvZGUgZmluYWwgOiBwdWJsaWMgRGlyZWN0SklUQ29kZSB7CiBwdWJsaWM6
CiAgICAgSklUQ29kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAppbmRleCAzMTEwMjE1YTU4MzRhMWYzM2RkNmRkZDEwNzJhMzM3MGE4OGZhZThmLi4x
YzgyZTQzYWFmYWE3ZTAzZWE0YWNlOWFjN2Q5ODg2MjdlMTYxOGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcApAQCAtMTE4LDYgKzExOCwxMiBAQCB2
b2lkIEpJVENvbXBpbGVyOjpjb21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSgpCiB7CiAgICAg
ZW1pdFNhdmVDYWxsZWVTYXZlcygpOwogICAgIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0
ZXJzKCk7ICAgIAorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgaWYgKG1fZ3JhcGgubV9wbGFuLmlz
VW5saW5rZWQoKSkgeworICAgICAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2ssIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICAg
ICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyLCBDb2RlQmxvY2s6
Om9mZnNldE9mSklURGF0YSgpKSwgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOworICAgIH0K
KyNlbmRpZgogfQogCiB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnlFeGVjdXRpb25GbGFn
KCkKQEAgLTQzNSw3ICs0NDEsOSBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24o
KQogICAgICAgICBlbWl0U3RvcmVDb2RlT3JpZ2luKENvZGVPcmlnaW4oQnl0ZWNvZGVJbmRleCgw
KSkpOwogICAgICAgICBpZiAobWF4RnJhbWVFeHRlbnRGb3JTbG93UGF0aENhbGwpCiAgICAgICAg
ICAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90PihtYXhGcmFtZUV4
dGVudEZvclNsb3dQYXRoQ2FsbCkpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1f
c3BlY3VsYXRpdmUtPmNhbGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlv
bihtX2NvZGVCbG9jay0+aXNDb25zdHJ1Y3RvcigpID8gb3BlcmF0aW9uQ29uc3RydWN0QXJpdHlD
aGVjayA6IG9wZXJhdGlvbkNhbGxBcml0eUNoZWNrLCBHUFJJbmZvOjpyZWdUMCwgbV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpKTsKKyAgICAgICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQ
dHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
ICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBDb2RlQmxvY2s6Om9m
ZnNldE9mR2xvYmFsT2JqZWN0KCkpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBt
X3NwZWN1bGF0aXZlLT5jYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRp
b24obV9jb2RlQmxvY2stPmlzQ29uc3RydWN0b3IoKSA/IG9wZXJhdGlvbkNvbnN0cnVjdEFyaXR5
Q2hlY2sgOiBvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIs
IEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIGlmIChtYXhGcmFtZUV4dGVudEZvclNs
b3dQYXRoQ2FsbCkKICAgICAgICAgICAgIGFkZFB0cihUcnVzdGVkSW1tMzIobWF4RnJhbWVFeHRl
bnRGb3JTbG93UGF0aENhbGwpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiAgICAgICAgIGJyYW5j
aFRlc3QzMihaZXJvLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikubGlua1RvKGZyb21Bcml0eUNo
ZWNrLCB0aGlzKTsKQEAgLTY0Niw2ICs2NTQsNTcgQEAgdm9pZCBKSVRDb21waWxlcjo6bWFrZUNh
dGNoT1NSRW50cnlCdWZmZXIoKQogICAgIH0KIH0KIAordm9pZCBKSVRDb21waWxlcjo6bG9hZFVu
bGlua2VkQ29uc3RhbnQoVW5saW5rZWRDb25zdGFudCBjb25zdGFudCwgR1BSUmVnIGRlc3QpCit7
CisgICAgY29uc3RhbnQubWF0ZXJpYWxpemUoKnRoaXMsIGRlc3QpOworfQorCit2b2lkIEpJVENv
bXBpbGVyOjpzdG9yZVVubGlua2VkQ29uc3RhbnQoVW5saW5rZWRDb25zdGFudCBjb25zdGFudCwg
QWRkcmVzcyBkZXN0KQoreworICAgIGNvbnN0YW50LnBva2UoKnRoaXMsIGRlc3QpOworfQorCitK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6VW5saW5rZWRDb25zdGFudChHcmFwaCYgZ3Jh
cGgsIEpTQ2VsbCogY2VsbCkKK3sKKyAgICBncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMoKS5h
ZGRMYXppbHkoY2VsbCk7CisgICAgaWYgKGdyYXBoLm1fcGxhbi5pc1VubGlua2VkKCkpIHsKKyAg
ICAgICAgbV9pbmRleCA9IGdyYXBoLm1fcGxhbi5hZGRVbmxpbmtlZENvbnN0YW50KGNlbGwpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcG9pbnRlciA9IGNlbGw7Cit9CisKK0pJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50OjpVbmxpbmtlZENvbnN0YW50KEdyYXBoJiBncmFwaCwg
dm9pZCogcG9pbnRlciwgTm9uQ2VsbFRhZykKK3sKKyAgICBpZiAoZ3JhcGgubV9wbGFuLmlzVW5s
aW5rZWQoKSkgeworICAgICAgICBtX2luZGV4ID0gZ3JhcGgubV9wbGFuLmFkZFVubGlua2VkQ29u
c3RhbnQocG9pbnRlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9wb2ludGVyID0g
cG9pbnRlcjsKK30KKwordm9pZCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6bWF0ZXJp
YWxpemUoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyByZXN1bHRHUFIpCit7CisjaWYgVVNFKEpT
VkFMVUU2NCkKKyAgICBpZiAoaXNVbmxpbmtlZCgpKSB7CisgICAgICAgIGppdC5sb2FkUHRyKHVu
bGlua2VkQWRkcmVzcygpLCByZXN1bHRHUFIpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisgICAgaml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX3BvaW50ZXIpLCByZXN1bHRHUFIpOwor
fQorCit2b2lkIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50Ojpwb2tlKENDYWxsSGVscGVy
cyYgaml0LCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgYWRkcmVzcykKK3sKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgIGlmIChpc1VubGlua2VkKCkpIHsKKyAgICAgICAgaml0LnRyYW5zZmVyUHRyKHVu
bGlua2VkQWRkcmVzcygpLCBhZGRyZXNzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorICAgIGppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKG1fcG9pbnRlciksIGFkZHJlc3MpOwor
fQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAppbmRleCA5ODQy
NzY4MzhkM2U4OTBjNTExMzZlMGEzZDE4ZWUwYjk3MjQ2YzE3Li4yOGE5NDczNDJjM2M2ZTIyZjQ1
NzBkYzRiZThjYjAxOGFhMWNkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5oCkBAIC0yNTUsMTQgKzI1NSw2IEBAIGNsYXNzIEpJVENvbXBpbGVyIDogcHVi
bGljIENDYWxsSGVscGVycyB7CiAgICAgICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHN0cnVjdHVy
ZVNldFtpXSk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgSnVt
cCBicmFuY2hXZWFrUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgVCBsZWZ0LCBKU0NlbGwq
IHdlYWtQdHIpCi0gICAgewotICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaFB0cihjb25kLCBs
ZWZ0LCBUcnVzdGVkSW1tUHRyKHdlYWtQdHIpKTsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3
ZWFrUHRyKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFQgbGVmdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAg
IHsKQEAgLTMxMiw2ICszMDQsNjYgQEAgY2xhc3MgSklUQ29tcGlsZXIgOiBwdWJsaWMgQ0NhbGxI
ZWxwZXJzIHsKICAgICAgICAgZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcigmUmVnaXN0ZXJBdE9mZnNl
dExpc3Q6OmRmZ0NhbGxlZVNhdmVSZWdpc3RlcnMoKSk7CiAgICAgfQogCisgICAgY2xhc3MgVW5s
aW5rZWRDb25zdGFudCBmaW5hbCA6IHB1YmxpYyBDQ2FsbEhlbHBlcnM6OkNvbnN0YW50TWF0ZXJp
YWxpemVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gTm9uQ2VsbFRhZyB7IE5vbkNlbGwg
fTsKKyAgICAgICAgVW5saW5rZWRDb25zdGFudChHcmFwaCYsIEpTQ2VsbCopOworCisgICAgICAg
IHZvaWQgbWF0ZXJpYWxpemUoQ0NhbGxIZWxwZXJzJiwgR1BSUmVnKTsKKyAgICAgICAgdm9pZCBw
b2tlKENDYWxsSGVscGVycyYsIENDYWxsSGVscGVyczo6QWRkcmVzcyk7CisKKyAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICAgICAgc3RhdGljIFVubGlua2VkQ29uc3RhbnQgbm9uQ2Vs
bFBvaW50ZXIoR3JhcGgmIGdyYXBoLCBUKiBwb2ludGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2ZfdjxKU0NlbGwsIFQ+KTsKKyAgICAgICAg
ICAgIHJldHVybiBVbmxpbmtlZENvbnN0YW50KGdyYXBoLCBwb2ludGVyLCBOb25DZWxsKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0YXRpYyBVbmxpbmtlZENvbnN0YW50IHN0cnVjdHVyZShHcmFw
aCYgZ3JhcGgsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gVW5saW5rZWRDb25zdGFudChncmFwaCwgc3RydWN0dXJlLmdldCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaXNVbmxpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kZXggIT0gVUlOVF9NQVg7IH0KKworICAgICAgICB2b2lkKiBwb2ludGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9wb2ludGVyOyB9CisKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBBZGRyZXNz
IHVubGlua2VkQWRkcmVzcygpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc1VubGlu
a2VkKCkpOworICAgICAgICAgICAgcmV0dXJuIEFkZHJlc3MoR1BSSW5mbzo6Y29uc3RhbnRzUmVn
aXN0ZXIsIERGR0pJVERhdGE6Om9mZnNldE9mRGF0YSgpICsgc2l6ZW9mKHZvaWQqKSAqIG1faW5k
ZXgpOworICAgICAgICB9CisjZW5kaWYKKworICAgIHByaXZhdGU6CisgICAgICAgIFVubGlua2Vk
Q29uc3RhbnQoR3JhcGgmLCB2b2lkKiwgTm9uQ2VsbFRhZyk7CisKKyAgICAgICAgdW5zaWduZWQg
bV9pbmRleCB7IFVJTlRfTUFYIH07CisgICAgICAgIHZvaWQqIG1fcG9pbnRlciB7IG51bGxwdHIg
fTsKKyAgICB9OworCisgICAgdm9pZCBsb2FkVW5saW5rZWRDb25zdGFudChVbmxpbmtlZENvbnN0
YW50LCBHUFJSZWcpOworICAgIHZvaWQgc3RvcmVVbmxpbmtlZENvbnN0YW50KFVubGlua2VkQ29u
c3RhbnQsIEFkZHJlc3MpOworCisgICAgSnVtcCBicmFuY2hVbmxpbmtlZENvbnN0YW50KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgR1BSUmVnIGxlZnQsIFVubGlua2VkQ29uc3RhbnQgY29uc3Rh
bnQpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGlmIChjb25zdGFudC5pc1Vu
bGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpicmFuY2hQdHIoY29u
ZCwgbGVmdCwgY29uc3RhbnQudW5saW5rZWRBZGRyZXNzKCkpOworI2VuZGlmCisgICAgICAgIHJl
dHVybiBDQ2FsbEhlbHBlcnM6OmJyYW5jaFB0cihjb25kLCBsZWZ0LCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoY29uc3RhbnQucG9pbnRlcigpKSk7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hVbmxpbmtlZENvbnN0YW50KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0
LCBVbmxpbmtlZENvbnN0YW50IGNvbnN0YW50KQorICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBpZiAoY29uc3RhbnQuaXNVbmxpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIEND
YWxsSGVscGVyczo6YnJhbmNoUHRyKGNvbmQsIGxlZnQsIGNvbnN0YW50LnVubGlua2VkQWRkcmVz
cygpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gQ0NhbGxIZWxwZXJzOjpicmFuY2hQdHIoY29u
ZCwgbGVmdCwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGNvbnN0YW50LnBvaW50ZXIoKSkp
OworICAgIH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhv
bGRlcjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
RmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVy
LmNwcAppbmRleCBkNjM2MTMyOTdjMjdmMzg4MTU4NmJjYWE3N2UzYWNjZmY0ZTI2NGM3Li41ZWNl
NDU2NzU1MGRhMzE2YjQyNjkzYWE1NWJmNjZlYWU3NzJlNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIGJvb2wg
SklURmluYWxpemVyOjpmaW5hbGl6ZSgpCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX3Bs
YW4uY29kZUJsb2NrKCk7CiAKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUobV9qaXRDb2RlLmNv
cHlSZWYoKSk7CisgICAgY29kZUJsb2NrLT5zZXRERkdKSVREYXRhKG1fcGxhbi5maW5hbGl6ZUpJ
VERhdGEoKSk7CiAKICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBtX2ppdENvZGUtPm9wdGltaXpl
QWZ0ZXJXYXJtVXAoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CmluZGV4IGY4NjM1YWU2ODgyYTI1MTVhYjljMzExNGU2NjdhMWI3ODJjYjczMmIuLjdlODZhOTlj
YTk0OWJlZWNlOGNkOTExNzViZTBhNGY0MWI2NDg1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcApAQCAtNjgxLDYgKzY4MSwyMiBAQCB2b2lkIFBsYW46OmNsZWFuTXVzdEhh
bmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCkKICAgICB9CiB9CiAKK3Vuc2lnbmVkIFBsYW46OmFkZFVu
bGlua2VkQ29uc3RhbnQodm9pZCogcHRyKQoreworICAgIEFTU0VSVCghcHRyKTsKKyAgICByZXR1
cm4gbV9jb25zdGFudFBvb2wuYWRkKHB0ciwgbV9jb25zdGFudFBvb2wuc2l6ZSgpKS5pdGVyYXRv
ci0+dmFsdWU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxERkdKSVREYXRhPiBQbGFuOjpmaW5hbGl6
ZUpJVERhdGEoKQoreworICAgIGlmIChtX2NvbnN0YW50UG9vbC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGF1dG8gaml0RGF0YSA9IERGR0pJVERhdGE6OmNyZWF0ZSht
X2NvbnN0YW50UG9vbC5zaXplKCkpOworICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29uc3RhbnRQ
b29sKQorICAgICAgICBqaXREYXRhLT5hdChwYWlyLnZhbHVlKSA9IHBhaXIua2V5OworICAgIHJl
dHVybiBqaXREYXRhOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKaW5kZXggNDA4
MDMyOTZhNmRiZTBlNDdlYTM4MzNkYmJmMjRhNmMyOTAzYjZlMi4uZTk1NGIwZDFmNDBjYWFkMmRi
NWZlYTRmZmU5ODMyNzY0MTk2MWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQbGFuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgK
QEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ29kZUJsb2NrOwogbmFtZXNwYWNlIERGRyB7CiAKIGNs
YXNzIFRocmVhZERhdGE7CitjbGFzcyBERkdKSVREYXRhOwogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAKQEAgLTEwMSw2ICsxMDIsOSBAQCBjbGFzcyBQbGFuIGZpbmFsIDogcHVibGljIEpJVFBsYW4g
ewogICAgIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjayogY2FsbGJhY2soKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxiYWNrLmdldCgpOyB9CiAgICAgdm9pZCBzZXRDYWxsYmFjayhSZWY8RGVmZXJy
ZWRDb21waWxhdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrKSB7IG1fY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsgfQogCisgICAgdW5zaWduZWQgYWRkVW5saW5rZWRDb25zdGFudCh2b2lkKik7
CisgICAgc3RkOjp1bmlxdWVfcHRyPERGR0pJVERhdGE+IGZpbmFsaXplSklURGF0YSgpOworCiBw
cml2YXRlOgogICAgIENvbXBpbGF0aW9uUGF0aCBjb21waWxlSW5UaHJlYWRJbXBsKCkgb3ZlcnJp
ZGU7CiAgICAgCkBAIC0xMzQsNiArMTM4LDcgQEAgY2xhc3MgUGxhbiBmaW5hbCA6IHB1YmxpYyBK
SVRQbGFuIHsKICAgICBWZWN0b3I8Qnl0ZWNvZGVJbmRleD4gbV90aWVyVXBBbmRPU1JFbnRlckJ5
dGVjb2RlczsKIAogICAgIFJlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+IG1fY2Fs
bGJhY2s7CisgICAgSGFzaE1hcDx2b2lkKiwgdW5zaWduZWQ+IG1fY29uc3RhbnRQb29sOwogfTsK
IAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oCmluZGV4IGZhYmNlMDE4MmRlOTAwMjUzZjBkZjNmMGJmMmU5MzAxODdjMGZmMTQuLjY0
M2JkMjVjMDljMmEzMjAyMjQ1N2ExNWQ2MTY5NDYxOTExMjNhYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogY2xhc3MgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Ig
ZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpK
dW1wPiB7CiBwdWJsaWM6CiAgICAgU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Io
Ci0gICAgICAgIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wJiBmcm9tLCBTcGVjdWxhdGl2ZUpJ
VCogaml0LCBKU1ZhbHVlUmVncyByZXN1bHRSZWdzLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIgZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQorICAg
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCYgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQg
Z2xvYmFsT2JqZWN0LCBHUFJSZWcgYmFzZVJlZywgR1BSUmVnIHByb3BlcnR5UmVnKQogICAgICAg
ICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcD4oZnJvbSwg
aml0KQogICAgICAgICAsIG1fcmVzdWx0UmVncyhyZXN1bHRSZWdzKQogICAgICAgICAsIG1fZ2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgU2FuZVN0cmlu
Z0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IgZmluYWwgOiBwdWJsaWMgSnVtcGluZ1Nsb3dQYXRo
R2VuZXJhdG8KICAgICB9CiAKICAgICBKU1ZhbHVlUmVncyBtX3Jlc3VsdFJlZ3M7Ci0gICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyIG1fZ2xvYmFsT2JqZWN0OworICAgIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50IG1fZ2xvYmFsT2JqZWN0OwogICAgIEdQUlJlZyBtX2Jhc2VSZWc7
CiAgICAgR1BSUmVnIG1fcHJvcGVydHlSZWc7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4sIDI+IG1fcGxhbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCmluZGV4IGJhNmQwNzRjZGNkNGE4MGY1NjRiOWFkNGNiNmFhMmQ3Zjc5
NjM4NWQuLjkxMDc0ZTQ3MjgxZGZjOTNiZjMyN2MwNjI3ZTlmNDdkNGY4OTlhMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC02MSw2
ICs2MSw3IEBACiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNTZXRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAi
UHJvYmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCkBAIC0yMDUsMTEg
KzIwNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUoQ29kZU9yaWdpbiBv
cmlnaW4sIEdQUlJlZyBjYWxsZWVHUFIpCiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAogICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlUmVjb3ZlcnkudmlydHVhbFJlZ2lzdGVyKCkpLAogICAgICAgICAgICAgICAgIGNhbGxlZUdQ
Uik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGlubGluZUNhbGxGcmFt
ZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCi0gICAgICAgICAgICAgICAg
Y2FsbGVlR1BSKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1faml0
LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSks
IGNhbGxlZUdQUik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgY2FsbGVlR1BSKTsKIH0KQEAg
LTY4Niw3ICs2ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNp
bGVudFJlZ2lzdGVyU2F2ZVBsYW4mIHBsYW4pCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0
Q2VsbENvbnN0YW50OgogICAgICAgICBBU1NFUlQocGxhbi5ub2RlKCktPmNvbnN0YW50KCktPnZh
bHVlKCkuaXNDZWxsKCkpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIocGxhbi5u
b2RlKCktPmNvbnN0YW50KCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlu
a2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgcGxhbi5u
b2RlKCktPmNvbnN0YW50KCktPnZhbHVlKCkuYXNDZWxsKCkpLCBwbGFuLmdwcigpKTsKICAgICAg
ICAgYnJlYWs7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldFRydXN0ZWRKU0NvbnN0
YW50OgpAQCAtMTIwNywyMiArMTIwNSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RGVsZXRlQnlJZChOb2RlKiBub2RlKQogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXpl
LAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIEpTVmFs
dWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBU
cnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRPcHRpbWl6ZSwKLSAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1Yklu
Zm8oKSksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAg
ICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIo
Z2VuLnN0dWJJbmZvKCkpLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRl
bnRpZmllcigpLnJhd0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhH
ZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5
cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlJZE9wdGltaXplLAot
ICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZp
ZXIoKS5yYXdCaXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
KyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVu
dGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgp
KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2Fs
bCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkRlbGV0ZUJ5SWRP
cHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1
c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VH
UFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBDQ2FsbEhl
bHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgbm9kZS0+Y2FjaGVhYmxlSWRlbnRpZmllcigpLnJh
d0JpdHMoKSwgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgICAg
ICB9CiAjZW5kaWYKIApAQCAtMTI0Myw3ICsxMjQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZURlbGV0ZUJ5SWQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlJZEdl
bmVyaWMsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG51bGxwdHIsIGJh
c2VSZWdzLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25EZWxldGVCeUlkR2VuZXJpYywgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgbnVsbHB0ciwgYmFzZVJlZ3MsIG5vZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdC
aXRzKCksIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgdW5ibGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwpAQCAtMTI5MywyMiArMTI5MSwyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKEpJVENvZGU6OnVzZURh
dGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRo
SUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCks
IHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVy
ZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkRlbGV0ZUJ5VmFs
T3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0
dWJJbmZvR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5v
ZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIGtleVJl
Z3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6ZSwKLSAgICAg
ICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4u
c3R1YkluZm8oKSksIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1tMzIo
bm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBKU1ZhbHVl
UmVncyhiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFs
dWUoKSkpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2xvd1Bh
dGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgICAgICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJ
VFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwo
CiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1Yklu
Zm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1Yklu
Zm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uRGVsZXRlQnlWYWxPcHRpbWl6
ZSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzLCBUcnVzdGVkSW1t
MzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUo
KSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENh
bGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25EZWxldGVCeVZh
bE9wdGltaXplLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBU
cnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFz
ZUdQUiksIGtleVJlZ3MsIFRydXN0ZWRJbW0zMihub2RlLT5lY21hTW9kZSgpLnZhbHVlKCkpKTsK
KyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZElt
bVB0cihnZW4uc3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBr
ZXlSZWdzLCBUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSk7CiAgICAgICAg
IH0KICNlbmRpZgogCkBAIC0xMzMwLDcgKzEzMjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRGVsZXRlQnlWYWwoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAg
IEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxH
ZW5lcmljLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBi
YXNlUmVncywga2V5UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVsZXRlQnlWYWxHZW5lcmljLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBudWxscHRyLCBiYXNlUmVncywga2V5
UmVncywgVHJ1c3RlZEltbTMyKG5vZGUtPmVjbWFNb2RlKCkudmFsdWUoKSkpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CkBAIC0xMzczLDEyICsxMzcxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVJbkJ5SWQoTm9kZSogbm9kZSkKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2Fs
bCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZv
R1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZv
OjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkluQnlJZE9wdGltaXplLAogICAg
ICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVl
ZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQ
UiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5vZGUtPmNhY2hlYWJsZUlkZW50
aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9y
aWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIG5v
ZGUtPmNhY2hlYWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25JbkJ5SWRPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNl
cHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJl
Z3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIENDYWxs
SGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCku
cmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJh
c2VHUFIpLCBub2RlLT5jYWNoZWFibGVJZGVudGlmaWVyKCkucmF3Qml0cygpKTsKICAgICB9CiAK
ICAgICBtX2ppdC5hZGRJbkJ5SWQoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC0xNDIzLDEyICsx
NDIxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbkJ5VmFsKE5vZGUqIG5vZGUp
CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9u
KCkpLCBvcGVyYXRpb25JbkJ5VmFsT3B0aW1pemUsCiAgICAgICAgICAgICBOZWVkVG9TcGlsbCwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CisgICAgICAgICAgICByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwga2V5UmVncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkluQnlWYWxPcHRpbWl6ZSwKICAgICAgICAgICAgIE5lZWRUb1NwaWxsLCBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIG51bGxwdHIsIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsKKyAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8o
KSksIG51bGxwdHIsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBrZXlSZWdzKTsK
ICAgICB9CiAKICAgICBtX2ppdC5hZGRJbkJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAt
MTQ3NywxMiArMTQ3NSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSGFzUHJpdmF0
ZShOb2RlKiBub2RlLCBBY2Nlc3NUeXBlIHR5cGUpCiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1Bh
dGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zdHViSW5mbygpLCBz
dHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BSLCBTdHJ1Y3R1cmVT
dHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCB0eXBlID09IEFjY2Vzc1R5cGU6Okhh
c1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6IG9wZXJhdGlv
bkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3BpbGwsIEV4Y2Vw
dGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUo
YmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOwor
ICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwg
Q0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KHByb3BlcnR5T3JCcmFuZEdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0g
c2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFjY2Vz
c1R5cGU6Okhhc1ByaXZhdGVOYW1lID8gb3BlcmF0aW9uSGFzUHJpdmF0ZU5hbWVPcHRpbWl6ZSA6
IG9wZXJhdGlvbkhhc1ByaXZhdGVCcmFuZE9wdGltaXplLAogICAgICAgICAgICAgTmVlZFRvU3Bp
bGwsIEV4Y2VwdGlvbkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAotICAgICAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZh
bHVlKHByb3BlcnR5T3JCcmFuZEdQUikpOworICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKHByb3BlcnR5T3JC
cmFuZEdQUikpOwogICAgIH0KIAogICAgIG1faml0LmFkZEluQnlWYWwoZ2VuLCBzbG93UGF0aC5n
ZXQoKSk7CkBAIC0xNTE2LDcgKzE1MTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHVzaFdpdGhTY29wZShOb2RlKiBub2RlKQogICAgICAgICBzcGVjdWxhdGVPYmplY3Qob2JqZWN0
RWRnZSwgb2JqZWN0R1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1c2hXaXRoU2NvcGVPYmplY3QsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGN1cnJlbnRTY29wZUdQUiwgb2JqZWN0R1BSKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2JqZWN0LCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjdXJyZW50U2NvcGVHUFIsIG9iamVj
dEdQUik7CiAgICAgICAgIC8vIE5vIGV4Y2VwdGlvbiBjaGVjayBoZXJlIGFzIHdlIGRpZCBub3Qg
aGF2ZSB0byBjYWxsIHRvT2JqZWN0KCkuCiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG9i
amVjdEVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtMTUyNCw3ICsxNTIyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1c2hXaXRoU2NvcGUoTm9kZSogbm9kZSkKICAg
ICAgICAgSlNWYWx1ZVJlZ3Mgb2JqZWN0UmVncyA9IG9iamVjdC5qc1ZhbHVlUmVncygpOwogCiAg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
UHVzaFdpdGhTY29wZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY3Vy
cmVudFNjb3BlR1BSLCBvYmplY3RSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25QdXNoV2l0aFNjb3BlLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBjdXJyZW50U2NvcGVHUFIsIG9iamVjdFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgIH0KICAgICAKQEAgLTE5MTEsNyArMTkwOSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdHJpbmdTbGljZShOb2RlKiBub2RlKQogCiAgICAgVk0mIHZtID0gdGhp
cy0+dm0oKTsKICAgICBhdXRvIG5vbkVtcHR5Q2FzZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpCZWxvdywgc3RhcnRJbmRleEdQUiwgdGVtcEdQUik7Ci0gICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBqc0VtcHR5U3RyaW5nKHZtKSksIHRl
bXBHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIGpzRW1wdHlTdHJpbmcodm0pKSwgdGVtcEdQUik7CiAgICAg
ZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgbm9uRW1wdHlDYXNlLmxpbmso
Jm1faml0KTsKQEAgLTE5NDMsMTIgKzE5NDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0cmluZ1NsaWNlKE5vZGUqIG5vZGUpCiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoYmlnQ2hhcmFjdGVyLCB0aGlzLCBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJT
dHJpbmcsIHRlbXBHUFIsIFRydXN0ZWRJbW1QdHIoJnZtKSwgdGVtcEdQUikpOwogCi0gICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
U3RyaW5nU3Vic3RyLCB0ZW1wR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5n
R1BSLCBzdGFydEluZGV4R1BSLCB0ZW1wR1BSKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU3RyaW5nU3Vic3RyLCB0ZW1w
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCBzdGFydEluZGV4
R1BSLCB0ZW1wR1BSKSk7CiAKICAgICBpZiAoZW5kR1BSKQotICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlzLCBvcGVyYXRpb25TdHJpbmdTbGljZSwg
dGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmluZ0dQUiwgc3RhcnRHUFIs
ICplbmRHUFIpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlz
Um9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCAqZW5kR1BSKSk7CiAgICAgZWxz
ZQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlz
LCBvcGVyYXRpb25TdHJpbmdTbGljZSwgdGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHN0cmluZ0dQUiwgc3RhcnRHUFIsIFRydXN0ZWRJbW0zMihzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptYXgoKSkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKGlzUm9wZSwgdGhpcywgb3BlcmF0aW9uU3RyaW5nU2xpY2UsIHRlbXBHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHN0YXJ0R1BSLCBUcnVzdGVkSW1t
MzIoc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKSk7CiAKICAgICBkb25lQ2Fz
ZXMubGluaygmbV9qaXQpOwogICAgIGNlbGxSZXN1bHQodGVtcEdQUiwgbm9kZSk7CkBAIC0xOTk1
LDcgKzE5OTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9Mb3dlckNhc2UoTm9k
ZSogbm9kZSkKICAgICAKICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMobGVuZ3RoR1BSKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRv
TG93ZXJDYXNlLCBsZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdH
UFIsIGluZGV4R1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvTG93ZXJDYXNlLCBs
ZW5ndGhHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIGluZGV4
R1BSKTsKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICBhdXRvIGRvbmUgPSBtX2ppdC5qdW1wKCk7CkBAIC0yMjIyLDYgKzIyMjAs
MTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJlbnRCbG9jaygpCiAgICAgICAg
IG1faml0LmppdEFzc2VydENvZGVCbG9ja09uQ2FsbEZyYW1lV2l0aFR5cGUoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIsIEpJVFR5cGU6OkRGR0pJVCk7CiAjZW5kaWYKICAgICAgICAgbV9qaXQu
ZW1pdE1hdGVyaWFsaXplVGFnQ2hlY2tSZWdpc3RlcnMoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQor
ICAgICAgICBpZiAobV9ncmFwaC5tX3BsYW4uaXNVbmxpbmtlZCgpKSB7CisgICAgICAgICAgICBt
X2ppdC5lbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihDYWxsRnJhbWVTbG90Ojpjb2RlQmxv
Y2ssIEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyLCBDb2Rl
QmxvY2s6Om9mZnNldE9mSklURGF0YSgpKSwgR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwor
ICAgICAgICB9CisjZW5kaWYKICAgICB9CiAKICAgICBtX3N0cmVhbS0+YXBwZW5kQW5kTG9nKFZh
cmlhYmxlRXZlbnQ6OnJlc2V0KCkpOwpAQCAtMjUwMiw3ICsyNTA2LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNoZWNrVHJhcHMoTm9kZSogbm9kZSkKICAgICAgICAgSklUQ29tcGls
ZXI6OkFic29sdXRlQWRkcmVzcyh2bSgpLnRyYXBzKCkudHJhcEJpdHNBZGRyZXNzKCkpLAogICAg
ICAgICBUcnVzdGVkSW1tMzIoVk1UcmFwczo6QXN5bmNFdmVudHMpKTsKIAotICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChuZWVkVHJhcEhhbmRsaW5nLCB0aGlzLCBvcGVyYXRp
b25IYW5kbGVUcmFwcywgdW51c2VkR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwor
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChuZWVkVHJhcEhhbmRsaW5nLCB0
aGlzLCBvcGVyYXRpb25IYW5kbGVUcmFwcywgdW51c2VkR1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSkpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCkBAIC0yNTY3LDcgKzI1NzEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBub2RlLT5lY21hTW9kZSgpLmlzU3RyaWN0KCkgPwogICAgICAg
ICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlW
YWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25k
QXJyYXlCb3VuZHNTdHJpY3QpIDoKICAgICAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRC
eVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25T
dHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KSwKLSAg
ICAgICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywg
cHJvcGVydHlSZWcsIHZhbHVlUmVncykpOworICAgICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVSZWdzKSk7
CiAgICAgfQogCiAgICAgbm9SZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5
KTsKQEAgLTI2NDIsNyArMjY0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3Vi
bGVQdXRCeVZhbChOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG5vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/CiAgICAgICAgICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFs
RGlyZWN0ID8gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0
cmljdCA6IG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpIDoK
ICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVy
YXRpb25QdXREb3VibGVCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0IDogb3Bl
cmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdCksCi0gICAgICAg
ICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBw
cm9wZXJ0eVJlZywgdmFsdWVSZWcpKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZykp
OwogICAgIH0KIAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CkBAIC0yNzAwLDkgKzI3MDQsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlUHV0QnlWYWwoTm9kZSogbm9kZSkKIAogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0KQotICAgICAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3Bl
cmF0aW9uUHV0QnlWYWxEaXJlY3RTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdE5vblN0
cmljdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJlZ3Ms
IHZhbHVlUmVncyk7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihub2RlLT5lY21hTW9k
ZSgpLmlzU3RyaWN0KCkgPyBvcGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsRGlyZWN0Tm9uU3RyaWN0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZ3MsIHByb3BlcnR5UmVncywgdmFsdWVSZWdzKTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/
IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJl
Z3MpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0
cmljdCgpID8gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbE5vblN0
cmljdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eVJl
Z3MsIHZhbHVlUmVncyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTI3NTUsMTEgKzI3NTksMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKE5vZGUqIG5vZGUpCiAgICAgICAgIGlmIChK
SVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICAgICAgc2xvd1Bh
dGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdl
bi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZv
R1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRp
b24sCi0gICAgICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgYmFzZVJlZ3Ms
IHByb3BlcnR5UmVncywgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgbnVsbHB0cik7CisgICAgICAg
ICAgICAgICAgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgYmFzZVJlZ3MsIHByb3BlcnR5
UmVncywgdmFsdWVSZWdzLCBzdHViSW5mb0dQUiwgbnVsbHB0cik7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJ
bW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICBOb1Jlc3Vs
dCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IoY29kZU9yaWdpbikpLCBiYXNlUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3Ms
IFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBudWxscHRyKTsKICAgICAgICAgfQogCiAg
ICAgICAgIG1faml0LmFkZFB1dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMjg1MCw3
ICsyODU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8KICAgICAg
ICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRpb25Q
dXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxC
ZXlvbmRBcnJheUJvdW5kc1N0cmljdCkgOgogICAgICAgICAgICAgICAgICAgICAobm9kZS0+b3Ao
KSA9PSBQdXRCeVZhbERpcmVjdCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlC
b3VuZHNOb25TdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3Ry
aWN0KSwKLSAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWcsIHByb3BlcnR5UmVnLCB2YWx1ZVJlZ3MpKTsKKyAgICAgICAgICAgICAgICBO
b1Jlc3VsdCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5
UmVnLCB2YWx1ZVJlZ3MpKTsKICAgICAgICAgfQogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUsIFVz
ZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC0yOTYxLDcgKzI5NjUsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyhOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOgogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSwgcmVzdWx0UmVncy50YWdHUFIoKSk7CiAjZW5kaWYKIAotICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBT
dHJ1Y3R1cmUqIHN0cmluZ1Byb3RvdHlwZVN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+c3RyaW5n
UHJvdG90eXBlKCktPnN0cnVjdHVyZSh2bSk7CiAgICAgICAgIFN0cnVjdHVyZSogb2JqZWN0UHJv
dG90eXBlU3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKS0+c3RydWN0
dXJlKHZtKTsKICAgICAgICAgV1RGOjpkZXBlbmRlbnRMb2FkTG9hZEZlbmNlKCk7CkBAIC0yOTc3
LDEyICsyOTgxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3Ry
aW5nKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6CiAgICAgICAgICAgICBtX2dy
YXBoLnJlZ2lzdGVyQW5kV2F0Y2hTdHJ1Y3R1cmVUcmFuc2l0aW9uKG9iamVjdFByb3RvdHlwZVN0
cnVjdHVyZSk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKG1ha2VVbmlxdWU8
U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3I+KAotICAgICAgICAgICAgICAgIG91
dE9mQm91bmRzLCB0aGlzLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBnbG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAg
ICAgICAgIG91dE9mQm91bmRzLCB0aGlzLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAg
ICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBvdXRPZkJv
dW5kcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQsCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2Jh
bE9iamVjdCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9i
amVjdCksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbV9jdXJyZW50Tm9kZSk7CkBAIC0zMDA2LDcg
KzMwMTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJp
bmdGcm9tQ2hhckNvZGVVbnR5cGVkLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3ByUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nRnJv
bUNoYXJDb2RlVW50eXBlZCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wclJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTMwMjYsNyArMzAz
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUoTm9kZSogbm9k
ZSkKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21hbGxTdHJp
bmdzUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCAwKSwgc2NyYXRj
aFJlZyk7CiAKICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgc2NyYXRjaFJlZykpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSwg
c2NyYXRjaFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHByb3BlcnR5UmVnKSk7Cisg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uU3RyaW5nRnJvbUNoYXJDb2RlLCBzY3JhdGNoUmVnLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgcHJvcGVydHlSZWcpKTsKICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1f
Y3VycmVudE5vZGUpOwogfQogCkBAIC0zOTUwLDkgKzM5NTQsOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJy
YXlUeXBlCiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBv
cGVyYXRpb25QdXRCeVZhbERpcmVjdFN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KSA6
CiAgICAgICAgICAgICAgICAgKG5vZGUtPm9wKCkgPT0gUHV0QnlWYWxEaXJlY3QgPyBvcGVyYXRp
b25QdXRCeVZhbERpcmVjdE5vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KSwK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgTm9SZXN1bHQsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZywgdmFsdWVHUFIpKTsKKyAgICAgICAg
ICAgIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJv
cGVydHlSZWcsIHZhbHVlR1BSKSk7CiAjZWxzZSAvLyBub3QgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0
eVJlZyksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKKyAgICAgICAgICAg
IE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpD
ZWxsVmFsdWUoYmFzZVJlZyksIEpTVmFsdWVSZWdzKHByb3BlcnR5VGFnR1BSLCBwcm9wZXJ0eVJl
ZyksIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZUdQUikpKTsKICNlbmRpZgogICAgIH0K
IApAQCAtNDA2MCw3ICs0MDY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsRm9yT2JqZWN0V2l0aFN0cmluZyhOb2RlKiBub2RlLCBjb25zdCBTY29wZWQKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CiAgICAgZWxzZQogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmpl
Y3RTdHJpbmcsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BS
LCBhcmcyR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0U3Ry
aW5nLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMUdQUiwg
YXJnMkdQUik7CiAgICAgaWYgKGNhblVzZUZsdXNoID09IENhblVzZUZsdXNoOjpObykKICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CkBAIC00MDg3LDcgKzQwOTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWxGb3JPYmplY3RXaXRoU3ltYm9sKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZAogICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICBlbHNlCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVj
dFN5bWJvbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIs
IGFyZzJHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RTeW1i
b2wsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBh
cmcyR1BSKTsKICAgICBpZiAoY2FuVXNlRmx1c2ggPT0gQ2FuVXNlRmx1c2g6Ok5vKQogICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
QEAgLTQxNTUsMTIgKzQxNTksMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFBy
aXZhdGVOYW1lQnlWYWwoTm9kZSogbm9kZSwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlMKICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBn
ZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5m
b0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0
aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICByZXN1bHQucmVncygp
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLAorICAgICAgICAgICAgICAgIHJlc3VsdC5y
ZWdzKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsCiAgICAgICAgICAgICAgICAg
YmFzZSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwKLSAgICAgICAgICAg
IHJlc3VsdC5yZWdzKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1Yklu
Zm8oKSksCisgICAgICAgICAgICByZXN1bHQucmVncygpLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIFRy
dXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLAogICAgICAgICAgICAgYmFzZSwgQ0NhbGxIZWxw
ZXJzOjpDZWxsVmFsdWUocHJvcGVydHkucGF5bG9hZEdQUigpKSk7CiAgICAgfTsKIApAQCAtNDI0
OCw3ICs0MjUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2Vs
bFdpdGhTdHJpbmcoTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmlj
dCgpID8KICAgICAgICAgICAgIChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0
aW9uUHV0QnlWYWxEaXJlY3RDZWxsU3RyaW5nU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxs
U3RyaW5nU3RyaWN0KSA6CiAgICAgICAgICAgICAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVj
dCA/IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN0cmluZ05vblN0cmljdCA6IG9wZXJhdGlv
blB1dEJ5VmFsQ2VsbFN0cmluZ05vblN0cmljdCksCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CisgICAgICAgIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDI3MSw3
ICs0Mjc1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQ2VsbFdp
dGhTeW1ib2woTm9kZSogbm9kZSkKICAgICAgICAgbm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgp
CiAgICAgICAgICAgICA/IChub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9u
UHV0QnlWYWxEaXJlY3RDZWxsU3ltYm9sU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3lt
Ym9sU3RyaWN0KQogICAgICAgICAgICAgOiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbERpcmVjdCA/
IG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdCA6IG9wZXJhdGlvblB1
dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdCksCi0gICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CisgICAgICAgIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSLCBhcmczUmVncyk7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIG5vUmVzdWx0KG5vZGUpOwpAQCAtNDI4OSw3ICs0
MjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9k
ZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1
bHQucmVncygpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcywg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzVmFs
dWVSZWdzLCBzdWJzY3JpcHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5
VmFsV2l0aFRoaXMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlUmVncywgdGhpc1ZhbHVlUmVncywgc3Vic2NyaXB0UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00
MzE1LDcgKzQzMTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0UHJpdmF0ZU5h
bWUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBhdXRv
IG9wZXJhdGlvbiA9IG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS5pc0RlZmluZSgpID8gb3Bl
cmF0aW9uUHV0QnlWYWxEZWZpbmVQcml2YXRlRmllbGRHZW5lcmljIDogb3BlcmF0aW9uUHV0QnlW
YWxTZXRQcml2YXRlRmllbGRHZW5lcmljOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
biwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwg
VHJ1c3RlZEltbVB0cihudWxscHRyKSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6
Q2VsbFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIp
LCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKIAogICAgICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTQzNTksMTEgKzQzNjMsMTEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCiAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgIHNsb3dQ
YXRoID0gc2xvd1BhdGhJQ0NhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5z
dHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0dWJJbmZvR1BS
LCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBvcGVyYXRpb24s
Ci0gICAgICAgICAgICBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBDQ2FsbEhlbHBlcnM6OkNl
bGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2
YWx1ZVJlZ3MsIHN0dWJJbmZvR1BSLCBudWxscHRyKTsKKyAgICAgICAgICAgIE5vUmVzdWx0LCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2Fs
bEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgc3R1YkluZm9HUFIs
IG51bGxwdHIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxs
KAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb24sCi0gICAgICAgICAgICBO
b1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BS
KSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0
ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBudWxscHRyKTsKKyAgICAgICAgICAgIE5vUmVzdWx0
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihjb2RlT3JpZ2luKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBD
Q2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZElt
bVB0cihnZW4uc3R1YkluZm8oKSksIG51bGxwdHIpOwogICAgIH0KIAogICAgIG1faml0LmFkZFB1
dEJ5VmFsKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtNDQzNywxMSArNDQ0MSwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tQcml2YXRlQnJhbmQoTm9kZSogbm9kZSkKICAg
ICBpZiAoSklUQ29kZTo6dXNlRGF0YUlDKEpJVFR5cGU6OkRGR0pJVCkpIHsKICAgICAgICAgc2xv
d1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgZ2Vu
LnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1YkluZm9H
UFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9wZXJhdGlv
bkNoZWNrUHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BS
LCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dD
YXNlcywgdGhpcywgb3BlcmF0aW9uQ2hlY2tQcml2YXRlQnJhbmRPcHRpbWl6ZSwgTm9SZXN1bHQs
Ci0gICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZv
KCkpLCBiYXNlUmVncywgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSks
IGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShicmFuZEdQUikpOwogICAgIH0KIAog
ICAgIG1faml0LmFkZFByaXZhdGVCcmFuZEFjY2VzcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAg
LTQ0ODUsMTEgKzQ0ODksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldFByaXZh
dGVCcmFuZChOb2RlKiBub2RlKQogICAgIGlmIChKSVRDb2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6
REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAg
ICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVs
cGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xv
d09wZXJhdGlvbigpKSwgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUsIE5vUmVzdWx0
LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBl
cnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAg
ICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uU2V0UHJpdmF0ZUJyYW5kT3B0aW1pemUs
IE5vUmVzdWx0LAotICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdl
bi5zdHViSW5mbygpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZUdQUiksIENDYWxsSGVs
cGVyczo6Q2VsbFZhbHVlKGJyYW5kR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2lu
KSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYnJhbmRHUFIpKTsKICAgICB9CiAK
ICAgICBtX2ppdC5hZGRQcml2YXRlQnJhbmRBY2Nlc3MoZ2VuLCBzbG93UGF0aC5nZXQoKSk7CkBA
IC00NTI1LDcgKzQ1MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGFyc2VJbnQo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIEpT
VmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25QYXJzZUludEdlbmVyaWMsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIHJhZGl4R1BSKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCByYWRpeEdQUik7CiAgICAgICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ1MzgsNyArNDU0Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQYXJzZUludChOb2RlKiBub2RlKQogICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJl
c3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdz
KCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmcsIHJlc3Vs
dFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUdQUiwgcmFkaXhHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50U3RyaW5nLCByZXN1bHRSZWdz
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVHUFIsIHJhZGl4R1BSKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDU1MSw3ICs0NTU1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgICAgIGZs
dXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3Mo
KTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmlj
LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QYXJzZUludE5vUmFkaXhHZW5lcmljLCByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDU2NCw3ICs0NTY4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBhcnNlSW50KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
ICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblBhcnNlSW50U3RyaW5nTm9SYWRpeCwgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlR1BSKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblBhcnNlSW50U3RyaW5nTm9SYWRpeCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHZhbHVlR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC00NTg3LDExICs0NTkxLDEy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZShOb2Rl
KiBub2RlKQogICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKICAgICBpZiAoIWhhc0lu
c3RhbmNlVmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5jZUZ1
bmN0aW9uICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewogICAgICAgICBKU1Zh
bHVlUmVncyBoYXNJbnN0YW5jZVZhbHVlUmVncyA9IGhhc0luc3RhbmNlVmFsdWUuanNWYWx1ZVJl
Z3MoKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgcmVz
dWx0R1BSKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBub3REZWZhdWx0LmFwcGVuZCht
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVl
UmVncy5ncHIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOworICAgICAg
ICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5ncHIoKSwgcmVzdWx0R1BSKSk7CiAjZWxzZQogICAg
ICAgICBub3REZWZhdWx0LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoaGFzSW5zdGFuY2VW
YWx1ZVJlZ3MpKTsKLSAgICAgICAgbm90RGVmYXVsdC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigp
LCBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpKSk7CisgICAgICAgIG5vdERlZmF1
bHQuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0lu
c3RhbmNlVmFsdWVSZWdzLnBheWxvYWRHUFIoKSwgcmVzdWx0R1BSKSk7CiAjZW5kaWYKICAgICB9
CiAKQEAgLTQ2MjUsMTAgKzQ2MzAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlu
c3RhbmNlT2ZGb3JDZWxscyhOb2RlKiBub2RlLCBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2xvd1BhdGhHZW5lcmF0b3I+IHNsb3dQYXRoOwogICAgIGlmIChKSVRD
b2RlOjp1c2VEYXRhSUMoSklUVHlwZTo6REZHSklUKSkgewogICAgICAgICBzbG93UGF0aCA9IHNs
b3dQYXRoSUNDYWxsKAotICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8o
KSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0
dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgb3BlcmF0aW9uSW5zdGFuY2VP
Zk9wdGltaXplLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdHViSW5m
b0dQUiwgdmFsdWVSZWdzLCBwcm90b3R5cGVSZWdzKTsKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSks
IG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgc3R1YkluZm9HUFIsIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8o
KSksIHZhbHVlUmVncywgcHJvdG90eXBlUmVncyk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIG9wZXJhdGlvbkluc3RhbmNlT2ZPcHRpbWl6ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIHZhbHVlUmVn
cywgcHJvdG90eXBlUmVncyk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEluc3RhbmNlT2Yo
Z2VuLCBzbG93UGF0aC5nZXQoKSk7CkBAIC00NzM4LDcgKzQ3NDMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlVmFsdWVCaXROb3QoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJl
Z3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJl
c3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQml0Tm90SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wZXJhbmRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdE5vdEhl
YXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcGVy
YW5kR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIApAQCAtNDc1Myw3ICs0NzU4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0Tm90KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQml0Tm90LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgb3BlcmFuZFJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VmFsdWVCaXROb3QsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cGVyYW5kUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC00NzkzLDcgKzQ3OTgsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQW55QmlnSW50Qml0T3AoTm9kZSogbm9kZSkKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQu
cmVncygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCBy
ZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVn
cyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVuY3Rpb24sIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdz
KTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNDg1OCw3ICs0ODYzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFVudHlwZWRPckFueUJpZ0ludEJpdE9wKE5vZGUqIG5vZGUpCiAgICAgICAg
IG1faml0Lm1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwgcmlnaHRSZWdzKTsKICAg
ICB9CiAKLSAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7Cisg
ICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogCiAgICAg
c2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBA
IC00OTIxLDEzICs0OTI2LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUJp
dHdpc2VPcChOb2RlKiBub2RlKQogCiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2Fz
ZSBWYWx1ZUJpdEFuZDoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5k
SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRH
UFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0QW5k
SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxl
ZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZhbHVl
Qml0WG9yOgotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JIZWFwQmln
SW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmln
aHRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRYb3JIZWFwQmln
SW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmFsdWVCaXRPcjoK
LSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0T3JIZWFwQmlnSW50LCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwor
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25CaXRPckhlYXBCaWdJbnQsIHJlc3Vs
dFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC01MDExLDcgKzUwMTYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0VW50eXBlZE9yQmlnSW50UmlnaHRTaGlmdEJpdE9wKE5vZGUqIG5vZGUp
CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0g
cmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5j
dGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCBy
aWdodFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9u
LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJp
Z2h0UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUwNzcsNyArNTA4Miw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkT3JCaWdJbnRSaWdodFNoaWZ0Qml0T3AoTm9kZSog
bm9kZSkKICAgICAgICAgbV9qaXQubW92ZVZhbHVlKHJpZ2h0Q2hpbGQtPmFzSlNWYWx1ZSgpLCBy
aWdodFJlZ3MpOwogICAgIH0KIAotICAgIGNhbGxPcGVyYXRpb24oc25pcHBldFNsb3dQYXRoRnVu
Y3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywg
cmlnaHRSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKHNuaXBwZXRTbG93UGF0aEZ1bmN0aW9uLCBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0
UmVncyk7CiAKICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKQEAgLTUxMDYsNyArNTExMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZUxTaGlmdE9wKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkJpdExT
aGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQml0TFNo
aWZ0SGVhcEJpZ0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRHUFIsIHJpZ2h0R1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNTEzMyw3ICs1MTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQml0
UlNoaWZ0KE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpT
VmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVl
UmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25CaXRSU2hpZnRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkJpdFJTaGlmdEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAg
LTUyMjEsNyArNTIyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChO
b2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAg
ICAgICAgIC8vIEZJWE1FOiBjYWxsIGEgbW9yZSBzcGVjaWFsaXplZCBmdW5jdGlvbgotICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3Vs
dFJlZ3MsIG5vZGUpOwpAQCAtNTI0Miw3ICs1MjQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVZhbHVlQWRkKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25BZGRIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkFkZEhlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUy
NTgsNyArNTI2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2Rl
KiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0Zs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFs
dWVBZGROb3ROdW1iZXIsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
ZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1
ZUFkZE5vdE51bWJlciwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNTMyMSw3
ICs1MzI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlU3ViKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpTVmFsdWVSZWdzRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdz
ID0gcmVzdWx0LnJlZ3MoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZVN1
YiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdo
dFJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlU3ViLCByZXN1bHRS
ZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTUzNDIsNyArNTM0Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0Zs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0
UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25T
dWJIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN1YkhlYXBC
aWdJbnQsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BS
LCByaWdodEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTU0NDksOSArNTQ1NCw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRoSUMoTm9kZSogbm9kZSwgSklUQmluYXJ5TWF0
aElDPEdlbmVyYXRvcj4qIG1hdGhJCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChh
ZGRJQ0dlbmVyYXRpb25TdGF0ZS0+c2hvdWxkU2xvd1BhdGhSZXBhdGNoKQotICAgICAgICAgICAg
ICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJl
cGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOwor
ICAgICAgICAgICAgICAgIGFkZElDR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxs
T3BlcmF0aW9uKHJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGlubmVyTGVmdFJlZ3MsIGlubmVyUmlnaHRSZWdzLCBUcnVzdGVkSW1t
UHRyKG1hdGhJQykpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZElDR2Vu
ZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdG
dW5jdGlvbiwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlubmVyTGVm
dFJlZ3MsIGlubmVyUmlnaHRSZWdzKTsKKyAgICAgICAgICAgICAgICBhZGRJQ0dlbmVyYXRpb25T
dGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24s
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbm5lckxlZnRSZWdz
LCBpbm5lclJpZ2h0UmVncyk7CiAKICAgICAgICAgICAgIHNpbGVudEZpbGwoc2F2ZVBsYW5zKTsK
ICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC01NDgwLDcgKzU0ODUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVEJpbmFy
eU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSQogICAgICAgICB9CiAKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24sIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdz
KTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJl
Z3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICB9CiAKQEAgLTU1MTMsNyArNTUx
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mQ3VzdG9tKE5vZGUq
IG5vZGUpCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBzbG93Q2FzZSA9IG1faml0Lmp1bXAo
KTsKIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZSwgdGhp
cywgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgdmFsdWVSZWdzLCBjb25zdHJ1Y3RvckdQUiwgaGFzSW5zdGFuY2VSZWdzKSk7
CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlLCB0aGlzLCBv
cGVyYXRpb25JbnN0YW5jZU9mQ3VzdG9tLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGNvbnN0cnVjdG9yR1BSLCBoYXNJbnN0YW5jZVJlZ3MpKTsK
IAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTU2
MTIsOSArNTYxNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb09iamVjdE9yQ2Fs
bE9iamVjdENvbnN0cnVjdG9yKE5vZGUqIG5vZGUpCiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBs
KiBlcnJvck1lc3NhZ2UgPSBudWxscHRyOwogICAgICAgICBpZiAobm9kZS0+aWRlbnRpZmllck51
bWJlcigpICE9IFVJTlQzMl9NQVgpCiAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBpZGVudGlm
aWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7Ci0gICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvblRvT2JqZWN0LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJ
bW1QdHIoZXJyb3JNZXNzYWdlKSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub09iamVjdCwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKGVy
cm9yTWVzc2FnZSkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVj
dG9yLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIHZhbHVl
UmVncykpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nh
c2VzLCB0aGlzLCBvcGVyYXRpb25DYWxsT2JqZWN0Q29uc3RydWN0b3IsIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+
Y2VsbCgpKSwgdmFsdWVSZWdzKSk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiB9CkBAIC01NzU4LDcgKzU3NjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhBYnMoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1Zh
bHVlUmVncygpOwogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBGUFJSZXN1bHQg
cmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoQWJzLCBy
ZXN1bHQuZnByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aEFicywgcmVzdWx0LmZwcigpLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTU3ODIsNyArNTc4Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcml0aENsejMyKE5vZGUqIG5vZGUpCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKICAgICBHUFJSZWcgcmVzdWx0UmVnID0gcmVzdWx0LmdwcigpOwogICAgIGZsdXNoUmVnaXN0
ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aENsejMyLCByZXN1bHRSZWcs
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkFyaXRoQ2x6MzIsIHJlc3VsdFJlZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgc3RyaWN0
SW50MzJSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKIH0KQEAgLTU4MDYsNyArNTgxMSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERvdWJsZVVuYXJ5T3AoTm9kZSogbm9kZSwg
ZG91YmxlICgqZG91YmxlRnVuY3RpCiAgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1Zh
bHVlUmVncygpOwogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgRlBSUmVzdWx0IHJlc3VsdCh0
aGlzKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0LmZwcigpLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b24sIHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3Mp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5m
cHIoKSwgbm9kZSk7CiB9CkBAIC01OTIzLDcgKzU5MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5jT3JEZWMoTm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0
LnJlZ3MoKTsKICAgICBhdXRvIG9wZXJhdGlvbiA9IG5vZGUtPm9wKCkgPT0gSW5jID8gb3BlcmF0
aW9uSW5jIDogb3BlcmF0aW9uRGVjOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBvcDFSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CiB9CkBAIC02MDYyLDkgKzYwNjcsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdl
bmVyYXRvcj4qIG1hdGhJQwogICAgICAgICAgICAgc2lsZW50U3BpbGwoc2F2ZVBsYW5zKTsKIAog
ICAgICAgICAgICAgaWYgKGljR2VuZXJhdGlvblN0YXRlLT5zaG91bGRTbG93UGF0aFJlcGF0Y2gp
Ci0gICAgICAgICAgICAgICAgaWNHZW5lcmF0aW9uU3RhdGUtPnNsb3dQYXRoQ2FsbCA9IGNhbGxP
cGVyYXRpb24ocmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgY2hpbGRSZWdzLCBUcnVzdGVkSW1tUHRyKG1hdGhJQykpOworICAgICAgICAg
ICAgICAgIGljR2VuZXJhdGlvblN0YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKHJl
cGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGNoaWxkUmVncywgVHJ1c3RlZEltbVB0cihtYXRoSUMpKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBpY0dlbmVyYXRpb25TdGF0ZS0+c2xvd1BhdGhDYWxsID0gY2FsbE9w
ZXJhdGlvbihub25SZXBhdGNoaW5nRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBjaGlsZFJlZ3MpOworICAgICAgICAgICAgICAgIGljR2VuZXJhdGlvblN0
YXRlLT5zbG93UGF0aENhbGwgPSBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwg
cmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CiAK
ICAgICAgICAgICAgIHNpbGVudEZpbGwoc2F2ZVBsYW5zKTsKICAgICAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CkBAIC02MDg1LDcgKzYwOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTWF0aElDKE5vZGUqIG5vZGUsIEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1h
dGhJQwogICAgICAgICB9KTsKICAgICB9IGVsc2UgewogICAgICAgICBmbHVzaFJlZ2lzdGVycygp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vblJlcGF0Y2hpbmdGdW5jdGlvbiwgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGNoaWxkUmVncyk7CisgICAgICAgIGNhbGxP
cGVyYXRpb24obm9uUmVwYXRjaGluZ0Z1bmN0aW9uLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgY2hpbGRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICB9CiAKQEAgLTYxNTAsNyArNjE1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9
IHJlc3VsdC5yZWdzKCk7CiAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NdWxIZWFw
QmlnSW50LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwg
cmlnaHRHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk11bEhlYXBCaWdJbnQs
IHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0R1BSLCByaWdo
dEdQUik7CiAKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTYxNjgsNyArNjE3Myw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZU11bChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOwogICAgICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNdWwsIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKKyAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU11bCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7
CkBAIC02MzUwLDcgKzYzNTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVE
aXYoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygp
OwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGl2SGVhcEJpZ0ludCwgcmVzdWx0
UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EaXZIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
UmVncywgbm9kZSk7CkBAIC02MzY4LDcgKzYzNzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVmFsdWVEaXYoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAg
IEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsZWZ0UmVncywgcmlnaHRSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNjQ1Miw3ICs2
NDU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlRGl2KE5vZGUqIG5vZGUp
CiAgICAgICAgIG1faml0Lm1vdmVWYWx1ZShyaWdodENoaWxkLT5hc0pTVmFsdWUoKSwgcmlnaHRS
ZWdzKTsKICAgICB9CiAKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2LCByZXN1
bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZURpdiwgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogCiAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC02
NjE2LDcgKzY2MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhGUm91bmQo
Tm9kZSogbm9kZSkKICAgICBKU1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhGUm91bmQsIHJlc3VsdC5mcHIoKSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQXJpdGhGUm91bmQsIHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIG9wMVJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgZG91YmxlUmVz
dWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CkBAIC02NjQxLDcgKzY2NDYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEpTVmFsdWVSZWdz
IHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwogCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTW9kSGVhcEJpZ0ludCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxlZnRHUFIsIHJpZ2h0R1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25N
b2RIZWFwQmlnSW50LCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOwogCiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSk7CkBAIC02NjU4LDcgKzY2NjMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVNb2QoTm9kZSogbm9kZSkKICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEpTVmFsdWVSZWdzRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVNb2QsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblZhbHVlTW9kLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgb3AxUmVncywgb3AyUmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzA1NSw3ICs3MDYwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbmcoTm9kZSogbm9kZSkK
ICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQXJpdGhUcnVuYyk7CiAgICAgICAgIG9wZXJh
dGlvbiA9IG9wZXJhdGlvbkFyaXRoVHJ1bmM7CiAgICAgfQotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRS
ZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVzdWx0UmVncywgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncyk7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogfQpAQCAtNzA4
OCw3ICs3MDkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoU3FydChOb2Rl
KiBub2RlKQogICAgIEpTVmFsdWVSZWdzIG9wMVJlZ3MgPSBvcDEuanNWYWx1ZVJlZ3MoKTsKICAg
ICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25Bcml0aFNxcnQsIHJlc3VsdC5mcHIoKSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIG9wMVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJp
dGhTcXJ0LCByZXN1bHQuZnByKCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFS
ZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGRvdWJsZVJlc3VsdChyZXN1
bHQuZnByKCksIG5vZGUpOwogfQpAQCAtNzIxNiw3ICs3MjIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVSZWdzRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHRS
ZWdzID0gcmVzdWx0LnJlZ3MoKTsKIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblBv
d0hlYXBCaWdJbnQsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsZWZ0
R1BSLCByaWdodEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUG93SGVhcEJp
Z0ludCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKTsKIAogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNzIzNSw3ICs3MjQwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlUG93KE5vZGUqIG5vZGUpCiAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICBKU1ZhbHVlUmVnc0ZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKICAgICBKU1ZhbHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlUG93LCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZVBvdywgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGxlZnRSZWdzLCByaWdodFJlZ3MpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwpAQCAtNzk3Miw3ICs3OTc3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0VxdWFsaXR5KAogICAgIGRvbmUubGlu
aygmbV9qaXQpOwogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENh
bGwoCi0gICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmluZ0Vx
LCBsZWZ0VGVtcEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIsIHJpZ2h0
R1BSKSk7CisgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0aW9uQ29tcGFyZVN0cmlu
Z0VxLCBsZWZ0VGVtcEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxlZnRHUFIs
IHJpZ2h0R1BSKSk7CiAgICAgCiAgICAgYmxlc3NlZEJvb2xlYW5SZXN1bHQobGVmdFRlbXBHUFIs
IG5vZGUpOwogfQpAQCAtODEyMiw3ICs4MTI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0cmluZ0NvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWwK
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKGNvbXBhcmVGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVy
YXRpb24oY29tcGFyZUZ1bmN0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENv
bnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsZWZ0R1BSLCByaWdodEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTgyMjMs
NyArODIyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTYW1lVmFsdWUoTm9kZSog
bm9kZSkKIAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
U2FtZVZhbHVlLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVn
cywgYXJnMlJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2FtZVZhbHVlLCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3Mp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICB1bmJsZXNzZWRCb29sZWFuUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTgy
NDAsNyArODI0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb0Jvb2xlYW5TdHJp
bmcoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQpCiAgICAgR1BSVGVtcG9yYXJ5IGVxKHRoaXMpOwog
ICAgIEdQUlJlZyBlcUdQUiA9IGVxLmdwcigpOwogCi0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgZXFHUFIpOwor
ICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIGpzRW1wdHlTdHJpbmcodm0oKSkpLCBlcUdQUik7CiAgICAgbV9qaXQuY29t
cGFyZVB0cihpbnZlcnQgPyBDQ2FsbEhlbHBlcnM6OkVxdWFsIDogQ0NhbGxIZWxwZXJzOjpOb3RF
cXVhbCwgc3RyR1BSLCBlcUdQUiwgZXFHUFIpOwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQo
ZXFHUFIsIG5vZGUpOwogfQpAQCAtODI1Nyw3ICs4MjYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvQm9vbGVhblN0cmluZ09yT3RoZXIoTm9kZSogbm9kZSwgYm9vbCBpbnZlcnQp
CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHZhbHVlUmVncywgbm9kZS0+Y2hpbGQxKCks
ICh+U3BlY0NlbGxDaGVjaykgfCBTcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhj
ZWxsR1BSKSk7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIGpzRW1wdHlTdHJpbmcodm0oKSkpLCB0ZW1wR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5s
aW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBqc0Vt
cHR5U3RyaW5nKHZtKCkpKSwgdGVtcEdQUik7CiAgICAgbV9qaXQuY29tcGFyZVB0cihpbnZlcnQg
PyBDQ2FsbEhlbHBlcnM6OkVxdWFsIDogQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwgY2VsbEdQUiwg
dGVtcEdQUiwgdGVtcEdQUik7CiAgICAgYXV0byBkb25lID0gbV9qaXQuanVtcCgpOwogCkBAIC04
Mjc4LDcgKzgyODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RyaW5nQnJhbmNoKEVk
Z2Ugbm9kZVVzZSwgQmFzaWNCbG9jayogdGFrZW4sIEJhc2ljQmxvYwogCiAgICAgc3BlY3VsYXRl
U3RyaW5nKG5vZGVVc2UsIHN0ckdQUik7CiAKLSAgICBicmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpF
cXVhbCwgc3RyR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBqc0VtcHR5
U3RyaW5nKHZtKCkpKSwgbm90VGFrZW4pOworICAgIGJyYW5jaFVubGlua2VkQ29uc3RhbnQoQ0Nh
bGxIZWxwZXJzOjpFcXVhbCwgc3RyR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBqc0VtcHR5U3RyaW5nKHZtKCkpKSwgbm90VGFrZW4pOwogICAgIGp1bXAodGFrZW4p
OwogCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CkBAIC04Mjk1LDcgKzgzMDAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3RyaW5nT3JPdGhlckJyYW5jaChFZGdlIG5vZGVVc2Us
IEJhc2ljQmxvY2sqIHRha2VuLCBCYQogICAgIEdQUlJlZyBjZWxsR1BSID0gdmFsdWVSZWdzLnBh
eWxvYWRHUFIoKTsKICAgICBERkdfVFlQRV9DSEVDSyh2YWx1ZVJlZ3MsIG5vZGVVc2UsICh+U3Bl
Y0NlbGxDaGVjaykgfCBTcGVjU3RyaW5nLCBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhjZWxsR1BS
KSk7CiAKLSAgICBicmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgY2VsbEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwganNFbXB0eVN0cmluZyh2bSgpKSksIG5vdFRh
a2VuKTsKKyAgICBicmFuY2hVbmxpbmtlZENvbnN0YW50KENDYWxsSGVscGVyczo6RXF1YWwsIGNl
bGxHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGpzRW1wdHlTdHJp
bmcodm0oKSkpLCBub3RUYWtlbik7CiAgICAganVtcCh0YWtlbiwgRm9yY2VKdW1wKTsKIAogICAg
IG5vdENlbGwubGluaygmbV9qaXQpOwpAQCAtODMwOSw3ICs4MzE0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNvbnN0YW50U3RvcmFnZVBvaW50ZXIoTm9kZSogbm9kZSkKIHsKICAg
ICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0
b3JhZ2UuZ3ByKCk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG5vZGUtPnN0b3JhZ2VQ
b2ludGVyKCkpLCBzdG9yYWdlR1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6bm9uQ2VsbFBvaW50ZXIobV9ncmFwaCwgbm9k
ZS0+c3RvcmFnZVBvaW50ZXIoKSksIHN0b3JhZ2VHUFIpOwogICAgIHN0b3JhZ2VSZXN1bHQoc3Rv
cmFnZUdQUiwgbm9kZSk7CiB9CiAKQEAgLTgzNTYsNyArODM2MSw2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqIG5vZGUpCiAgICAg
R1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwogICAgIAogICAgIEFTU0VSVChub2Rl
LT5hcnJheU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6OlN0cmluZyk7Ci0KICAgICBhdXRvIHR5cGVk
QXJyYXlUeXBlID0gbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICBBU1NF
UlRfVU5VU0VEKHR5cGVkQXJyYXlUeXBlLCBpc1R5cGVkVmlldyh0eXBlZEFycmF5VHlwZSkpOwog
CkBAIC04MzgyLDcgKzgzODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzb2x2
ZVJvcGUoTm9kZSogbm9kZSkKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgc2xv
d1BhdGhDYWxsKAogICAgICAgICAgICAgc2xvd0Nhc2VzLAotICAgICAgICAgICAgdGhpcywgb3Bl
cmF0aW9uUmVzb2x2ZVJvcGVTdHJpbmcsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIpKTsKKyAgICAgICAgICAgIHRoaXMsIG9wZXJhdGlvblJlc29sdmVSb3Bl
U3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BS
KSk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCkBAIC04NDc5LDcgKzg0
ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkRpcmVjdEFyZ3Vt
ZW50cyhOb2RlKiBub2RlLCBjb25zdCBTY29wZWRMYQogICAgICAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBpc091dE9m
Qm91bmRzLCB0aGlzLCBvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAg
ICBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
YmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICBleHRyYWN0UmVzdWx0KHJl
c3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVy
dHlSZWcpKTsKICAgICB9CiAgICAgCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKQEAgLTg1ODUsOCArODU4OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRH
bG9iYWxUaGlzKE5vZGUqIG5vZGUpCiB7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGF1dG8qIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgbV9qaXQubG9hZFB0cihnbG9iYWxPYmplY3QtPmFkZHJlc3NPZkdsb2JhbFRoaXMoKSwgcmVz
dWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTR2xvYmFsT2JqZWN0OjpvZmZzZXRPZkdsb2JhbFRoaXMo
KSksIHJlc3VsdEdQUik7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCkBA
IC04NzQ4LDcgKzg3NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rp
b25Db21tb24oR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdAogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xv
d1BhdGgsIHNpemUpOwogICAgIAogICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mU2NvcGVDaGFpbigp
KSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgZXhlY3V0YWJsZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZFeGVjdXRhYmxlT3JSYXJlRGF0YSgpKSk7CisgICAgbV9qaXQuc3RvcmVVbmxp
bmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGV4ZWN1
dGFibGUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTRnVuY3Rpb246Om9mZnNl
dE9mRXhlY3V0YWJsZU9yUmFyZURhdGEoKSkpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgp
KTsKIH0KIApAQCAtODc2OSwxMyArODc3MywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAog
ICAgICAgICBpZiAobm9kZVR5cGUgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24pCi0gICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uLCByZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBzY29wZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgZXhlY3V0YWJsZSkpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKCZ2bSgp
KSwgc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGV4ZWN1
dGFibGUpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbikK
LSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgc2NvcGVHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIGV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKCZ2
bSgpKSwgc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGV4
ZWN1dGFibGUpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZVR5cGUgPT0gTmV3QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbikKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNH
ZW5lcmF0b3JGdW5jdGlvbiwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgc2NvcGVH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGV4ZWN1dGFibGUpKTsKKyAg
ICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlv
biwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgc2NvcGVHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGV4ZWN1dGFibGUpKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdGdW5jdGlvbiwgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgc2NvcGVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIGV4ZWN1dGFibGUpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3RnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cigmdm0oKSksIHNjb3Bl
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBleGVjdXRhYmxlKSk7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODgxMSwyNSArODgxNSwyNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oTm9kZSogbm9kZSkKICAgICBp
ZiAobm9kZVR5cGUgPT0gTmV3RnVuY3Rpb24pIHsKICAgICAgICAgY29tcGlsZU5ld0Z1bmN0aW9u
Q29tbW9uPEpTRnVuY3Rpb24+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzY3JhdGNoMUdQUiwgc2Ny
YXRjaDJHUFIsIHNjb3BlR1BSLCBzbG93UGF0aCwgSlNGdW5jdGlvbjo6YWxsb2NhdGlvblNpemUo
MCksIGV4ZWN1dGFibGUpOwogICAgICAgICAgICAgCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJh
dG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3RnVuY3Rpb25XaXRo
SW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHIoJnZtKCkpLCBzY29wZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
ZXhlY3V0YWJsZSkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxs
KHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cigmdm0oKSksIHNjb3Bl
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBleGVjdXRhYmxlKSkp
OwogICAgIH0KIAogICAgIGlmIChub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbikgewog
ICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlvbj4ocmVz
dWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNs
b3dQYXRoLCBKU0dlbmVyYXRvckZ1bmN0aW9uOjphbGxvY2F0aW9uU2l6ZSgwKSwgZXhlY3V0YWJs
ZSk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRo
LCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cigmdm0oKSksIHNjb3Bl
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBleGVjdXRhYmxlKSkpOwor
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMs
IG9wZXJhdGlvbk5ld0dlbmVyYXRvckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9u
V2F0Y2hwb2ludCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgc2NvcGVHUFIsIEpJ
VENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGV4ZWN1dGFibGUpKSk7CiAgICAg
fQogCiAgICAgaWYgKG5vZGVUeXBlID09IE5ld0FzeW5jRnVuY3Rpb24pIHsKICAgICAgICAgY29t
cGlsZU5ld0Z1bmN0aW9uQ29tbW9uPEpTQXN5bmNGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1
cmUsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0FzeW5j
RnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlKTsKIAotICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5l
d0FzeW5jRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50LCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBzY29wZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgZXhlY3V0YWJsZSkpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdBc3luY0Z1bmN0
aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludCwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyKCZ2bSgpKSwgc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIGV4ZWN1dGFibGUpKSk7CiAgICAgfQogCiAgICAgaWYgKG5vZGVUeXBlID09IE5l
d0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24pIHsKICAgICAgICAgY29tcGlsZU5ld0Z1bmN0aW9uQ29t
bW9uPEpTQXN5bmNHZW5lcmF0b3JGdW5jdGlvbj4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0
Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2NvcGVHUFIsIHNsb3dQYXRoLCBKU0FzeW5jR2VuZXJhdG9y
RnVuY3Rpb246OmFsbG9jYXRpb25TaXplKDApLCBleGVjdXRhYmxlKTsKICAgICAgICAgCi0gICAg
ICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3Bl
cmF0aW9uTmV3QXN5bmNHZW5lcmF0b3JGdW5jdGlvbldpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlv
bldhdGNocG9pbnQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cigmdm0oKSksIHNjb3BlR1BSLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBleGVjdXRhYmxlKSkpOworICAgICAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJh
dGlvbk5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25XaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25X
YXRjaHBvaW50LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBzY29wZUdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZXhlY3V0YWJsZSkpKTsKICAgICB9
CiAgICAgCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtODg0Myw3ICs4ODQ3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEZ1bmN0aW9uTmFtZShOb2RlKiBu
b2RlKQogICAgIEpTVmFsdWVSZWdzIG5hbWVWYWx1ZVJlZ3MgPSBuYW1lVmFsdWUuanNWYWx1ZVJl
Z3MoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TZXRGdW5jdGlvbk5hbWUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBmdW5jR1BSLCBu
YW1lVmFsdWVSZWdzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldEZ1bmN0aW9uTmFt
ZSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGZ1bmNHUFIsIG5hbWVWYWx1ZVJlZ3Mp
OwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKQEAg
LTg4NjAsNyArODg2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYXJhcmdzTGVu
Z3RoKE5vZGUqIG5vZGUpCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICB1bmxvY2soR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZW
YXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CisgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25TaXplT2ZWYXJhcmdzLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCk7CiAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGxvY2soR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIp
OwpAQCAtODg5Nyw3ICs4OTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvYWRW
YXJhcmdzKE5vZGUqIG5vZGUpCiAKICAgICBtX2ppdC5zdG9yZTMyKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihkYXRhLT5tYWNoaW5lQ291bnQpKTsK
IAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFyZ3VtZW50c1JlZ3Ms
IGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGRhdGEtPm1hbmRhdG9y
eU1pbmltdW0pOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTG9hZFZhcmFyZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBkYXRhLT5tYWNoaW5lU3RhcnQub2Zmc2V0KCksIGFy
Z3VtZW50c1JlZ3MsIGRhdGEtPm9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGRh
dGEtPm1hbmRhdG9yeU1pbmltdW0pOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAg
ICBub1Jlc3VsdChub2RlKTsKQEAgLTg5OTYsMTAgKzkwMDAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSogbm9kZSkKIAogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRp
cmVjdCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cigmdm0oKSksIHN0cnVj
dHVyZSwgc2NvcGVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIHRhYmxl
KSwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXphdGlvblZhbHVlKSkpOwor
ICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgc3RydWN0dXJlLCBz
Y29wZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdGFibGUpLCBU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxpemF0aW9uVmFsdWUpKSk7CiAjZWxz
ZQogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3Qs
Ci0gICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBzdHJ1Y3R1cmUs
IHNjb3BlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCB0YWJsZSksIGlu
aXRpYWxpemF0aW9uUmVncyk7CisgICAgICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIo
JnZtKCkpLCBzdHJ1Y3R1cmUsIHNjb3BlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCB0YWJsZSksIGluaXRpYWxpemF0aW9uUmVncyk7CiAjZW5kaWYKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwpAQCAtOTAyOCwxMCArOTAzMiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVBY3RpdmF0aW9uKE5vZGUqIG5vZGUpCiAgICAgLy8gRG9uJ3QgbmVlZCBhIG1lbW9yeSBi
YXJyaWVycyBzaW5jZSB3ZSBqdXN0IGZhc3QtY3JlYXRlZCB0aGUgYWN0aXZhdGlvbiwgc28gdGhl
CiAgICAgLy8gYWN0aXZhdGlvbiBtdXN0IGJlIHlvdW5nLgogICAgIG1faml0LnN0b3JlUHRyKHNj
b3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU2NvcGU6Om9mZnNldE9m
TmV4dCgpKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIobm9k
ZS0+Y2VsbE9wZXJhbmQoKSksCi0gICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
UiwgSlNMZXhpY2FsRW52aXJvbm1lbnQ6Om9mZnNldE9mU3ltYm9sVGFibGUoKSkpOwotICAgICAg
ICAKKyAgICBtX2ppdC5zdG9yZVVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0xleGljYWxFbnZpcm9ubWVudDo6b2Zmc2V0T2ZTeW1i
b2xUYWJsZSgpKSk7CisKICAgICAvLyBNdXN0IGluaXRpYWxpemUgYWxsIG1lbWJlcnMgdG8gdW5k
ZWZpbmVkIG9yIHRoZSBURFogZW1wdHkgdmFsdWUuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRhYmxlLT5zY29wZVNpemUoKTsgKytpKSB7CiAgICAgICAgIG1faml0LnN0b3JlVHJ1c3Rl
ZFZhbHVlKApAQCAtOTA0NSwxMSArOTA0NywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKiBub2RlKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
IHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0LCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBzdHJ1Y3R1cmUsIHNjb3BlR1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCB0YWJsZSksIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpl
bmNvZGUoaW5pdGlhbGl6YXRpb25WYWx1ZSkpKSk7CisgICAgICAgICAgICBzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyKCZ2bSgpKSwgc3RydWN0dXJlLCBzY29wZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgdGFibGUpLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRp
YWxpemF0aW9uVmFsdWUpKSkpOwogI2Vsc2UKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAg
ICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cigmdm0oKSks
IHN0cnVjdHVyZSwgc2NvcGVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IHRhYmxlKSwgaW5pdGlhbGl6YXRpb25SZWdzKSk7CisgICAgICAgICAgICBzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyKCZ2bSgpKSwgc3RydWN0dXJlLCBzY29wZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgdGFibGUpLCBpbml0aWFsaXphdGlvblJlZ3MpKTsKICNlbmRpZgogCiAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtOTE1OCwxMiArOTE2MCw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKICAgICAgICAgICAg
ICAgICAgICAgaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIo
KSksCiAgICAgICAgICAgICAgICAgc2NyYXRjaDFHUFIpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcigKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaCwgaW5saW5lQ2FsbEZyYW1lLT5j
YWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwKLSAgICAgICAgICAgICAgICBzY3Jh
dGNoMUdQUik7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX2ppdC5s
b2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLCBz
Y3JhdGNoMUdQUik7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgc2NyYXRjaDFHUFIpOwogCkBA
IC05MjYxLDcgKzkyNTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlU2Nv
cGVkQXJndW1lbnRzKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwogCi0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIAogICAgIC8vIFdlIHNldCB1cCB0aGUgYXJn
dW1lbnRzIG91cnNlbHZlcywgYmVjYXVzZSB3ZSBoYXZlIHRoZSB3aG9sZSByZWdpc3RlciBmaWxl
IGFuZCB3ZSBjYW4KICAgICAvLyBzZXQgdGhlbSB1cCBkaXJlY3RseSBpbnRvIHRoZSBhcmd1bWVu
dCByZWdpc3RlcnMuIFRoaXMgYWxzbyBtZWFucyB0aGF0IHdlIGRvbid0IGhhdmUgdG8KQEAgLTky
NzgsMTEgKzkyNzYsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3Bl
ZEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIG1faml0LnNldHVwQXJndW1lbnQoMiwgWyZdIChH
UFJSZWcgZGVzdEdQUikgeyBlbWl0R2V0QXJndW1lbnRTdGFydChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGRlc3RHUFIpOyB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBb
Jl0gKEdQUlJlZyBkZXN0R1BSKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdC0+
c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAotICAgICAgICAgICAgICAgIGRlc3RHUFIpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0LT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1
cmUoKSksIGRlc3RHUFIpOworICAgICAgICB9KTsKKyAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAor
ICAgICAgICAwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CisgICAgICAgICAgICBtX2ppdC5sb2Fk
VW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZGVzdEdQUik7
CiAgICAgICAgIH0pOwotICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcgZGVz
dEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGds
b2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKICAgICAKICAgICBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwpAQCAtOTI5Niw3ICs5Mjk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZUNsb25lZEFyZ3VtZW50cyhOb2RlKiBub2RlKQogICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAKICAgICAv
LyBXZSBzZXQgdXAgdGhlIGFyZ3VtZW50cyBvdXJzZWx2ZXMsIGJlY2F1c2Ugd2UgaGF2ZSB0aGUg
d2hvbGUgcmVnaXN0ZXIgZmlsZSBhbmQgd2UgY2FuCiAgICAgLy8gc2V0IHRoZW0gdXAgZGlyZWN0
bHkgaW50byB0aGUgYXJndW1lbnQgcmVnaXN0ZXJzLgpAQCAtOTMwNywxMiArOTMwNiwxMiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKE5vZGUqIG5v
ZGUpCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVt
aXRHZXRBcmd1bWVudFN0YXJ0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwog
ICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIp
IHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIoCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGdsb2JhbE9iamVj
dC0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAotICAgICAgICAgICAgICAgIGRlc3RHUFIp
OworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0LT5jbG9uZWRBcmd1bWVudHNTdHJ1
Y3R1cmUoKSksIGRlc3RHUFIpOworICAgICAgICB9KTsKKyAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
KAorICAgICAgICAwLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CisgICAgICAgICAgICBtX2ppdC5s
b2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZGVzdEdQ
Uik7CiAgICAgICAgIH0pOwotICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcg
ZGVzdEdQUikgeyBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IGdsb2JhbE9iamVjdCksIGRlc3RHUFIpOyB9KTsKICAgICAKICAgICBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cywgcmVzdWx0R1BSKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwpAQCAtOTMyNiwxNSArOTMyNSwxNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQ3JlYXRlQXJndW1lbnRzQnV0dGVyZmx5KE5vZGUqIG5vZGUpCiAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwog
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotCiAgICAgLy8gV2Ugc2V0IHVwIHRoZSBhcmd1bWVu
dHMgb3Vyc2VsdmVzLCBiZWNhdXNlIHdlIGhhdmUgdGhlIHdob2xlIHJlZ2lzdGVyIGZpbGUgYW5k
IHdlIGNhbgogICAgIC8vIHNldCB0aGVtIHVwIGRpcmVjdGx5IGludG8gdGhlIGFyZ3VtZW50IHJl
Z2lzdGVycy4KIAogICAgIC8vIEFyZ3VtZW50czogMDpKU0dsb2JhbE9iamVjdCosIDE6c3RhcnQs
IDM6bGVuZ3RoCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgyLCBbJl0gKEdQUlJlZyBkZXN0R1BS
KSB7IGVtaXRHZXRMZW5ndGgobm9kZS0+b3JpZ2luLnNlbWFudGljLCBkZXN0R1BSKTsgfSk7CiAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudCgxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IGVtaXRHZXRB
cmd1bWVudFN0YXJ0KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgZGVzdEdQUik7IH0pOwotICAgIG1f
aml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGRlc3RHUFIp
OyB9KTsKKyAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAorICAgICAgICAwLCBbJl0gKEdQUlJlZyBk
ZXN0R1BSKSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZGVzdEdQUik7CisgICAgICAgIH0pOwogCiAgICAgYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb25DcmVhdGVBcmd1bWVudHNCdXR0ZXJmbHksIHJlc3Vs
dEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTk0MDMsNyArOTQwMyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVSZXN0KE5vZGUqIG5vZGUpCiAKICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVJlc3Qs
IHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c1N0YXJ0R1BS
LCBJbW0zMihub2RlLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpKSwgYXJyYXlMZW5ndGhHUFIp
OworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlUmVzdCwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRzU3RhcnRHUFIsIEltbTMyKG5vZGUt
Pm51bWJlck9mQXJndW1lbnRzVG9Ta2lwKCkpLCBhcnJheUxlbmd0aEdQUik7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAg
LTk0NTcsNyArOTQ1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9k
ZSogbm9kZSkKICAgICAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMyKDMpLCBzY3JhdGNo
MUdQUik7CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihKU0ltbXV0YWJsZUJ1dHRl
cmZseTo6b2Zmc2V0T2ZEYXRhKCkpLCBzY3JhdGNoMUdQUik7CiAKLSAgICAgICAgbV9qaXQuZW1p
dEFsbG9jYXRlVmFyaWFibGVTaXplZENlbGw8SlNJbW11dGFibGVCdXR0ZXJmbHk+KHZtKCksIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgu
bV92bS5pbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdU
eXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hh
cGVzXS5nZXQoKSkpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93
UGF0aCk7CisgICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTSW1t
dXRhYmxlQnV0dGVyZmx5Pih2bSgpLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZSh2bSgpLmltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJ
bmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51
bWJlck9mSW5kZXhpbmdTaGFwZXNdLmdldCgpKSksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihsZW5ndGhHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbW11dGFibGVCdXR0ZXJmbHk6
Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihsZW5ndGhH
UFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbW11dGFibGVCdXR0ZXJm
bHk6Om9mZnNldE9mVmVjdG9yTGVuZ3RoKCkpKTsKIApAQCAtOTQ5Nyw3ICs5NDk3LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKiBub2RlKQogICAgICAgICAgICAg
ZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25TcHJlYWRGYXN0QXJyYXksIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZ3VtZW50KSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChz
bG93UGF0aCwgdGhpcywgb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5LCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudCkpOwogCiAgICAgICAgIGRvbmUubGlu
aygmbV9qaXQpOwogICAgICAgICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0oKSk7CkBAIC05NTA3LDcg
Kzk1MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3ByZWFkKE5vZGUqIG5vZGUp
CiAKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJndW1lbnQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVhZEZh
c3RBcnJheSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1l
bnQpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKQEAgLTk1MTYsNyAr
OTUxNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSogbm9kZSkK
IAogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uU3ByZWFkR2VuZXJpYywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJndW1lbnQpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNwcmVhZEdlbmVy
aWMsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50KTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgIH0KQEAgLTk2NTMsNyArOTY1Myw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdBcnJheShOb2RlKiBub2RlKQogICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICBvcGVyYXRpb25O
ZXdBcnJheSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBn
bG9iYWxPYmplY3QpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5n
VHlwZSgpKSksCisgICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgVHJ1c3Rl
ZEltbVB0cihidWZmZXIpLCBzaXplX3Qobm9kZS0+bnVtQ2hpbGRyZW4oKSkpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTk4MTIsNyArOTgxMiw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQoTm9kZSogbm9kZSkKICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKIAotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU3ByZWFk
U2xvdywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9i
YWxPYmplY3QpLCBUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVuKCkpOwor
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU3ByZWFkU2xvdywgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVuKCkpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBA
IC05OTkyLDcgKzk5OTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGlj
ZShOb2RlKiBub2RlKQogICAgICAgICB9CiAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
bWFrZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1Y3R1cmVWYXJpYWJs
ZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9w
ZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdl
UmVzdWx0R1BSKSk7CisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0Fy
cmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgZ2xvYmFsT2JqZWN0KSwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BS
KSk7CiAgICAgfQogCiAgICAgR1BSVGVtcG9yYXJ5IHRlbXA0KHRoaXMpOwpAQCAtMTAyMTEsNyAr
MTAyMTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlJbmRleE9mKE5vZGUq
IG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlN0cmluZywgbGVuZ3RoR1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudEdQUiwgaW5kZXhHUFIpOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlN0cmluZywgbGVuZ3Ro
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxl
bWVudEdQUiwgaW5kZXhHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgICAgIHN0cmljdEludDMyUmVzdWx0KGxlbmd0aEdQUiwgbm9kZSk7CkBAIC0xMDIyNiwxMSAr
MTAyMjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5SW5kZXhPZihOb2Rl
KiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBzd2l0Y2ggKG5vZGUt
PmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVlRG91YmxlLCBs
ZW5ndGhHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzdG9yYWdlR1BSLCBzZWFyY2hF
bGVtZW50UmVncywgaW5kZXhHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25BcnJheUluZGV4T2ZWYWx1ZURvdWJsZSwgbGVuZ3RoR1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpJbnQzMjoKICAgICAgICAgY2Fz
ZSBBcnJheTo6Q29udGlndW91czoKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
QXJyYXlJbmRleE9mVmFsdWVJbnQzMk9yQ29udGlndW91cywgbGVuZ3RoR1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BS
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVJ
bnQzMk9yQ29udGlndW91cywgbGVuZ3RoR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgc3RvcmFnZUdQUiwgc2VhcmNoRWxlbWVudFJlZ3MsIGluZGV4R1BSKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTEwMjk5LDcgKzEwMjk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQuYm94SW50MzIo
c3RvcmFnZUxlbmd0aEdQUiwgcmVzdWx0UmVncyk7CiAKICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywg
b3BlcmF0aW9uQXJyYXlQdXNoLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgdmFsdWVSZWdzLCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNs
b3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZ3MsIGJhc2VHUFIpKTsKIAogICAgICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEwMzQ1LDcgKzEwMzQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVz
aChOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0g
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVz
dGVkSW1tUHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0
YUJ1ZmZlcigpKSkpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlLCByZXN1bHRS
ZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVz
dGVkSW1tMzIoZWxlbWVudENvdW50KSkpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBs
ZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1
ZmZlckdQUiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKIAogICAgICAgICBiYXNlLnVz
ZSgpOwogICAgICAgICBzdG9yYWdlLnVzZSgpOwpAQCAtMTAzNzAsNyArMTAzNzAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICBtX2ppdC5ib3hJbnQzMihzdG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKIAogICAgICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxs
KHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUsIHJlc3VsdFJlZ3MsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZUZQUiwgYmFzZUdQUikpOworICAgICAgICAg
ICAgICAgIHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoRG91
YmxlLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVGUFIs
IGJhc2VHUFIpKTsKIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNDE0LDcgKzEwNDE0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tUHRyKHN0YXRpY19jYXN0PEVuY29kZWRK
U1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSkpOwogCi0gICAgICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChtX2ppdC5qdW1wKCksIHRoaXMsIG9wZXJhdGlv
bkFycmF5UHVzaERvdWJsZU11bHRpcGxlLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYmFzZUdQUiwgYnVmZmVyR1BSLCBUcnVzdGVkSW1tMzIoZWxlbWVudENvdW50KSkp
OworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwobV9qaXQuanVtcCgp
LCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hEb3VibGVNdWx0aXBsZSwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQUiwgVHJ1c3RlZElt
bTMyKGVsZW1lbnRDb3VudCkpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBzdG9y
YWdlLnVzZSgpOwpAQCAtMTA0NDcsNyArMTA0NDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJyYXlQdXNoKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihz
dG9yYWdlTGVuZ3RoR1BSLCByZXN1bHRSZWdzKTsKIAogICAgICAgICAgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3IoCi0gICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25BcnJheVB1c2gsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB2YWx1ZVJlZ3MsIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoc2xv
d1BhdGgsIHRoaXMsIG9wZXJhdGlvbkFycmF5UHVzaCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVncywgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTA0OTEsNyArMTA0OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlQdXNo
KE5vZGUqIG5vZGUpCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGZhc3RQYXRoID0gbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgYnVmZmVyR1BSLCBUcnVzdGVk
SW1tUHRyKHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1
ZmZlcigpKSkpOwogCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKG1faml0Lmp1bXAoKSwgdGhpcywgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlw
bGUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBidWZm
ZXJHUFIsIFRydXN0ZWRJbW0zMihlbGVtZW50Q291bnQpKSk7CisgICAgICAgICAgICBzbG93UGF0
aENhbGwobV9qaXQuanVtcCgpLCB0aGlzLCBvcGVyYXRpb25BcnJheVB1c2hNdWx0aXBsZSwgcmVz
dWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGJ1ZmZlckdQ
UiwgVHJ1c3RlZEltbTMyKGVsZW1lbnRDb3VudCkpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwog
ICAgICAgICBzdG9yYWdlLnVzZSgpOwpAQCAtMTA1NDYsOCArMTA1NDYsNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSXNPYmplY3QoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVR5cGVPZklzT2JqZWN0KE5vZGUqIG5vZGUpCiB7Ci0gICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7Ci0gICAgCiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdz
KCk7CiAgICAgCkBAIC0xMDU3OSw3ICsxMDU3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUeXBlT2ZJc09iamVjdChOb2RlKiBub2RlKQogICAgIAogICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uVHlwZU9mSXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25UeXBlT2ZJc09iamVjdCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAg
ICAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEwNTg5LDggKzEwNTg3LDYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZklzT2JqZWN0KE5vZGUqIG5vZGUpCiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJc0NhbGxhYmxlKE5vZGUqIG5vZGUsIFNfSklUT3BlcmF0
aW9uX0dDIHNsb3dQYXRoT3BlcmF0aW9uKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwot
ICAgIAogICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogICAgIApAQCAt
MTA2MTYsNyArMTA2MTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDYWxsYWJs
ZShOb2RlKiBub2RlLCBTX0pJVE9wZXJhdGlvbl9HQyBzbG93UGF0aE9wZQogICAgIAogICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICBz
bG93UGF0aCwgdGhpcywgc2xvd1BhdGhPcGVyYXRpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwKKyAgICAgICAgICAgIHNsb3dQ
YXRoLCB0aGlzLCBzbG93UGF0aE9wZXJhdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgIHZhbHVlUmVncy5wYXlsb2FkR1BSKCkpKTsKICAg
ICAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEwNjMyLDE0ICsxMDYyOCwxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlSXNDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogCi0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Jc0NvbnN0cnVjdG9y
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSXNDb25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAgICB1bmJsZXNzZWRCb29sZWFu
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUeXBlT2YoTm9kZSogbm9kZSkKIHsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAK
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUuanNWYWx1ZVJlZ3MoKTsKICAgICAKQEAgLTEwNjUx
LDcgKzEwNjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKiBu
b2RlKQogICAgIG1faml0LmVtaXRUeXBlT2YoCiAgICAgICAgIHZhbHVlUmVncywgcmVzdWx0R1BS
LAogICAgICAgICBbJl0gKFR5cGVvZlR5cGUgdHlwZSwgYm9vbCBmYWxsc1Rocm91Z2gpIHsKLSAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
dm0oKS5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0eXBlKSksIHJlc3VsdEdQUik7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudChtX2dyYXBoLCB2bSgpLnNtYWxsU3RyaW5ncy50eXBlU3RyaW5nKHR5cGUpKSwgcmVzdWx0
R1BSKTsKICAgICAgICAgICAgIGlmICghZmFsbHNUaHJvdWdoKQogICAgICAgICAgICAgICAgIGRv
bmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0sCkBAIC0xMDY2Miw3ICsxMDY1Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2YoTm9kZSogbm9kZSkKIAogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAg
ICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uVHlwZU9mT2JqZWN0LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksCisgICAgICAgICAg
ICBzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uVHlwZU9mT2JqZWN0LCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgdmFsdWVSZWdzLnBheWxvYWRH
UFIoKSkpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTEwNzEx
LDcgKzEwNzA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrSXNDb25zdGFu
dChOb2RlKiBub2RlKQogewogICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2Vs
bFVzZSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDb25zdGFudFZhbHVlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdwcigpKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0
LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBjZWxsLmdwcigpLCBub2RlLT5j
ZWxsT3BlcmFuZCgpLT5jZWxsKCkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDb25z
dGFudFZhbHVlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsLmdwcigpKSwgbm9kZS0+
Y2hpbGQxKCksIG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBjZWxsLmdwcigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBu
b2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNT
RVJUKCFub2RlLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpIHx8ICFub2RlLT5jb25zdGFu
dCgpLT52YWx1ZSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CkBAIC0xMDk4MiwxMyArMTA5NzYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNhbGxET00oTm9kZSogbm9kZSkKICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCArIDE7CiAgICAgc3dpdGNo
IChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgIGNhc2UgMToKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQPihmdW5jdGlvbi5n
ZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCByZWdzWzBdKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpf
SklUT3BlcmF0aW9uX0dQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0UmVn
cyksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSAyOgotICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8
Sl9KSVRPcGVyYXRpb25fR1BQPihmdW5jdGlvbi5nZXQoKSksIGV4dHJhY3RSZXN1bHQocmVzdWx0
UmVncyksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCByZWdzWzBdLCByZWdzWzFdKTsKKyAg
ICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0dQUD4o
ZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVnc1sxXSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgMzoKLSAgICAgICAgY2FsbE9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3Bl
cmF0aW9uX0dQUFA+KGZ1bmN0aW9uLmdldCgpKSwgZXh0cmFjdFJlc3VsdChyZXN1bHRSZWdzKSwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHJlZ3NbMF0sIHJlZ3NbMV0sIHJlZ3NbMl0pOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKHJlaW50ZXJwcmV0X2Nhc3Q8Sl9KSVRPcGVyYXRpb25fR1BQ
UD4oZnVuY3Rpb24uZ2V0KCkpLCBleHRyYWN0UmVzdWx0KHJlc3VsdFJlZ3MpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgcmVnc1swXSwgcmVnc1sxXSwgcmVnc1syXSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0xMTAxMiw5ICsxMTAwNiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
YWxsRE9NR2V0dGVyKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZUpJVENhZ2UoKSkKLSAgICAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKSVA+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgVHJ1c3RlZEltbVB0cihpZGVudGlm
aWVyVUlEKG5vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXIpKSwgVHJ1
c3RlZEltbVB0cihnZXR0ZXIuZXhlY3V0YWJsZUFkZHJlc3MoKSkpOworICAgICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHM8Sl9KSVRPcGVyYXRpb25fR0pJUD4oSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBUcnVzdGVkSW1t
UHRyKGlkZW50aWZpZXJVSUQobm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51
bWJlcikpLCBUcnVzdGVkSW1tUHRyKGdldHRlci5leGVjdXRhYmxlQWRkcmVzcygpKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzPEpfSklUT3BlcmF0aW9u
X0dKST4oVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIENDYWxsSGVscGVyczo6Q2VsbFZhbHVl
KGJhc2VHUFIpLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXJVSUQobm9kZS0+Y2FsbERPTUdldHRl
ckRhdGEoKS0+aWRlbnRpZmllck51bWJlcikpKTsKKyAgICAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzPEpfSklUT3BlcmF0aW9uX0dKST4oSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZp
ZXJVSUQobm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+aWRlbnRpZmllck51bWJlcikpKTsKIAog
ICAgICAgICBtX2ppdC5zdG9yZVB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtKCku
dG9wQ2FsbEZyYW1lKTsKICAgICAgICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihtX2N1cnJl
bnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwpAQCAtMTExNTUsMTAgKzExMTQ5LDEwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JT
dHJpbmdWYWx1ZU9mKE5vZGUqCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAKICAgICAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBv
cDFSZWdzKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9TdHJpbmcsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wMVJlZ3MpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IENhbGxTdHJpbmdDb25z
dHJ1Y3Rvcik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdD
b25zdHJ1Y3RvciwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVn
cyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1
Y3RvciwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7
CiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTExODUsMTIgKzExMTc5LDEyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JT
dHJpbmdWYWx1ZU9mKE5vZGUqCiAgICAgICAgICAgICBzbG93UGF0aDIubGluaygmbV9qaXQpOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRvU3RyaW5nKQotICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZywgcmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvblRvU3RyaW5nLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBvcDFSZWdzKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+b3AoKSA9PSBTdHJpbmdWYWx1ZU9m
KQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdWYWx1ZU9mLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nVmFsdWVPZiwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncyk7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKTsKLSAgICAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKKyAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCByZXN1bHRHUFIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzKTsKICAgICAgICAgfQogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQpA
QCAtMTEyNjEsMTAgKzExMjU1LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0
cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yT3JTdHJpbmdWYWx1ZU9mKE5vZGUqCiAgICAgICAg
ICAgICBuZWVkQ2FsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG5vZGUt
Pm9wKCkgPT0gVG9TdHJpbmcpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRv
U3RyaW5nT25DZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFH
UFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub1N0cmluZ09uQ2VsbCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxR1BSKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBDYWxsU3RyaW5nQ29u
c3RydWN0b3IpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25DYWxsU3RyaW5n
Q29uc3RydWN0b3JPbkNlbGwsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9wMUdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxTdHJpbmdD
b25zdHJ1Y3Rvck9uQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgb3AxR1BSKTsKICAgICAgICAgfQogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICBpZiAoZG9uZS5pc1NldCgpKQpAQCAtMTEzMTcsNyArMTEzMTEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRnVuY3Rpb25Ub1N0cmluZyhOb2RlKiBub2RlKQogICAgIGNv
bnRpbnVhdGlvbi5saW5rKCZtX2ppdCk7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHQuZ3ByKCkpKTsKIAotICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkZ1bmN0aW9uVG9TdHJpbmcsIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGZ1bmN0aW9uLmdwcigpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uRnVuY3Rpb25Ub1N0cmluZywgcmVzdWx0Lmdw
cigpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgZnVuY3Rpb24uZ3ByKCkpKTsKIAog
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKIH0KQEAgLTExMzMxLDcgKzExMzI1
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKiBub2RlLCBpbnQKIHsKICAgICBhdXRvIGNhbGxUb1N0cmluZyA9
IFsmXSAoYXV0byBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRHUFIsIGF1dG8gdmFsdWVSZWcpIHsK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCBUcnVz
dGVkSW1tMzIocmFkaXgpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCBUcnVzdGVkSW1t
MzIocmFkaXgpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH07CkBAIC0xMTM3Niw3ICsxMTM3MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeChOb2Rl
KiBub2RlKQogCiAgICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVnLCBHUFJSZWcgcmFkaXhHUFIpIHsKICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHZhbHVlUmVnLCByYWRpeEdQUik7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCB2YWx1ZVJlZywgcmFkaXhHUFIpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAg
ICAgfTsKQEAgLTExNDc0LDcgKzExNDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1N5bWJvbChOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAg
ICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3
U3ltYm9sV2l0aFN0cmluZ0Rlc2NyaXB0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBzdHJpbmdHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d1N5bWJvbFdpdGhTdHJpbmdEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICByZXR1cm47
CkBAIC0xMTQ4NSw3ICsxMTQ3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdT
eW1ib2woTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9u
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOworICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpA
QCAtMTE2MDgsNyArMTE2MDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0TmV3VHlwZWRB
cnJheVdpdGhTaXplSW5SZWdpc3RlcihOb2RlKiBub2RlLCBUeXBlZEFycmF5VAogICAgIAogICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKICAgICAgICAgc2xvd0Nhc2VzLCB0
aGlzLCBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGVkQXJyYXlUeXBl
KSwKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RydWN0
dXJlLCBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CisgICAgICAgIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cnVjdHVyZSwgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOwog
CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTE2MzMsMTMgKzExNjI3
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdSZWdleHAoTm9kZSogbm9kZSkK
ICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFs
bG9jYXRlSlNPYmplY3Q8UmVnRXhwT2JqZWN0PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgYnV0dGVyZmx5LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsK
IAotICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxP
cGVyYW5kKCkpLAotICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BSLCBSZWdF
eHBPYmplY3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOworICAgIG1faml0LnN0b3JlVW5s
aW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2Rl
LT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocmVzdWx0R1BS
LCBSZWdFeHBPYmplY3Q6Om9mZnNldE9mUmVnRXhwQW5kRmxhZ3MoKSkpOwogICAgIG1faml0LnN0
b3JlVmFsdWUobGFzdEluZGV4UmVncywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwg
UmVnRXhwT2JqZWN0OjpvZmZzZXRPZkxhc3RJbmRleCgpKSk7CiAgICAgbV9qaXQubXV0YXRvckZl
bmNlKHZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoLCB0aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdEluZGV4LCByZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dy
YXBoLCByZWdleHApLCBsYXN0SW5kZXhSZWdzKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdSZWdleHBXaXRoTGFzdElu
ZGV4LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCByZWdleHApLCBsYXN0SW5kZXhSZWdzKSk7CiAK
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xMjU2MSw3ICsxMjU1Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVtcChOb2RlKiBu
b2RlLCBTd2l0Y2hEYXRhKiBkYXRhLCBHUFJSCiB7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh2YWx1ZSwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSksIHNjcmF0
Y2gpOwogICAgIGF1dG8gaXNSb3BlID0gbV9qaXQuYnJhbmNoSWZSb3BlU3RyaW5nSW1wbChzY3Jh
dGNoKTsKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoaXNSb3BlLCB0aGlz
LCBvcGVyYXRpb25SZXNvbHZlUm9wZSwgc2NyYXRjaCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIHZhbHVlKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKGlzUm9w
ZSwgdGhpcywgb3BlcmF0aW9uUmVzb2x2ZVJvcGUsIHNjcmF0Y2gsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCB2YWx1ZSkpOwogICAgIAogICAgIGFkZEJyYW5jaCgKICAgICAgICAgbV9q
aXQuYnJhbmNoMzIoCkBAIC0xMjgwMyw3ICsxMjc5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyhOb2RlKiBub2RlLCBTd2l0Y2hEYXRhKiBkYXRhLCBH
UFJSCiAKICAgICBpZiAoIWNhbkRvQmluYXJ5U3dpdGNoIHx8IHRvdGFsTGVuZ3RoID4gT3B0aW9u
czo6bWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaFRvdGFsTGVuZ3RoKCkpIHsKICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJp
bmcsIHN0cmluZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0YXRpY19jYXN0PHNpemVf
dD4oZGF0YS0+c3dpdGNoVGFibGVJbmRleCksIFRydXN0ZWRJbW1QdHIoJnVubGlua2VkVGFibGUp
LCBzdHJpbmcpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywg
c3RyaW5nLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwgVHJ1c3RlZEltbVB0cigmdW5saW5rZWRUYWJsZSks
IHN0cmluZyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIG1faml0
LmZhckp1bXAoc3RyaW5nLCBKU1N3aXRjaFB0clRhZyk7CiAgICAgICAgIHJldHVybjsKQEAgLTEy
ODQwLDcgKzEyODMyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09u
U3RyaW5nKE5vZGUqIG5vZGUsIFN3aXRjaERhdGEqIGRhdGEsIEdQUlIKICAgICAKICAgICBzbG93
Q2FzZXMubGluaygmbV9qaXQpOwogICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHN0cmluZyk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Td2l0Y2hTdHJpbmcsIHN0cmluZywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIHN0YXRpY19jYXN0PHNpemVfdD4oZGF0YS0+c3dpdGNoVGFi
bGVJbmRleCksIFRydXN0ZWRJbW1QdHIoJnVubGlua2VkVGFibGUpLCBzdHJpbmcpOworICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU3dpdGNoU3RyaW5nLCBzdHJpbmcsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGRhdGEtPnN3aXRjaFRhYmxlSW5k
ZXgpLCBUcnVzdGVkSW1tUHRyKCZ1bmxpbmtlZFRhYmxlKSwgc3RyaW5nKTsKICAgICBzaWxlbnRG
aWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBtX2pp
dC5mYXJKdW1wKHN0cmluZywgSlNTd2l0Y2hQdHJUYWcpOwpAQCAtMTI5ODcsNyArMTI5NzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QWNjZXNzb3JCeUlkKE5vZGUqIG5vZGUp
CiAgICAgR1BSUmVnIGFjY2Vzc29yR1BSID0gYWNjZXNzb3IuZ3ByKCk7CiAKICAgICBmbHVzaFJl
Z2lzdGVycygpOwotICAgIGNhbGxPcGVyYXRpb24obm9kZS0+b3AoKSA9PSBQdXRHZXR0ZXJCeUlk
ID8gb3BlcmF0aW9uUHV0R2V0dGVyQnlJZCA6IG9wZXJhdGlvblB1dFNldHRlckJ5SWQsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXJV
SUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSksIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygp
LCBhY2Nlc3NvckdQUik7CisgICAgY2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IFB1dEdldHRl
ckJ5SWQgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkIDogb3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIFRydXN0ZWRJbW1QdHIoaWRl
bnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKSwgbm9kZS0+YWNjZXNzb3JBdHRy
aWJ1dGVzKCksIGFjY2Vzc29yR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAg
ICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMzAwNSw3ICsxMjk5Nyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRHZXR0ZXJTZXR0ZXJCeUlkKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVn
IHNldHRlckdQUiA9IHNldHRlci5ncHIoKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBiYXNlR1BSLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXJVSUQobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKSksIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBnZXR0ZXJHUFIs
IHNldHRlckdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIs
IEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBUcnVzdGVkSW1tUHRyKGlk
ZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSksIG5vZGUtPmFjY2Vzc29yQXR0
cmlidXRlcygpLCBnZXR0ZXJHUFIsIHNldHRlckdQUik7CiAjZWxzZQogICAgIC8vIFRoZXNlIEpT
VmFsdWVzIG1heSBiZSBKU1VuZGVmaW5lZCBPUiBKU0Z1bmN0aW9uKi4KICAgICAvLyBBdCB0aGF0
IHRpbWUsCkBAIC0xMzAxNyw3ICsxMzAwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQdXRHZXR0ZXJTZXR0ZXJCeUlkKE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mgc2V0dGVy
UmVncyA9IHNldHRlci5qc1ZhbHVlUmVncygpOwogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblB1dEdldHRlclNldHRlciwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGJhc2VHUFIsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllclVJRChub2RlLT5p
ZGVudGlmaWVyTnVtYmVyKCkpKSwgbm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGdldHRlclJl
Z3MucGF5bG9hZEdQUigpLCBzZXR0ZXJSZWdzLnBheWxvYWRHUFIoKSk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25QdXRHZXR0ZXJTZXR0ZXIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmll
ck51bWJlcigpKSksIG5vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygpLCBnZXR0ZXJSZWdzLnBheWxv
YWRHUFIoKSwgc2V0dGVyUmVncy5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCiAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKIApAQCAtMTMwMzEsNyArMTMwMjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUmVzb2x2ZVNjb3BlKE5vZGUqIG5vZGUpCiAgICAgR1BSRmx1c2hlZENhbGxS
ZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblJlc29s
dmVTY29wZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIs
IFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKSk7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlU2NvcGUsIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjb3BlR1BSLCBUcnVzdGVkSW1tUHRyKGlkZW50
aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSkpOwogICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQpAQCAtMTMwNDMs
NyArMTMwMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzb2x2ZVNjb3BlRm9y
SG9pc3RpbmdGdW5jRGVjbEluRXZhbChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNW
YWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25SZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsLCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIFRydXN0ZWRJbW1QdHIoaWRl
bnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKSk7CisgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsLCByZXN1bHRS
ZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIsIFRydXN0ZWRJbW1Q
dHIoaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKSk7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwog
fQpAQCAtMTMwNzEsNyArMTMwNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0
RHluYW1pY1ZhcihOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgSlNWYWx1
ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgSlNWYWx1ZVJlZ3MgcmVz
dWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRE
eW5hbWljVmFyLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVH
UFIsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KSwgbm9kZS0+Z2V0UHV0SW5mbygpKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldER5
bmFtaWNWYXIsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY29w
ZUdQUiwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KSkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTEzMDg1LDcgKzEzMDc3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dER5bmFtaWNWYXIoTm9kZSogbm9k
ZSkKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1ZS5qc1ZhbHVlUmVncygpOwogCiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCku
aXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dER5bmFtaWNWYXJTdHJpY3QgOiBvcGVyYXRpb25QdXRE
eW5hbWljVmFyTm9uU3RyaWN0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NvcGVHUFIs
IHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSkpLCBub2RlLT5nZXRQdXRJbmZvKCkpOworICAgIGNhbGxPcGVyYXRpb24obm9kZS0+
ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9w
ZXJhdGlvblB1dER5bmFtaWNWYXJOb25TdHJpY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBzY29wZUdQUiwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKGlkZW50aWZpZXJVSUQobm9k
ZS0+aWRlbnRpZmllck51bWJlcigpKSksIG5vZGUtPmdldFB1dEluZm8oKSk7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KQEAgLTEzMTUxLDcgKzEz
MTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEFjY2Vzc29yQnlWYWwoTm9k
ZSogbm9kZSkKICAgICBHUFJSZWcgYWNjZXNzb3JHUFIgPSBhY2Nlc3Nvci5ncHIoKTsKIAogICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb24sIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBzdWJzY3JpcHRSZWdzLCBub2RlLT5hY2Nlc3Nv
ckF0dHJpYnV0ZXMoKSwgYWNjZXNzb3JHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgc3Vic2NyaXB0UmVncywg
bm9kZS0+YWNjZXNzb3JBdHRyaWJ1dGVzKCksIGFjY2Vzc29yR1BSKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xMzMyOCw3ICsxMzMyMCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdSZXBsYWNlKE5vZGUqIG5vZGUp
CiAKICAgICAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0ciwgcmVz
dWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCByZWdFeHBH
UFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9G
dW5jUmVwbGFjZVJlZ0V4cEVtcHR5U3RyLCByZXN1bHQuZ3ByKCksIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBzdHJpbmdHUFIsIHJlZ0V4cEdQUik7CiAgICAgICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKHNhbXBsZSkKQEAgLTEzMzQ5LDcgKzEz
MzQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1JlcGxhY2UoTm9kZSog
bm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3Ry
aW5nUHJvdG9GdW5jUmVwbGFjZVJlZ0V4cFN0cmluZywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nR1BSLCByZWdFeHBHUFIsIHJlcGxhY2VHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBT
dHJpbmcsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0cmlu
Z0dQUiwgcmVnRXhwR1BSLCByZXBsYWNlR1BSKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBp
ZiAoc2FtcGxlKQpAQCAtMTMzNzEsNyArMTMzNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlU3RyaW5nUmVwbGFjZShOb2RlKiBub2RlKQogCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2VuZXJpYywgcmVzdWx0LmdwcigpLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc3RyaW5nUmVncywgc2VhcmNoUmVncywgcmVwbGFj
ZVJlZ3MpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5nUHJvdG9GdW5jUmVwbGFj
ZUdlbmVyaWMsIHJlc3VsdC5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHN0
cmluZ1JlZ3MsIHNlYXJjaFJlZ3MsIHJlcGxhY2VSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICBpZiAoc2Ft
cGxlKQpAQCAtMTMzOTIsNyArMTMzODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZVJlZ3Mg
cmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CiAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAg
b3BlcmF0aW9uUmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5LCByZXN1bHRSZWdzLAotICAgICAg
ICBnbG9iYWxPYmplY3RHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSksIGFy
Z3VtZW50R1BSKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0R1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5jZWxsT3BlcmFuZCgpLT5jZWxsKCkpLCBhcmd1bWVu
dEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0UmVncywgbm9kZSk7CkBAIC0xMzQxMiw3ICsxMzQwNCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVSZWdFeHBNYXRjaEZhc3RHbG9iYWwoTm9kZSogbm9kZSkKICAgICBKU1Zh
bHVlUmVncyByZXN1bHRSZWdzID0gcmVzdWx0LnJlZ3MoKTsKICAgICBjYWxsT3BlcmF0aW9uKAog
ICAgICAgICBvcGVyYXRpb25SZWdFeHBNYXRjaEZhc3RHbG9iYWxTdHJpbmcsIHJlc3VsdFJlZ3Ms
Ci0gICAgICAgIGdsb2JhbE9iamVjdEdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFu
ZCgpKSwgYXJndW1lbnRHUFIpOworICAgICAgICBnbG9iYWxPYmplY3RHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSks
IGFyZ3VtZW50R1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKQEAgLTEzNTk2LDcgKzEzNTg4LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eShOb2RlKiBub2RlKQogICAg
ICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZywgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVJlZ3Ms
IGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURh
dGFQcm9wZXJ0eVN0cmluZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIs
IHByb3BlcnR5R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzYxMyw3ICsxMzYw
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoTm9k
ZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVy
dHlTdHJpbmdJZGVudCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIGlkZW50
R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN0cmluZ0lkZW50LCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZUdQUiwgaWRlbnRHUFIsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTEzNjI1LDcgKzEzNjE3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmlu
ZURhdGFQcm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAog
ICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVJlZ3MsIGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZVJlZ3MsIGF0
dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMzYzNiw3ICsxMzYyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVEZWZpbmVEYXRhUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRy
ZW4obm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBiYXNlR1BSLCBwcm9wZXJ0eVJlZ3MsIHZhbHVlUmVncywgYXR0cmlidXRlc0dQUik7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5LCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3Ms
IGF0dHJpYnV0ZXNHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICBicmVhazsKICAgICB9CkBAIC0xMzY3Nyw3ICsxMzY2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEZWZpbmVBY2Nlc3NvclByb3BlcnR5KE5vZGUqIG5vZGUpCiAgICAgICAgIHVz
ZUNoaWxkcmVuKG5vZGUpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNl
dHRlckdQUiwgYXR0cmlidXRlc0dQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
RGVmaW5lQWNjZXNzb3JQcm9wZXJ0eVN0cmluZywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3Rh
bnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VHUFIsIHByb3BlcnR5R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRl
c0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEzNjk0LDcgKzEzNjg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURlZmluZUFjY2Vzc29yUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4o
bm9kZSk7CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3RyaW5nSWRlbnQsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpZGVudEdQUiwgZ2V0dGVyR1BSLCBzZXR0ZXJHUFIs
IGF0dHJpYnV0ZXNHUFIpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFj
Y2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VHUFIsIGlkZW50R1BSLCBnZXR0ZXJHUFIsIHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7
CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTEzNzA2LDcgKzEzNjk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURlZmlu
ZUFjY2Vzc29yUHJvcGVydHkoTm9kZSogbm9kZSkKICAgICAgICAgdXNlQ2hpbGRyZW4obm9kZSk7
CiAKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1
dGVzR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclBy
b3BlcnR5U3ltYm9sLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJv
cGVydHlHUFIsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTM3MTcs
NyArMTM3MDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRGVmaW5lQWNjZXNzb3JQ
cm9wZXJ0eShOb2RlKiBub2RlKQogICAgICAgICB1c2VDaGlsZHJlbihub2RlKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkRlZmlu
ZUFjY2Vzc29yUHJvcGVydHksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBw
cm9wZXJ0eVJlZ3MsIGdldHRlckdQUiwgc2V0dGVyR1BSLCBhdHRyaWJ1dGVzR1BSKTsKKyAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5LCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdzLCBnZXR0ZXJHUFIs
IHNldHRlckdQUiwgYXR0cmlidXRlc0dQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzODQ5LDcgKzEzODQxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldE1hcEJ1Y2tldE5leHQoTm9kZSogbm9kZSkKICAgICAg
ICAgQVNTRVJUKG5vZGUtPmJ1Y2tldE93bmVyVHlwZSgpID09IEJ1Y2tldE93bmVyVHlwZTo6U2V0
KTsKICAgICAgICAgc2VudGluZWwgPSB2bSgpLnNlbnRpbmVsU2V0QnVja2V0KCk7CiAgICAgfQot
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgc2VudGlu
ZWwpLCByZXN1bHRHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIHNlbnRpbmVsKSwgcmVzdWx0R1BSKTsKICAg
ICBkb25lLmxpbmsoJm1faml0KTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
QEAgLTEzOTExLDcgKzEzOTAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRocm93
KE5vZGUqIG5vZGUpCiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpzVmFsdWVSZWdzKCk7CiAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRocm93REZH
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRocm93REZHLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdmFs
dWVSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIG1faml0LmJyZWFrcG9p
bnQoKTsKICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTEzOTIzLDcgKzEzOTE1LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRocm93U3RhdGljRXJyb3IoTm9kZSogbm9kZSkKICAgICBH
UFJSZWcgbWVzc2FnZUdQUiA9IG1lc3NhZ2UuZ3ByKCk7CiAgICAgc3BlY3VsYXRlU3RyaW5nKG5v
ZGUtPmNoaWxkMSgpLCBtZXNzYWdlR1BSKTsKICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvciwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG1lc3NhZ2VHUFIsIG5vZGUtPmVycm9yVHlwZSgpKTsKKyAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRocm93U3RhdGljRXJyb3IsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0
YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBtZXNzYWdlR1BSLCBub2RlLT5lcnJvclR5cGUoKSk7CiAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICBtX2ppdC5icmVha3BvaW50KCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CkBA
IC0xNDAxMyw3ICsxNDAwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVFbnVtZXJh
dG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZShOb2RlKiBub2RlKQogICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CiAgICAgSlNWYWx1ZVJlZ3NGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAg
SlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7Ci0gICAgY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSwgcmVzdWx0UmVncywg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwg
ZW51bWVyYXRvckdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnVtZXJhdG9yTmV4
dFVwZGF0ZUluZGV4QW5kTW9kZSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VSZWdzLCBpbmRleEdQUiwgbW9kZUdQUiwgZW51bWVyYXRvckdQUik7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUpOwogfQpAQCAtMTQwODYsMTIgKzE0MDc4LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVFbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5TmFtZShOb2RlKiBub2RlKQogICAgICAg
ICBkb25lQ2FzZXMuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAgICAgICAgb3V0T2ZCb3VuZHMu
bGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIHZtKCkuc21hbGxTdHJpbmdzLnNlbnRpbmVsU3RyaW5nKCkpLCByZXN1bHRH
UFIpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCB2bSgpLnNtYWxsU3RyaW5ncy5zZW50aW5lbFN0cmluZygp
KSwgcmVzdWx0R1BSKTsKICAgICAgICAgZG9uZUNhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOwog
ICAgICAgICBvcGVyYXRpb25DYWxsLmxpbmsoJm1faml0KTsKICAgICB9CiAKLSAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkVudW1lcmF0b3JOZXh0VXBkYXRlUHJvcGVydHlOYW1lLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBpbmRleCwgbW9kZSwgZW51bWVyYXRvcik7
CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25FbnVtZXJhdG9yTmV4dFVwZGF0ZVByb3BlcnR5
TmFtZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5kZXgsIG1v
ZGUsIGVudW1lcmF0b3IpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICBkb25l
Q2FzZXMubGluaygmbV9qaXQpOwpAQCAtMTQxMzUsOSArMTQxMjcsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRW51bWVyYXRvckhhc1Byb3BlcnR5KE5vZGUqIG5vZGUsIFNsb3dQYXRo
RnVuY3Rpb25UeQogICAgICAgICBvcGVyYXRpb25DYXNlcy5saW5rKCZtX2ppdCk7CiAKICAgICAg
ICAgaWYgKGJhc2VSZWdzLnRhZ0dQUigpID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BS
KCkpLCBwcm9wZXJ0eU5hbWVSZWdzLCBpbmRleEdQUiwgbW9kZUdQUik7CisgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKHNsb3dQYXRoRnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2Fk
R1BSKCkpLCBwcm9wZXJ0eU5hbWVSZWdzLCBpbmRleEdQUiwgbW9kZUdQUik7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oc2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBwcm9wZXJ0eU5hbWVSZWdz
LCBpbmRleEdQUiwgbW9kZUdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHNsb3dQYXRo
RnVuY3Rpb24sIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNl
UmVncywgcHJvcGVydHlOYW1lUmVncywgaW5kZXhHUFIsIG1vZGVHUFIpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTQy
NTEsNyArMTQyNDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlJZFdpdGhU
aGlzKE5vZGUqIG5vZGUpCiAKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIGNhbGxPcGVyYXRp
b24obm9kZS0+ZWNtYU1vZGUoKS5pc1N0cmljdCgpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlz
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAotICAgICAgICBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCB2YWx1ZVJlZ3MsIG5vZGUtPmNhY2hl
YWJsZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZVJlZ3MsIHRoaXNSZWdzLCB2YWx1ZVJlZ3MsIG5vZGUtPmNhY2hlYWJs
ZUlkZW50aWZpZXIoKS5yYXdCaXRzKCkpOwogICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICBub1Jlc3VsdChub2RlKTsKQEAgLTE0MzMyLDcgKzE0MzI0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldFByb3BlcnR5RW51bWVyYXRvcihOb2RlKiBub2RlKQogCiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbE9yT3RoZXJVc2UpIHsKICAg
ICAgICAgICAgIGF1dG8gbm90T3RoZXIgPSBtX2ppdC5icmFuY2hJZk5vdE90aGVyKGJhc2VSZWdz
LCBzY3JhdGNoMUdQUik7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIHZtKCkuZW1wdHlQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yKCkpLCBz
Y3JhdGNoMUdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCB2bSgpLmVtcHR5UHJvcGVydHlOYW1l
RW51bWVyYXRvcigpKSwgc2NyYXRjaDFHUFIpOwogICAgICAgICAgICAgZG9uZUNhc2VzLmFwcGVu
ZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgbm90T3RoZXIubGluaygmbV9qaXQpOwogICAg
ICAgICB9CkBAIC0xNDM5MCw3ICsxNDM4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRQcm9wZXJ0eUVudW1lcmF0b3IoTm9kZSogbm9kZSkKIAogICAgICAgICBzbG93Q2FzZXMu
bGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzY3JhdGNoMUdQ
Uik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9y
Q2VsbCwgc2NyYXRjaDFHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncy5w
YXlsb2FkR1BSKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldFByb3BlcnR5
RW51bWVyYXRvckNlbGwsIHNjcmF0Y2gxR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYmFzZVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVy
cygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0xNDQwNSw3ICsxNDM5
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRQcm9wZXJ0eUVudW1lcmF0b3Io
Tm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwot
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yLCByZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVncyk7CisgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3IsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0NDk0LDkgKzE0
NDg2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0ckNhdChOb2RlKiBub2RlKQog
CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIGlmIChub2RlLT5j
aGlsZDMoKSkKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQzLCByZXN1bHQu
Z3ByKCksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzLCBvcDNS
ZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TdHJDYXQzLCByZXN1bHQuZ3By
KCksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcDFSZWdzLCBvcDJSZWdzLCBvcDNS
ZWdzKTsKICAgICBlbHNlCi0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0Miwg
cmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywgb3AyUmVn
cyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU3RyQ2F0MiwgcmVzdWx0Lmdwcigp
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3AxUmVncywgb3AyUmVncyk7CiAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlKTsKQEAgLTE0NTIzLDcgKzE0NTE1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0FycmF5QnVmZmVyKE5vZGUqIG5vZGUpCiAKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmpl
Y3Q8SlNBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJ
bW1QdHIoYXJyYXktPnRvQnV0dGVyZmx5KCkpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNs
b3dDYXNlcyk7CiAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgVHJ1
c3RlZEltbVB0cigmdm0oKSksIHN0cnVjdHVyZSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgYXJyYXkpKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3By
KCksIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBzdHJ1Y3R1cmUsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIGFycmF5KSkpOwogCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbm9kZSwgaW5kZXhpbmdNb2RlICYgSXNBcnJheSwgaW5kZXhpbmdNb2RlKTsKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ1NjYsNyArMTQ1NTgsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3QXJyYXlXaXRoU2l6ZShOb2RlKiBub2RlKQogICAg
IGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1
Y3R1cmVHUFIpOwogICAgIGRvbmUubGluaygmbV9qaXQpOwotICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKKyAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0cik7CiAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBA
IC0xNDU5NCw3ICsxNDU4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBl
ZEFycmF5KE5vZGUqIG5vZGUpCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAg
ICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhP
bmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2Rl
LT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7CisgICAgICAgICAgICByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50
eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ2
MjksNyArMTQ2MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9UaGlzKE5vZGUq
IG5vZGUpCiAgICAgICAgIGZ1bmN0aW9uID0gb3BlcmF0aW9uVG9UaGlzU3RyaWN0OwogICAgIGVs
c2UKICAgICAgICAgZnVuY3Rpb24gPSBvcGVyYXRpb25Ub1RoaXM7Ci0gICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgZnVuY3Rpb24sIHRlbXBSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGhpc1ZhbHVlUmVncykpOworICAgIGFkZFNs
b3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIGZ1bmN0aW9uLCB0
ZW1wUmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRoaXNWYWx1ZVJlZ3MpKTsK
IAogICAgIGpzVmFsdWVSZXN1bHQodGVtcFJlZ3MsIG5vZGUpOwogfQpAQCAtMTQ2NzksNyArMTQ2
NzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0S2V5c09yT2JqZWN0R2V0
T3duUHJvcGVydHlOYW1lcyhOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0J1dEFycmF5QnVmZmVyQ2FzZXMsIHRoaXMsIG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoJnZtKCkpLCBhcnJh
eVN0cnVjdHVyZSwgc2NyYXRjaDNHUFIpKTsKIAotICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RL
ZXlzID8gb3BlcmF0aW9uT2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blBy
b3BlcnR5TmFtZXNPYmplY3QsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IG9iamVjdEdQUikpOworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhD
YWxsKHNsb3dDYXNlcywgdGhpcywgbm9kZS0+b3AoKSA9PSBPYmplY3RLZXlzID8gb3BlcmF0aW9u
T2JqZWN0S2V5c09iamVjdCA6IG9wZXJhdGlvbk9iamVjdEdldE93blByb3BlcnR5TmFtZXNPYmpl
Y3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUikp
OwogCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE0Njk0LDcgKzE0Njg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9kZSkKICAg
ICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAg
ICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9i
amVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0
LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpOworICAg
ICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJhdGlvbk9i
amVjdEtleXNPYmplY3QgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzT2JqZWN0
LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RHUFIpOwog
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKQEAgLTE0NzA5LDcgKzE0NzAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdEtleXNPck9iamVjdEdldE93blByb3BlcnR5TmFtZXMoTm9kZSogbm9k
ZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPm9wKCkgPT0gT2JqZWN0S2V5cyA/IG9wZXJh
dGlvbk9iamVjdEtleXMgOiBvcGVyYXRpb25PYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLCByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RSZWdzKTsKKyAgICAgICAg
Y2FsbE9wZXJhdGlvbihub2RlLT5vcCgpID09IE9iamVjdEtleXMgPyBvcGVyYXRpb25PYmplY3RL
ZXlzIDogb3BlcmF0aW9uT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcywgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0UmVncyk7CiAgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpA
QCAtMTQ3MzYsNyArMTQ3MjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
QXNzaWduKE5vZGUqIG5vZGUpCiAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChub2RlLT5jaGlsZDIo
KSwgc291cmNlR1BSKTsKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdEFzc2lnbk9iamVjdCwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHRhcmdldEdQUiwgc291cmNlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25PYmplY3RBc3NpZ25PYmplY3QsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCB0YXJnZXRHUFIsIHNvdXJjZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CkBAIC0xNDc0OSw3ICsxNDc0MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RBc3NpZ24oTm9kZSogbm9kZSkKICAgICAgICAg
SlNWYWx1ZVJlZ3Mgc291cmNlUmVncyA9IHNvdXJjZS5qc1ZhbHVlUmVncygpOwogCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0
QXNzaWduVW50eXBlZCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291
cmNlUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0QXNzaWduVW50
eXBlZCwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHRhcmdldEdQUiwgc291cmNlUmVn
cyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CkBAIC0xNDc3NCw3ICsxNDc2Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RDcmVhdGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk9iamVjdENyZWF0ZU9iamVjdCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgcHJvdG90eXBlR1BSKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RD
cmVhdGVPYmplY3QsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHBy
b3RvdHlwZUdQUik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ3ODksNyArMTQ3ODEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0Q3JlYXRlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RDcmVhdGUsIHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIHByb3RvdHlwZVJlZ3MpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgcHJvdG90eXBlUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtMTQ4NDEsMTQgKzE0
ODMzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqIG5v
ZGUpCiAgICAgbV9qaXQuZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdEdQUiwgaW5s
aW5lQ2FwYWNpdHlHUFIpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSh2bSgpKTsKIAotICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9u
Q3JlYXRlVGhpcywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgY2FsbGVl
R1BSLCBub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSk7CisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRH
UFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBjYWxsZWVHUFIsIG5vZGUtPmlubGlu
ZUNhcGFjaXR5KCkpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2UoTm9kZSogbm9kZSkKIHsK
LSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjYWxsZWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CkBAIC0xNDg2Niw3ICsxNDg1OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgR1BS
UmVnIHJhcmVEYXRhR1BSID0gc3RydWN0dXJlR1BSOwogCiAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+aXNJbnRlcm5hbFByb21pc2Uo
KSA/IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlU3RydWN0dXJlKCkgOiBnbG9iYWxPYmpl
Y3QtPnByb21pc2VTdHJ1Y3R1cmUoKSkpLCBzdHJ1Y3R1cmVHUFIpOwotICAgIGF1dG8gZmFzdFBy
b21pc2VQYXRoID0gbV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWwsIGNhbGxlZUdQ
UiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbm9kZS0+aXNJbnRlcm5hbFBy
b21pc2UoKSA/IGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoKSA6IGds
b2JhbE9iamVjdC0+cHJvbWlzZUNvbnN0cnVjdG9yKCkpKTsKKyAgICBhdXRvIGZhc3RQcm9taXNl
UGF0aCA9IG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwg
Y2FsbGVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBub2RlLT5p
c0ludGVybmFsUHJvbWlzZSgpID8gZ2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3RvcigpIDogZ2xvYmFsT2JqZWN0LT5wcm9taXNlQ29uc3RydWN0b3IoKSkpOwogCiAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIApAQCAtMTQ4NzgsNyArMTQ4NzAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlUHJvbWlzZShOb2RlKiBub2RlKQog
ICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1
Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihub2RlLT5pc0ludGVybmFs
UHJvbWlzZSgpID8gSlNJbnRlcm5hbFByb21pc2U6OmluZm8oKSA6IEpTUHJvbWlzZTo6aW5mbygp
KSwgc2NyYXRjaDFHUFIpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKEND
YWxsSGVscGVyczo6Tm90RXF1YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
c3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSkpOwotICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwg
c2NyYXRjaDFHUFIpOworICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIHNjcmF0Y2gxR1BSKTsK
ICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBzY3JhdGNoMUdQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkpKTsKIAogICAgIGZhc3RQcm9taXNlUGF0aC5s
aW5rKCZtX2ppdCk7CkBAIC0xNDg5MSw3ICsxNDg4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVDcmVhdGVQcm9taXNlKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQuc3RvcmVUcnVzdGVk
VmFsdWUoanNVbmRlZmluZWQoKSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTUHJvbWlzZTo6RmllbGQ6OlJlYWN0aW9uc09yUmVzdWx0KSkpKTsKICAg
ICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0oKSk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
bG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8g
b3BlcmF0aW9uQ3JlYXRlSW50ZXJuYWxQcm9taXNlIDogb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZSwg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmpl
Y3QpLCBjYWxsZWVHUFIpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd0Nhc2VzLCB0aGlzLCBub2RlLT5pc0ludGVybmFsUHJvbWlzZSgpID8gb3BlcmF0aW9uQ3Jl
YXRlSW50ZXJuYWxQcm9taXNlIDogb3BlcmF0aW9uQ3JlYXRlUHJvbWlzZSwgcmVzdWx0R1BSLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBjYWxs
ZWVHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE0OTAw
LDcgKzE0ODkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVByb21pc2Uo
Tm9kZSogbm9kZSkKIHRlbXBsYXRlPHR5cGVuYW1lIEpTQ2xhc3MsIHR5cGVuYW1lIE9wZXJhdGlv
bj4KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVJbnRlcm5hbEZpZWxkT2JqZWN0
KE5vZGUqIG5vZGUsIE9wZXJhdGlvbiBvcGVyYXRpb24pCiB7Ci0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgY2FsbGVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwpAQCAtMTQ5MjcsNyArMTQ5MTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBPcGVyYXRpb24gb3Blcgog
ICAgIG1faml0LmVtaXROb25OdWxsRGVjb2RlU3RydWN0dXJlSUQoc3RydWN0dXJlR1BSLCBzdHJ1
Y3R1cmVHUFIpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihKU0NsYXNzOjppbmZvKCkp
LCBzY3JhdGNoMUdQUik7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoQ0Nh
bGxIZWxwZXJzOjpOb3RFcXVhbCwgc2NyYXRjaDFHUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhz
dHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpKSk7Ci0gICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBz
Y3JhdGNoMUdQUik7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgc2NyYXRjaDFHUFIpOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1
YWwsIHNjcmF0Y2gxR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSkpOwogCiAgICAgYXV0byBidXR0ZXJmbHkgPSBU
cnVzdGVkSW1tUHRyKG51bGxwdHIpOwpAQCAtMTQ5MzgsNyArMTQ5MzAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdChOb2RlKiBub2RlLCBP
cGVyYXRpb24gb3BlcgogICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShpbml0aWFsVmFs
dWVzW2luZGV4XSwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbDw+OjpvZmZzZXRPZkludGVybmFsRmllbGQoaW5kZXgpKSk7CiAgICAgbV9q
aXQubXV0YXRvckZlbmNlKHZtKCkpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1Bh
dGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIGNhbGxlZUdQUikpOworICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBn
bG9iYWxPYmplY3QpLCBjYWxsZWVHUFIpKTsKIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKIH0KQEAgLTE1MDYyLDcgKzE1MDU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVRvUHJpbWl0aXZlKE5vZGUqIG5vZGUpCiAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZt
X2ppdCk7CiAgICAgbV9qaXQubW92ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3Mp
OwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKG5vdFByaW1pdGl2ZSwg
dGhpcywgb3BlcmF0aW9uVG9QcmltaXRpdmUsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93
UGF0aENhbGwobm90UHJpbWl0aXZlLCB0aGlzLCBvcGVyYXRpb25Ub1ByaW1pdGl2ZSwgcmVzdWx0
UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CkBAIC0xNTA4Niw3ICsxNTA3OCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1Byb3BlcnR5S2V5KE5vZGUqIG5vZGUpCiAgICAgYWxyZWFk
eVByb3BlcnR5S2V5LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFsdWVSZWdzKGFyZ3Vt
ZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub1Byb3BlcnR5S2V5LCByZXN1bHRSZWdz
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRSZWdzKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uVG9Q
cm9wZXJ0eUtleSwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
Z3VtZW50UmVncykpOwogCiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRh
Rm9ybWF0SlNDZWxsLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQpAQCAtMTUxMTYs
NyArMTUxMDgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9OdW1lcmljKE5vZGUq
IG5vZGUpCiAgICAgaXNIZWFwQmlnSW50LmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tb3ZlVmFs
dWVSZWdzKGFyZ3VtZW50UmVncywgcmVzdWx0UmVncyk7CiAKLSAgICBhZGRTbG93UGF0aEdlbmVy
YXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25Ub051bWVyaWMsIHJl
c3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudFJlZ3MpKTsKKyAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVy
YXRpb25Ub051bWVyaWMsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBhcmd1bWVudFJlZ3MpKTsKIAogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwg
RGF0YUZvcm1hdEpTKTsKIH0KQEAgLTE1MTUxLDcgKzE1MTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUNhbGxOdW1iZXJDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIENDYWxs
SGVscGVyczo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQu
YnJhbmNoSWZOb3ROdW1iZXIoYXJndW1lbnRSZWdzLCB0ZW1wR1BSKSk7CiAgICAgbV9qaXQubW92
ZVZhbHVlUmVncyhhcmd1bWVudFJlZ3MsIHJlc3VsdFJlZ3MpOwotICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJD
b25zdHJ1Y3RvciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3Vt
ZW50UmVncykpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2Fz
ZXMsIHRoaXMsIG9wZXJhdGlvbkNhbGxOdW1iZXJDb25zdHJ1Y3RvciwgcmVzdWx0UmVncywgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50UmVncykpOwogCiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKIH0KQEAgLTE1MjE4LDcgKzE1MjEwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNldEFkZChOb2RlKiBub2RlKQogICAgIGZsdXNoUmVn
aXN0ZXJzKCk7CiAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgIEdQ
UlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TZXRBZGQsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwg
a2V5UmVncywgaGFzaEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXRBZGQsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNldEdQUiwga2V5UmVncywg
aGFzaEdQUik7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0xNTI0MCw3ICsxNTIzMiw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVNYXBTZXQoTm9kZSogbm9kZSkKICAgICBmbHVzaFJlZ2lzdGVycygpOwog
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwU2V0LCBy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIHZh
bHVlUmVncywgaGFzaEdQUik7CisgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYXBTZXQsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5UmVncywg
dmFsdWVSZWdzLCBoYXNoR1BSKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTE1NDU5LDcgKzE1NDUxLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFByb3RvdHlwZU9mKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgICAgIG1faml0LmVtaXRM
b2FkUHJvdG90eXBlKHZtKCksIG9iamVjdEdQUiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywg
b3BlcmF0aW9uR2V0UHJvdG90eXBlT2ZPYmplY3QsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CisgICAgICAgICAgICByZXN1
bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSKSk7CiAKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMTU0NzYsNyArMTU0NjgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0UHJv
dG90eXBlT2YoTm9kZSogbm9kZSkKIAogICAgICAgICBtX2ppdC5lbWl0TG9hZFByb3RvdHlwZSh2
bSgpLCB2YWx1ZUdQUiwgcmVzdWx0UmVncywgc2xvd0Nhc2VzKTsKICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0UHJv
dG90eXBlT2YsCi0gICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgdmFsdWVSZWdzKSk7CisgICAgICAgICAgICByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgdmFsdWVSZWdzKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTU2MDMsNyArMTU1OTUsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IobWFr
ZVVuaXF1ZTxDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0
b3I+KAogICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUs
IHJlc3VsdEdQUiwKLSAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwKKyAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgZ2xvYmFsT2JqZWN0KSwKICAgICAgICAgc3RydWN0dXJlLAogICAgICAgICBzaG91bGRD
b252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2UgPyBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLAogICAgICAgICBzaXplR1BS
LCBzdG9yYWdlR1BSKSk7CkBAIC0xNTczNiw3ICsxNTcyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVIYXNJbmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSwgU19KSVRPcGVyYXRpb25f
R0NaIHNsCiAgICAgfQogICAgIH0KIAotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0aW9uLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBpbmRleEdQUikpOworICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoT3BlcmF0
aW9uLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSLCBp
bmRleEdQUikpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRXh0cmFjdENhdGNo
TG9jYWwoTm9kZSogbm9kZSkKQEAgLTE1ODYxLDExICsxNTg1MywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRQdXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BSUmVnIGJhc2VH
UFIsIEpTVmFsdQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGg7CiAgICAgaWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAg
ICAgIHNsb3dQYXRoID0gc2xvd1BhdGhJQ0NhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIGdlbi5zdHViSW5mbygpLCBzdHViSW5mb0dQUiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHN0
dWJJbmZvR1BSLCBTdHJ1Y3R1cmVTdHViSW5mbzo6b2Zmc2V0T2ZTbG93T3BlcmF0aW9uKCkpLCBn
ZW4uc2xvd1BhdGhGdW5jdGlvbigpLCBOb1Jlc3VsdCwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5m
b0dQUiwgdmFsdWVSZWdzLAorICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1Yklu
Zm8oKSwgc3R1YkluZm9HUFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3Ry
dWN0dXJlU3R1YkluZm86Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgZ2VuLnNsb3dQYXRoRnVu
Y3Rpb24oKSwgTm9SZXN1bHQsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgc3R1YkluZm9HUFIsIHZhbHVl
UmVncywKICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBpZGVu
dGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCi0gICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93UGF0aEZ1bmN0
aW9uKCksIE5vUmVzdWx0LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJ
bmZvKCkpLCB2YWx1ZVJlZ3MsCisgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGdlbi5zbG93
UGF0aEZ1bmN0aW9uKCksIE5vUmVzdWx0LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1Q
dHIoZ2VuLnN0dWJJbmZvKCkpLCB2YWx1ZVJlZ3MsCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlR1BSKSwgaWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KIApAQCAt
MTU4OTQsNyArMTU4ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpnZW5lcmljSlNWYWx1ZU5v
blBlZXBob2xlQ29tcGFyZShOb2RlKiBub2RlLCBNYWNyb0Fzc2VtYmxlcgogICAgICAgICBhcmcy
LnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIGNhbGxPcGVyYXRp
b24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rp
b24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBh
cmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgdW5i
bGVzc2VkQm9vbGVhblJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhw
bGljaXRseSk7CkBAIC0xNTkxNSw3ICsxNTkwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Omdl
bmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVDb21wYXJlKE5vZGUqIG5vZGUsIE1hY3JvQXNzZW1ibGVy
CiAgICAgbV9qaXQuY29tcGFyZTMyKGNvbmQsIGFyZzFSZWdzLnBheWxvYWRHUFIoKSwgYXJnMlJl
Z3MucGF5bG9hZEdQUigpLCByZXN1bHRHUFIpOwogCiAgICAgaWYgKCFpc0tub3duSW50ZWdlcihu
b2RlLT5jaGlsZDEoKS5ub2RlKCkpIHx8ICFpc0tub3duSW50ZWdlcihub2RlLT5jaGlsZDIoKS5u
b2RlKCkpKQotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1Bh
dGgsIHRoaXMsIGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBhcmcxUmVncywgYXJnMlJlZ3MpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBoZWxwZXJGdW5jdGlvbiwgcmVzdWx0R1BS
LCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKSk7CiAK
ICAgICB1bmJsZXNzZWRCb29sZWFuUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgVXNlQ2hpbGRyZW5D
YWxsZWRFeHBsaWNpdGx5KTsKIH0KQEAgLTE1OTU1LDcgKzE1OTQ3LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVQZWVwaG9sZUJyYW5jaChOb2RlKiBub2RlLCBOb2RlKiBi
cmFuY2hOb2RlLAogICAgICAgICBhcmcyLnVzZSgpOwogCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24oaGVscGVyRnVuY3Rpb24sIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKICAgICAgICAgYnJhbmNoVGVzdDMyKGNhbGxSZXN1bHRDb25kaXRpb24sIHJl
c3VsdEdQUiwgdGFrZW4pOwpAQCAtMTU5NzksNyArMTU5NzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpnZW5lcmljSlNWYWx1ZVBlZXBob2xlQnJhbmNoKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5j
aE5vZGUsCiAgICAgICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAKICAgICAgICAgICAg
IHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmcxUmVncywgYXJnMlJlZ3MpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihoZWxw
ZXJGdW5jdGlvbiwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
MVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsK
ICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTE2MDE5LDcgKzE2MDEx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUhlYXBCaWdJbnRFcXVhbGl0eShOb2Rl
KiBub2RlKQogICAgIG5vdEVxdWFsQ2FzZS5saW5rKCZtX2ppdCk7CiAKICAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29t
cGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bGVmdEdQUiwgcmlnaHRHUFIpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0
cmljdEVxQ2VsbCwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbGVm
dEdQUiwgcmlnaHRHUFIpOwogICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAgIGRv
bmUubGluaygmbV9qaXQpOwpAQCAtMTYxNzIsNyArMTYxNjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKIAogICAgIGF1dG8gaXNOb25FbXB0eVN0
cmluZyA9IG1faml0LmJyYW5jaFRlc3QzMihDQ2FsbEhlbHBlcnM6Ok5vblplcm8sIGFsbG9jYXRv
ckdQUik7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIGpzRW1wdHlTdHJpbmcobV9ncmFwaC5tX3ZtKSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQu
bG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwganNFbXB0eVN0cmluZyh2bSgpKSksIHJlc3VsdEdQUik7CiAKICAgICBpc05vbkVtcHR5U3Ry
aW5nLmxpbmsoJm1faml0KTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2Uodm0oKSk7CkBAIC0xNjE4
MCwxMSArMTYxNzIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5v
ZGUqIG5vZGUpCiAgICAgc3dpdGNoIChudW1PcEdQUnMpIHsKICAgICBjYXNlIDI6CiAgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAgIHNsb3dQYXRo
LCB0aGlzLCBvcGVyYXRpb25NYWtlUm9wZTIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdKSk7CisgICAgICAgICAgICBzbG93UGF0aCwg
dGhpcywgb3BlcmF0aW9uTWFrZVJvcGUyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIDM6CiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbCgKLSAgICAg
ICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25NYWtlUm9wZTMsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdLCBvcEdQUnNbMl0p
KTsKKyAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25NYWtlUm9wZTMsIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFd
LCBvcEdQUnNbMl0pKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE2MTk4LDExICsxNjE5MCwxMSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kZSogbm9kZSkKICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIHN3aXRjaCAobnVtT3BHUFJzKSB7CiAgICAg
Y2FzZSAyOgotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0pOwor
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1ha2VSb3BlMiwgcmVzdWx0R1BSLCBKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BHUFJzWzBdLCBvcEdQUnNbMV0pOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0g
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFrZVJvcGUzLCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvcEdQUnNbMF0sIG9wR1BSc1sxXSwgb3BHUFJzWzJdKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25NYWtlUm9wZTMsIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wR1BSc1swXSwgb3BHUFJzWzFdLCBvcEdQUnNb
Ml0pOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgpAQCAtMTYzMDUsOSArMTYyOTcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRW51bWVyYXRvckdldEJ5VmFsKE5vZGUqIG5vZGUpCiAKICAgICAgICAgaWYgKCFyZWNv
dmVyR2VuZXJpY0Nhc2UuZW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGJhc2VSZWdzLnRhZ0dQ
UigpID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHJlY292ZXJHZW5lcmljQ2FzZSwgdGhpcywgb3BlcmF0aW9uRW51bWVy
YXRvclJlY292ZXJOYW1lQW5kR2V0QnlWYWwsIHJlc3VsdFJlZ3MsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlUmVncy5wYXlsb2FkR1BSKCkp
LCBpbmRleEdQUiwgZW51bWVyYXRvckdQUikpOworICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9wZXJhdGlv
bkVudW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5
bG9hZEdQUigpKSwgaW5kZXhHUFIsIGVudW1lcmF0b3JHUFIpKTsKICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwocmVjb3Zl
ckdlbmVyaWNDYXNlLCB0aGlzLCBvcGVyYXRpb25FbnVtZXJhdG9yUmVjb3Zlck5hbWVBbmRHZXRC
eVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCBp
bmRleEdQUiwgZW51bWVyYXRvckdQUikpOworICAgICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChyZWNvdmVyR2VuZXJpY0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkVu
dW1lcmF0b3JSZWNvdmVyTmFtZUFuZEdldEJ5VmFsLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIGluZGV4R1BSLCBlbnVtZXJhdG9yR1BSKSk7CiAg
ICAgICAgIH0KIAogICAgICAgICBkb25lQ2FzZXMubGluaygmbV9qaXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDk1NjYxNGE0MzRiYTA5
ODJkYjBlZWRjYWI5ZGQxZGY0NWMyYjZlZmYuLjY5YzhjMWFlNTIwOGUyMjdhNTVkMGY4ZTM5Y2Zl
ZWVmNGU2ZDU5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAg
ICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoVCogdmFsdWUpCiAgICAgICAgICAgICA6IG1fdmFs
dWUodmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf
YmFzZV9vZjxKU0NlbGwsIFQ+Ojp2YWx1ZSwgIlRvIHVzZSBhIEdDIHBvaW50ZXIsIHRoZSBncmFw
aCBtdXN0IGJlIGF3YXJlIG9mIGl0LiBVc2UgU3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyIGluc3RlYWQuIik7CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6
OmlzX2Jhc2Vfb2Y8SlNDZWxsLCBUPjo6dmFsdWUsICJUbyB1c2UgYSBHQyBwb2ludGVyLCB0aGUg
Z3JhcGggbXVzdCBiZSBhd2FyZSBvZiBpdC4gVXNlIFNwZWN1bGF0aXZlSklUOjpKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudCBpbnN0ZWFkLiIpOwogICAgICAgICB9CiAKICAgICAgICAgZXhw
bGljaXQgVHJ1c3RlZEltbVB0cihSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKQEAgLTk4
MCw5ICs5ODAsOSBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24ob3BlcmF0aW9uKTsKICAgICB9
CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxi
YWNrT25FeGNlcHRpb24oWl9KSVRPcGVyYXRpb25fRyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9uKFpfSklUT3BlcmF0aW9u
X0cgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgZ2xvYmFsT2JqZWN0R1BSKQogICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHM8Wl9KSVRPcGVyYXRpb25fRz4oVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzPFpfSklUT3BlcmF0aW9uX0c+KGdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb25T
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKQEAgLTExNTcsNiArMTE1
NywxMiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgewogICAgICAgICByZXR1cm4gYWRk
QnJhbmNoKG1faml0LmJyYW5jaFB0cihjb25kLCBsZWZ0LCByaWdodCksIGRlc3RpbmF0aW9uKTsK
ICAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIHZvaWQg
YnJhbmNoVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBUIGxlZnQsIFUgcmlnaHQsIEJhc2ljQmxvY2sqIGRlc3RpbmF0aW9uKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkZEJyYW5jaChtX2ppdC5icmFuY2hVbmxpbmtlZENvbnN0YW50KGNvbmQs
IGxlZnQsIHJpZ2h0KSwgZGVzdGluYXRpb24pOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIHZvaWQgYnJhbmNoVGVzdFB0cihKSVRDb21waWxl
cjo6UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFQgdmFsdWUsIFUgbWFzaywgQmFzaWNCbG9jayogZGVz
dGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAppbmRleCA0YWYwMDI1N2Y4ZmVhOWQ2MDIxYjAwNDVlNzczOTU3NWI3
OGNjYmIzLi45ODliYmQ0OWIwMWFhYjAxZWJkNTJiNDBjM2YyZjc1YWU3ODFiNDIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKQEAgLTIxNSwxMyArMjE1LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5
SWQoCiAgICAgaWYgKGJhc2VUYWdHUFJPck5vbmUgPT0gSW52YWxpZEdQUlJlZykgewogICAgICAg
ICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKHR5cGUpLAotICAgICAgICAgICAg
SlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtl
ZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwg
VHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNlbGxWYWx1ZShiYXNlUGF5bG9hZEdQUiksCiAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0Jp
dHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAg
ICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRG
dW5jdGlvbih0eXBlKSwKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1Yklu
Zm8oKSksIEpTVmFsdWVSZWdzKGJhc2VUYWdHUFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgaWRl
bnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdl
bi5zdHViSW5mbygpKSwgSlNWYWx1ZVJlZ3MoYmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRH
UFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRkR2V0QnlJ
ZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkV2l0aFRoaXMoCiAgICAgaWYgKGJhc2VUYWdHUFJPck5vbmUg
PT0gSW52YWxpZEdQUlJlZyAmJiB0aGlzVGFnR1BSID09IEludmFsaWRHUFJSZWcpIHsKICAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBUcnVz
dGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJlc3Vs
dFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZElt
bVB0cihnZW4uc3R1YkluZm8oKSksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1
ZShiYXNlUGF5bG9hZEdQUiksCiAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZSh0
aGlzUGF5bG9hZEdQUiksCiAgICAgICAgICAgICBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CkBAIC0y
NjEsNyArMjYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlz
KAogICAgICAgICAKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAotICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgSlNWYWx1ZVJlZ3Mo
YmFzZVRhZ0dQUk9yTm9uZSwgYmFzZVBheWxvYWRHUFIpLCBKU1ZhbHVlUmVncyh0aGlzVGFnR1BS
LCB0aGlzUGF5bG9hZEdQUiksIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIEpT
VmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmln
aW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIEpTVmFsdWVSZWdzKGJhc2VUYWdH
UFJPck5vbmUsIGJhc2VQYXlsb2FkR1BSKSwgSlNWYWx1ZVJlZ3ModGhpc1RhZ0dQUiwgdGhpc1Bh
eWxvYWRHUFIpLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogCiAgICAgbV9qaXQuYWRk
R2V0QnlJZFdpdGhUaGlzKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMjg5LDYgKzI4OSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVs
bE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuCiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2Jh
bE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0
aGlzKTsKIAorICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2Jh
bE9iamVjdC5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJl
bW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKKwogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJh
bmQubm9kZSgpKSkKICAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
YXJnLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKQEAgLTMwMSw5ICszMDQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVm
aW5lZChFZGdlIG9wZXJhbgogICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuanVtcCgpOwogCiAgICAgICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2pp
dCk7Ci0gICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2Jq
ZWN0LmdwcigpOwotICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3Rl
R2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0
LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6
OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQo
KSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRD
b21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RH
UFIsIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMzU3LDYgKzM1OCw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBv
cGVyYW5kLCBOCiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2JhbE9iamVjdCh0aGlzKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAorICAgICAg
ICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsK
KyAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVj
dC5ncHIoKTsKKwogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKICAg
ICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJnLmpzVmFsdWVSZWdz
KCkpOwogICAgICAgICAKQEAgLTM2NSw5ICszNjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwg
TgogICAgICAgICAgICAgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKSwgCiAgICAgICAgICAgICBpbnZlcnQgPyB0YWtlbiA6IG5vdFRha2VuKTsKICAgIAot
ICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5n
cHIoKTsKLSAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2Jh
bE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5sb2Fk
VW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJl
c3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9i
YWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0
YWtlbik7CkBAIC00MjEsNyArNDIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVQZWVwaG9sZVN0cmljdEVxKE5vZGUqIG5vZGUsIE5vZGUqIGJyYW5jaE5vZGUKICAgICAg
ICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMVBheWxvYWRHUFIsIGFyZzJQYXls
b2FkR1BSLCBpbnZlcnQgPyBub3RUYWtlbiA6IHRha2VuKTsKICAgICAgICAgCiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJlc3VsdFBheWxvYWRHUFIsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUGF5bG9hZEdQUiwgYXJnMlBheWxvYWRHUFIp
OworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcUNlbGwsIHJl
c3VsdFBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUGF5bG9h
ZEdQUiwgYXJnMlBheWxvYWRHUFIpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKQEAgLTQzMCw3ICs0MzIsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSog
bm9kZSwgTm9kZSogYnJhbmNoTm9kZQogICAgICAgICAvLyBGSVhNRTogQWRkIGZhc3QgcGF0aHMg
Zm9yIHR3b0NlbGxzLCBudW1iZXIgZXRjLgogCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNv
bXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
Q29tcGFyZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogCkBAIC00NjksNyArNDcx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVOb25QZWVwaG9sZVN0cmlj
dEVxKE5vZGUqIG5vZGUsIGJvb2wgaW52ZXJ0KQogICAgICAgICBub3RFcXVhbENhc2UubGluaygm
bV9qaXQpOwogICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0
UGF5bG9hZEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmlj
dEVxQ2VsbCwgcmVzdWx0UGF5bG9hZEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFy
ZzFQYXlsb2FkR1BSLCBhcmcyUGF5bG9hZEdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGFyZzFQYXlsb2FkR1BSLCBhcmcyUGF5bG9hZEdQUik7CiAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKIApAQCAtNDgwLDcgKzQ4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNK
U1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICAg
ICAgLy8gRklYTUU6IEFkZCBmYXN0IHBhdGhzLgogCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0UGF5bG9hZEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZzFSZWdzLCBhcmcyUmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJl
Z2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKQEAg
LTYzMyw3ICs2MzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2Rl
KQogICAgICAgICAgICAgZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2Uodm0oKSwgbV9qaXQs
IHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBpbmxp
bmVDYWxsRnJhbWUsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBzbG93Q2FzZSk7CiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAg
c2xvd0Nhc2UubGluaygmbV9qaXQpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uVGhyb3dTdGFja092ZXJmbG93Rm9yVmFyYXJncywgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgICAgICAgICAgbV9qaXQuYWJvcnRXaXRoUmVhc29uKERGR1ZhcmFy
Z3NUaHJvd2luZ1BhdGhEaWROb3RUaHJvdyk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0
KTsKQEAgLTY2NSw3ICs2NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2Rl
KiBub2RlKQogCiAgICAgICAgICAgICAvLyBSaWdodCBub3csIGFyZ3VtZW50cyBpcyBpbiBhcmd1
bWVudHNUYWdHUFIvYXJndW1lbnRzUGF5bG9hZEdQUiBhbmQgdGhlIHJlZ2lzdGVyIGZpbGUgaXMK
ICAgICAgICAgICAgIC8vIGZsdXNoZWQuCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblNpemVGcmFtZUZvclZhcmFyZ3MsIEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVu
dHNQYXlsb2FkR1BSKSwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0
KTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJn
cywgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBKU1ZhbHVlUmVncyhhcmd1bWVudHNUYWdHUFIsIGFyZ3VtZW50c1BheWxvYWRHUFIpLCBudW1V
c2VkU3RhY2tTbG90cywgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQpOwogICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTm93IHdl
IGhhdmUgdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBjYWxsZWUgZnJhbWUsIGJ1dCB3ZSd2ZSBs
b3N0IHRoZSBhcmd1bWVudHMgb3BlcmFuZC4KQEAgLTY3NSw3ICs2NzcsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAgICAgZW1pdFNldFZhcmFy
Z3NGcmFtZShtX2ppdCwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIGZhbHNlLCBzY3JhdGNoR1BS
MSwgc2NyYXRjaEdQUjEpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMigt
KHNpemVvZihDYWxsZXJGcmFtZUFuZFBDKSArIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFj
a0FsaWdubWVudEJ5dGVzKCksIDYgKiBzaXplb2Yodm9pZCopKSkpLCBzY3JhdGNoR1BSMSwgSklU
Q29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBzY3JhdGNoR1BSMSwgSlNW
YWx1ZVJlZ3MoYXJndW1lbnRzVGFnR1BSLCBhcmd1bWVudHNQYXlsb2FkR1BSKSwgZGF0YS0+Zmly
c3RWYXJBcmdPZmZzZXQsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgc2NyYXRjaEdQUjEsIEpTVmFs
dWVSZWdzKGFyZ3VtZW50c1RhZ0dQUiwgYXJndW1lbnRzUGF5bG9hZEdQUiksIGRhdGEtPmZpcnN0
VmFyQXJnT2Zmc2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0z
MihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklU
Q29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgfQpAQCAtODE2LDcgKzgx
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAg
IHJlcXVpcmVkQnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRC
eXRlcygpLCByZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0z
MihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwg
R1BSSW5mbzo6cmVnVDEpOwotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShv
cGVyYXRpb25DYWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGds
b2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVn
VDAsIEdQUkluZm86OnJlZ1QxKTsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwog
ICAgICAgICBtX2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFsKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTgyNSw4ICs4MjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAvLyBUaGlzIGlzIHRoZSBwYXJ0IHdo
ZXJlIHdlIG1lYW50IHRvIG1ha2UgYSBub3JtYWwgY2FsbC4gT29wcy4KICAgICAgICAgbV9qaXQu
YWRkUHRyKFRydXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKICAgICAgICAgbV9qaXQubG9hZFZhbHVlKEpJVENvbXBpbGVyOjpjYWxs
ZWVGcmFtZVNsb3QoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgSlNWYWx1ZVJlZ3MgeyBHUFJJbmZv
OjpyZWdUMSwgR1BSSW5mbzo6cmVnVDAgfSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVjdCksIEdQUkluZm86OnJlZ1Qz
KTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOworICAg
ICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25z
dGFudDo6bm9uQ2VsbFBvaW50ZXIobV9ncmFwaCwgaW5mbyksIEdQUkluZm86OnJlZ1QyKTsKICAg
ICAgICAgbV9qaXQuZW1pdFZpcnR1YWxDYWxsV2l0aG91dE1vdmluZ0dsb2JhbE9iamVjdCh2bSgp
LCBHUFJJbmZvOjpyZWdUMiwgQ2FsbE1vZGU6OlJlZ3VsYXIpOwogICAgICAgICBBU1NFUlQoaW5m
by0+Y2FsbE1vZGUoKSA9PSBDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgICAgIApAQCAtOTMyLDcg
KzkzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgfQogCi0gICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCBHUFJJbmZvOjpyZWdUMyk7CisgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6
cmVnVDMpOwogICAgIGluZm8tPmVtaXRTbG93UGF0aCh2bSgpLCBtX2ppdCk7CiAKICAgICBkb25l
LmxpbmsoJm1faml0KTsKQEAgLTE1MDIsMTAgKzE1MDQsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVRvQm9vbGVhbk9iamVjdE9yT3RoZXIoRWRnZSBub2RlVXNlLCBib29sIGludmVy
dCkKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVl
UGF5bG9hZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlR1BSKTsK
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQ
UiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hQ
dHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hVbmxpbmtlZENvbnN0YW50KAogICAgICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNl
dCgpKSwgCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGlj
KSkpKTsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50
aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2pp
dCk7CiAgICAgfQpAQCAtMTYyNywxMCArMTYyOSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0T2JqZWN0T3JPdGhlckJyYW5jaChFZGdlIG5vZGVVc2UsIEJhc2ljQmxvY2sqIHRha2VuLCBC
YQogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQ
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwg
dmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
KyAgICAgICAgICAgIG1faml0LmJyYW5jaFVubGlua2VkQ29uc3RhbnQoCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwg
Ci0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsK
KyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkp
OwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAg
ICAgfQpAQCAtMTgwMCw3ICsxODAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAg
ICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRSZWdzKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5s
aW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlSZWdzKTsKICAgICAgICAgICAgIGlmIChj
YW5Vc2VGbHVzaCA9PSBDYW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAg
LTE4NDQsMTEgKzE4NDYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFs
KE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAgICAg
IGlmIChiYXNlUmVncy50YWdHUFIoKSA9PSBJbnZhbGlkR1BSUmVnKSB7CiAgICAgICAgICAgICAg
ICAgc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNl
cywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICAgICAg
cmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygp
KSwgbnVsbHB0ciwgQ0NhbGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQUigp
KSwgcHJvcGVydHlSZWdzKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29t
cGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
Y29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgbnVsbHB0ciwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUoYmFzZVJlZ3MucGF5bG9hZEdQUigpKSwgcHJvcGVydHlSZWdz
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgc2xvd1BhdGggPSBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9u
R2V0QnlWYWxPcHRpbWl6ZSwKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVncywgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgbnVsbHB0ciwgYmFzZVJl
Z3MsIHByb3BlcnR5UmVncyk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIEpJVENv
bXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIG51bGxwdHIsIGJh
c2VSZWdzLCBwcm9wZXJ0eVJlZ3MpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtX2pp
dC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTE5NDUsNyArMTk0Nyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVn
cywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRS
ZWdzLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0yMDExLDcgKzIwMTMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFt
YmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAg
ICAgIHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkdldEJ5VmFsT2JqZWN0SW50LAotICAgICAgICAgICAgICAgIHJlc3VsdFJlZ3MsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVnLCBwcm9wZXJ0eVJlZykpOworICAgICAgICAg
ICAgICAgIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
LCBwcm9wZXJ0eVJlZykpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjA2OCw3ICsyMDcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6
OnR1cGxlPEoKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25HZXRC
eVZhbE9iamVjdEludCwKLSAgICAgICAgICAgICAgICByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVy
dHlSZWcpKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTI2NTUsNyArMjY1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBj
YWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5
VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLAotICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgcHJvcGVy
dHlSZWdzLCB2YWx1ZVJlZ3MpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6OlVubGlua2VkQ29u
c3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VSZWdzLCB0aGlzUmVncywgcHJvcGVydHlSZWdzLCB2YWx1ZVJlZ3MpOwogICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwpA
QCAtMjc1Niw3ICsyNzU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZSwgdGhpcywgb3BlcmF0
aW9uQXJyYXlQb3BBbmRSZWNvdmVyTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
UmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGJhc2VHUFIpKTsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVU
YWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBi
YXNlR1BSKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQodmFsdWVU
YWdHUFIsIHZhbHVlUGF5bG9hZEdQUiwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI3
OTEsNyArMjc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQ
YXRoQ2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFy
cmF5UG9wQW5kUmVjb3Zlckxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
dmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBiYXNlR1BSKSk7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BS
LCB2YWx1ZVBheWxvYWRHUFIpLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVlVGFnR1BS
LCB2YWx1ZVBheWxvYWRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yODI5LDcg
KzI4MzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENh
bGwoCiAgICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBv
cCwKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5
bG9hZEdQUiksIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBK
SVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUikpOwogCiAgICAgICAgICAgICBq
c1ZhbHVlUmVzdWx0KHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIsIG5vZGUpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yOTg2LDcgKzI5ODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIEluc3RlYWQgb2YgdGhlIHNsb3cgcGF0aCBn
ZW5lcmF0b3IsIHdlIGVtaXQgY2FsbE9wZXJhdGlvbiBoZXJlLgogICAgICAgICBpZiAoIShtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNCeXRlY29kZU51bWJlcikp
IHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvblRvTnVtYmVyLCByZXN1bHRSZWdzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpKSwgYXJndW1lbnRSZWdzKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
VG9OdW1iZXIsIHJlc3VsdFJlZ3MsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1
bWVudFJlZ3MpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdE51bWJlcjsKQEAg
LTMwMDAsNyArMzAwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKIAogICAgICAgICAgICAgbm90TnVtYmVyLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOwotICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0UmVncywgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGFyZ3VtZW50UmVncyk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRvTnVtYmVyLCByZXN1bHRSZWdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJn
dW1lbnRSZWdzKTsKICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKQEAgLTM1MTAsNiArMzUxMiw5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9y
YXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3Rl
R2xvYmFsT2JqZWN0KHRoaXMpOwogCisgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQ
UiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOworICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFs
T2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOworCiAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygp
KTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWws
IHZhbHVlLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVz
dWx0LmdwcigpKTsKQEAgLTM1MjksOSArMzUzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlzTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxP
YmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIEdQUlJlZyBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1faml0
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmpl
Y3RHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGls
ZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAg
ICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC0zNTk1LDcg
KzM1OTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OdW1iZXJJc0ludGVnZXIsIHJlc3VsdEdQUiwgVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGlucHV0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uTnVtYmVySXNJbnRlZ2VyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBpbnB1dFJlZ3MpOwogICAgICAgICBib29sZWFuUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM2MzgsNyArMzY0MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdp
c3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwotICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGlucHV0UmVncyk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwg
cmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgaW5wdXRSZWdzKTsKICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zNjY5LDkgKzM2NzIsOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUkZsdXNo
ZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBP
YmplY3RVc2UpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTTWFwRmluZEJ1
Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlS
ZWdzLCBoYXNoR1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBG
aW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBH
UFIsIGtleVJlZ3MsIGhhc2hHUFIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbWFwR1BSLCBrZXlSZWdzLCBoYXNoR1BSKTsKKyAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBp
bGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleVJlZ3MsIGhhc2hHUFIpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzkzMCw3ICszOTMzLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbV9qaXQubW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCB0ZW1wR1BSKTsKICAg
ICAgICAgICAgIGtleVJlZ3MgPSBKU1ZhbHVlUmVncyh0ZW1wR1BSLCBrZXlSZWdzLnBheWxvYWRH
UFIoKSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Q
cm9wZXJ0eSwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BS
LCBrZXlSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0
eSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb2JqZWN0R1BSLCBr
ZXlSZWdzKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCkBAIC00MjE4LDEyICs0MjIxLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmJsZXNzQm9vbGVhbihHUFJSZWcpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVBcml0aFJhbmRvbShOb2RlKiBub2RlKQogewotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotCiAgICAgZmx1c2hSZWdpc3RlcnMoKTsKIAogICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7
Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25SYW5kb20sIHJlc3VsdC5mcHIoKSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25SYW5kb20sIHJlc3VsdC5mcHIoKSwgSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKSkpOwogICAgIC8vIG9wZXJhdGlvblJhbmRvbSBkb2VzIG5vdCByYWlzZSBhbnkg
ZXhjZXB0aW9uLgogICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggNmMyYThiYTM5NDliOWJiZmJiNjM0MzZhOWYzMGQyZWU1MmNjNDE2Zi4uNjcxZGI4MmI4NzAy
NGRiMjEzYTJlN2JlZGFjYzc3MjRmMmVlNzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0xODEsMTIgKzE4MSwxMiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
R1BSUmVnIGJhc2VHUFIsIEdQUlJlZwogICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoSUNDYWxs
KAogICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBnZW4uc3R1YkluZm8oKSwgc3R1YkluZm9H
UFIsIENDYWxsSGVscGVyczo6QWRkcmVzcyhzdHViSW5mb0dQUiwgU3RydWN0dXJlU3R1YkluZm86
Om9mZnNldE9mU2xvd09wZXJhdGlvbigpKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1
bmN0aW9uKHR5cGUpLAogICAgICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVp
cmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdp
bikpLCBzdHViSW5mb0dQUiwgYmFzZUdQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAg
ICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BS
LCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGgg
PSBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIGFwcHJvcHJpYXRl
T3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbih0eXBlKSwKICAgICAgICAgICAgIHNwaWxsTW9kZSwg
RXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCi0gICAgICAgICAgICByZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKGNvZGVPcmlnaW4pKSwgVHJ1c3RlZEltbVB0cihnZW4uc3R1YkluZm8oKSksIGJh
c2VHUFIsIGlkZW50aWZpZXIucmF3Qml0cygpKTsKKyAgICAgICAgICAgIHJlc3VsdEdQUiwgSklU
Q29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IoY29kZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgYmFzZUdQUiwg
aWRlbnRpZmllci5yYXdCaXRzKCkpOwogICAgIH0KICAgICAKICAgICBtX2ppdC5hZGRHZXRCeUlk
KGdlbiwgc2xvd1BhdGguZ2V0KCkpOwpAQCAtMjIxLDEyICsyMjEsMTIgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZFdpdGhUaGlzKENvZGVPcmlnaW4gY29kZU9yaWdpbiwgR1BS
UmVnIGJhc2VHUFIKICAgICAgICAgc2xvd1BhdGggPSBzbG93UGF0aElDQ2FsbCgKICAgICAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3Moc3R1YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNs
b3dPcGVyYXRpb24oKSksIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpc09wdGltaXplLAogICAgICAg
ICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwK
LSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29kZU9yaWdpbikpLCBzdHViSW5mb0dQUiwgYmFz
ZUdQUiwgdGhpc0dQUiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBiYXNlR1BSLCB0aGlzR1BSLCBp
ZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2xvd1BhdGggPSBz
bG93UGF0aENhbGwoCiAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5
SWRXaXRoVGhpc09wdGltaXplLAogICAgICAgICAgICAgRG9udFNwaWxsLCBFeGNlcHRpb25DaGVj
a1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCwKLSAgICAgICAgICAgIHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IoY29k
ZU9yaWdpbikpLCBUcnVzdGVkSW1tUHRyKGdlbi5zdHViSW5mbygpKSwgYmFzZUdQUiwgdGhpc0dQ
UiwgaWRlbnRpZmllci5yYXdCaXRzKCkpOworICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBiYXNlR1BSLCB0aGlz
R1BSLCBpZGVudGlmaWVyLnJhd0JpdHMoKSk7CiAgICAgfQogICAgIAogICAgIG1faml0LmFkZEdl
dEJ5SWRXaXRoVGhpcyhnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxP
clVuZGVmaW5lZChFZGdlIG9wZXJhbgogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVj
dEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVj
dEdQUik7CisgICAgICAgIG1faml0LmxvYWRVbmxpbmtlZENvbnN0YW50KEpJVENvbXBpbGVyOjpV
bmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVu
dE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZtKCksIGFyZ0dQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAg
ICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RH
UFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0R1BSKTsKQEAgLTMwNSw2ICszMDUsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9y
VW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCwgTgogICAgICAgICBHUFJUZW1wb3JhcnkgbG9jYWxHbG9i
YWxPYmplY3QodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3Qo
dGhpcyk7CiAKKyAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9i
YWxPYmplY3QuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSBy
ZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7CisKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
Q2VsbDsKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCiAgICAgICAg
ICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikp
OwpAQCAtMzEzLDkgKzMxNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
UGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQoRWRnZSBvcGVyYW5kLCBOCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNl
dCgpKSwgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQpLCBub3RUYWtlbik7CiAKLSAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyByZW1vdGVH
bG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAg
ICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgYXJnR1BSLCByZXN1bHRHUFIpOwogICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAg
ICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIsIHRha2VuKTsKQEAgLTQ1OCw3ICs0NTksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwg
Tm9kZSogYnJhbmNoTm9kZQogICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWwsIGFy
ZzFHUFIsIGFyZzJHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwogICAgICAgICAKICAg
ICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxR1BSLCBhcmcyR1BSKTsKICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICAKQEAgLTUwOSw3ICs1MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZVBlZXBob2xlU3RyaWN0RXEoTm9kZSogbm9kZSwgTm9kZSogYnJhbmNoTm9kZQogCiAgICAgICAg
IGp1bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9yY2VKdW1wKTsKIAotICAgICAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGhDYXNlcywgdGhpcywgb3Bl
cmF0aW9uQ29tcGFyZVN0cmljdEVxLCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBhcmcxR1BSLCBhcmcyR1BSKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93UGF0aENhc2VzLCB0aGlzLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEs
IHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZzFHUFIsIGFyZzJH
UFIpKTsKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDog
SklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdEdQUiwgdGFrZW4pOwogICAgIH0KIApAQCAtNTQ3
LDcgKzU0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhv
bGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKICAgICAgICAgbm90RXF1YWxDYXNl
LmxpbmsoJm1faml0KTsKICAgICAgICAgCiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmlj
dEVxQ2VsbCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3Ms
IGFyZzJSZWdzKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0
RXFDZWxsLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmcxUmVn
cywgYXJnMlJlZ3MpOwogICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIApAQCAtNjAzLDcgKzYwNCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVyaWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2Rl
KiBub2RlLCBib29sIGludmVydCkKIAogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KDApLCBy
ZXN1bHRHUFIpOwogCi0gICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQ
YXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJnMVJlZ3MsIGFyZzJSZWdzKSk7CisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoQ2FzZXMsIHRoaXMsIG9wZXJhdGlv
bkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgYXJnMVJlZ3MsIGFyZzJSZWdzKSk7CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKIApAQCAt
NzQzLDcgKzc0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZSh2bSgpLCBtX2ppdCwg
c2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIGlubGlu
ZUNhbGxGcmFtZSwgZGF0YS0+Zmlyc3RWYXJBcmdPZmZzZXQsIHNsb3dDYXNlKTsKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBz
bG93Q2FzZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
blRocm93U3RhY2tPdmVyZmxvd0ZvclZhcmFyZ3MsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1fZ3JhcGgsIGdsb2JhbE9iamVjdCkpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dGb3JWYXJhcmdzLCBKSVRDb21waWxlcjo6VW5saW5rZWRD
b25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBtX2ppdC5hYm9ydFdpdGhSZWFzb24oREZHVmFyYXJn
c1Rocm93aW5nUGF0aERpZE5vdFRocm93KTsKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQp
OwpAQCAtNzcyLDcgKzc3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIGlzRmx1c2hlZCgp
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gUmlnaHQgbm93LCBhcmd1bWVudHMgaXMg
aW4gYXJndW1lbnRzR1BSIGFuZCB0aGUgcmVnaXN0ZXIgZmlsZSBpcyBmbHVzaGVkLgotICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzLCBHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50c0dQ
UiwgbnVtVXNlZFN0YWNrU2xvdHMsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uU2l6ZUZyYW1lRm9yVmFyYXJncywgR1BSSW5mbzo6
cmV0dXJuVmFsdWVHUFIsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgsIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBhcmd1bWVudHNH
UFIsIG51bVVzZWRTdGFja1Nsb3RzLCBkYXRhLT5maXJzdFZhckFyZ09mZnNldCk7CiAgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBOb3cgd2UgaGF2ZSB0aGUgYXJndW1lbnQgY291bnQgb2YgdGhlIGNhbGxlZSBmcmFtZSwgYnV0
IHdlJ3ZlIGxvc3QgdGhlIGFyZ3VtZW50cyBvcGVyYW5kLgpAQCAtNzgyLDcgKzc4Myw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBlbWl0
U2V0VmFyYXJnc0ZyYW1lKG1faml0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgZmFsc2UsIHNj
cmF0Y2hHUFIxLCBzY3JhdGNoR1BSMSk7CiAgICAgICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3Rl
ZEltbTMyKC0oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZih2b2lkKikpKSksIHNjcmF0Y2hH
UFIxLCBKSVRDb21waWxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCBHUFJJ
bmZvOjpyZXR1cm5WYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIHNjcmF0Y2hH
UFIxLCBhcmd1bWVudHNHUFIsIGRhdGEtPmZpcnN0VmFyQXJnT2Zmc2V0LCBHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUik7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFy
YXJnc0ZyYW1lLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2Vk
Q29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIHNjcmF0Y2hHUFIxLCBhcmd1bWVudHNHUFIsIGRhdGEtPmZpcnN0VmFyQXJnT2Zm
c2V0LCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogICAgICAgICAgICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgSklUQ29tcGlsZXI6
OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgfQpAQCAtOTQzLDcgKzk0NCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIHJlcXVpcmVk
Qnl0ZXMgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBy
ZXF1aXJlZEJ5dGVzKTsKICAgICAgICAgbV9qaXQuc3ViUHRyKFRydXN0ZWRJbW0zMihyZXF1aXJl
ZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIobm9kZS0+ZWNtYU1vZGUoKS52YWx1ZSgpKSwgR1BSSW5mbzo6
cmVnVDEpOwotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50czxkZWNsdHlwZShvcGVyYXRpb25D
YWxsRXZhbCk+KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9iamVj
dCksIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMSk7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzPGRlY2x0eXBlKG9wZXJhdGlvbkNhbGxFdmFsKT4oSklUQ29tcGlsZXI6OlVubGlu
a2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDAsIEdQUklu
Zm86OnJlZ1QxKTsKICAgICAgICAgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpOwogICAgICAgICBt
X2ppdC5hcHBlbmRDYWxsKG9wZXJhdGlvbkNhbGxFdmFsKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKQEAgLTk1Miw4ICs5NTMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlKQogICAgICAgICAvLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHdlIG1l
YW50IHRvIG1ha2UgYSBub3JtYWwgY2FsbC4gT29wcy4KICAgICAgICAgbV9qaXQuYWRkUHRyKFRy
dXN0ZWRJbW0zMihyZXF1aXJlZEJ5dGVzKSwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVNsb3Qo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwotICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIGdsb2JhbE9i
amVjdCksIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3Rh
bnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwg
R1BSSW5mbzo6cmVnVDMpOworICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudDo6bm9uQ2VsbFBvaW50ZXIobV9ncmFwaCwgY2FsbExp
bmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgICAgICBtX2ppdC5lbWl0VmlydHVhbENhbGxX
aXRob3V0TW92aW5nR2xvYmFsT2JqZWN0KHZtKCksIEdQUkluZm86OnJlZ1QyLCBDYWxsTW9kZTo6
UmVndWxhcik7CiAgICAgICAgIEFTU0VSVChjYWxsTGlua0luZm8tPmNhbGxNb2RlKCkgPT0gQ2Fs
bE1vZGU6OlJlZ3VsYXIpOwogICAgICAgICAKQEAgLTEwMzUsMTMgKzEwMzYsMTUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgQ2FsbEZyYW1lU2h1
ZmZsZXIgY2FsbEZyYW1lU2h1ZmZsZXIobV9qaXQsIHNodWZmbGVEYXRhKTsKICAgICAgICAgY2Fs
bEZyYW1lU2h1ZmZsZXIuc2V0Q2FsbGVlSlNWYWx1ZVJlZ3MoSlNWYWx1ZVJlZ3MoR1BSSW5mbzo6
cmVnVDApKTsKICAgICAgICAgY2FsbEZyYW1lU2h1ZmZsZXIucHJlcGFyZUZvclNsb3dQYXRoKCk7
CisgICAgICAgIC8vIEZJWE1FCisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIobV9ncmFwaCwgZ2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOyAvLyBKU0ds
b2JhbE9iamVjdCBuZWVkcyB0byBiZSBpbiByZWdUMwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
aml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0byBi
ZSBpbiByZWdUMAorICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBnbG9iYWxPYmplY3QpLCBHUFJJbmZvOjpyZWdU
Myk7IC8vIEpTR2xvYmFsT2JqZWN0IG5lZWRzIHRvIGJlIGluIHJlZ1QzCiAgICAgICAgIGlmIChp
c1RhaWwpCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7IC8vIFRo
aXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHdlIG1vdmVkIGNhbGxlZUdQUiB0byByZWdUMAogICAg
IH0KIAotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
Z2xvYmFsT2JqZWN0KSwgR1BSSW5mbzo6cmVnVDMpOyAvLyBKU0dsb2JhbE9iamVjdCBuZWVkcyB0
byBiZSBpbiByZWdUMwogICAgIGNhbGxMaW5rSW5mby0+ZW1pdFNsb3dQYXRoKHZtKCksIG1faml0
KTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTkyNiw3ICsxOTI5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbXBhcmVFcVB0cihOb2RlKiBub2RlKQogICAgIEdQUlJl
ZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3Jh
cGgsIG5vZGUtPmNlbGxPcGVyYW5kKCktPmNlbGwoKSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQu
bG9hZFVubGlua2VkQ29uc3RhbnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFw
aCwgbm9kZS0+Y2VsbE9wZXJhbmQoKS0+Y2VsbCgpKSwgcmVzdWx0R1BSKTsKICAgICBtX2ppdC5j
b21wYXJlNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgcmVzdWx0R1BSLCByZXN1
bHRHUFIpOwogICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0K
QEAgLTE5NjcsMTAgKzE5NzAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvQm9v
bGVhbk9iamVjdE9yT3RoZXIoRWRnZSBub2RlVXNlLCBib29sIGludmVydCkKIAogICAgICAgICBt
X2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgc3RydWN0dXJlR1BSKTsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGVVc2UsIAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAorICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVW5saW5rZWRDb25zdGFudCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVy
ZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAg
IFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05v
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIxMjIsMTAg
KzIxMjUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2go
RWRnZSBub2RlVXNlLCBCYXNpY0Jsb2NrKiB0YWtlbiwgQmEKIAogICAgICAgICBtX2ppdC5lbWl0
TG9hZFN0cnVjdHVyZSh2bSgpLCB2YWx1ZUdQUiwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsCi0g
ICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCisgICAgICAgICAgICBtX2ppdC5icmFuY2hVbmxp
bmtlZENvbnN0YW50KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAg
ICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX2N1
cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMjE5MSw3ICsyMTk0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2goRWRnZSBub2RlVXNlLCBCYXNp
Y0Jsb2NrKiB0YWtlbiwgQmFzaWNCbG8KICAgICAgICAgICAgIGlmICghaXNEZWZpbml0ZWx5U3Ry
aW5nKQogICAgICAgICAgICAgICAgIHNraXBTdHJpbmdDYXNlID0gbV9qaXQuYnJhbmNoSWZOb3RT
dHJpbmcodmFsdWVHUFIpOwogCi0gICAgICAgICAgICBicmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
OkVxdWFsLCB2YWx1ZUdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwganNF
bXB0eVN0cmluZyh2bSgpKSksIG5vdFRha2VuKTsKKyAgICAgICAgICAgIGJyYW5jaFVubGlua2Vk
Q29uc3RhbnQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVu
bGlua2VkQ29uc3RhbnQobV9ncmFwaCwganNFbXB0eVN0cmluZyh2bSgpKSksIG5vdFRha2VuKTsK
ICAgICAgICAgICAgIGp1bXAodGFrZW4sIEZvcmNlSnVtcCk7CiAKICAgICAgICAgICAgIGlmICgh
aXNEZWZpbml0ZWx5U3RyaW5nKQpAQCAtMjIxNSw4ICsyMjE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdFVudHlwZWRCcmFuY2goRWRnZSBub2RlVXNlLCBCYXNpY0Jsb2NrKiB0YWtlbiwg
QmFzaWNCbG8KICAgICAgICAgaWYgKHNob3VsZENoZWNrTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkg
ewogICAgICAgICAgICAgYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSks
IFRydXN0ZWRJbW0zMihNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKSwgdGFrZW4pOwogICAgICAgICAg
ICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodm0oKSwgdmFsdWVHUFIsIHRlbXAxR1BSKTsKLSAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBnbG9iYWxPYmplY3Qp
LCB0ZW1wMkdQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRD
b21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgdGVtcDJHUFIpOwogICAgICAgICAg
ICAgYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcDFHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCB0ZW1wMkdQ
UiwgdGFrZW4pOwogICAgICAgICAgICAganVtcChub3RUYWtlbiwgRm9yY2VKdW1wKTsKICAgICAg
ICAgfSBlbHNlCkBAIC0yNDE0LDcgKzI0MTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0QnlWYWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8Sgog
ICAgICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsLCByZXN1bHRSZWdzLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwgcHJvcGVydHlHUFIpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbCwgcmVzdWx0UmVncywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIsIHByb3BlcnR5R1BSKTsKICAgICAgICAgICAgIGlm
IChjYW5Vc2VGbHVzaCA9PSBDYW5Vc2VGbHVzaDo6Tm8pCiAgICAgICAgICAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
QEAgLTI0NzAsMTEgKzI0NzIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsKE5vZGUqIG5vZGUsIGNvbnN0IFNjb3BlZExhbWJkYTxzdGQ6OnR1cGxlPEoKICAgICAgICAg
aWYgKEpJVENvZGU6OnVzZURhdGFJQyhKSVRUeXBlOjpERkdKSVQpKSB7CiAgICAgICAgICAgICBz
bG93UGF0aCA9IHNsb3dQYXRoSUNDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhp
cywgZ2VuLnN0dWJJbmZvKCksIHN0dWJJbmZvR1BSLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc3R1
YkluZm9HUFIsIFN0cnVjdHVyZVN0dWJJbmZvOjpvZmZzZXRPZlNsb3dPcGVyYXRpb24oKSksIG9w
ZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihj
b2RlT3JpZ2luKSksIHN0dWJJbmZvR1BSLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7
CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIHN0dWJJbmZv
R1BSLCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUsCi0gICAgICAgICAgICAgICAg
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkp
LCBudWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CisgICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihjb2RlT3JpZ2luKSksIFRydXN0ZWRJbW1QdHIoZ2VuLnN0dWJJbmZvKCkpLCBu
dWxscHRyLCBiYXNlR1BSLCBwcm9wZXJ0eUdQUik7CiAgICAgICAgIH0KIAogICAgICAgICBtX2pp
dC5hZGRHZXRCeVZhbChnZW4sIHNsb3dQYXRoLmdldCgpKTsKQEAgLTI1NDksNyArMjU1MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBT
Y29wZWRMYW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdFJlZywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHBy
b3BlcnR5UmVnKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlZywgSklUQ29tcGlsZXI6
OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGJhc2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgIH0KIAog
CkBAIC0yNjQxLDcgKzI2NDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlW
YWwoTm9kZSogbm9kZSwgY29uc3QgU2NvcGVkTGFtYmRhPHN0ZDo6dHVwbGU8SgogICAgICAgICAg
ICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAog
ICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkdldEJ5VmFsT2Jq
ZWN0SW50LAotICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWdzLmdwcigpLCBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0UmVncy5ncHIoKSwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJh
c2VSZWcsIHByb3BlcnR5UmVnKSk7CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJl
Z3MuZ3ByKCksIG5vZGUpOwogICAgICAgICB9CiAKQEAgLTI2OTksNyArMjcwMSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbChOb2RlKiBub2RlLCBjb25zdCBTY29wZWRM
YW1iZGE8c3RkOjp0dXBsZTxKCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAg
ICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3Bl
cmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsCi0gICAgICAgICAgICAgICAgcmVzdWx0UmVnLCBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZywgcHJvcGVydHlSZWcpKTsKKyAgICAgICAg
ICAgICAgICByZXN1bHRSZWcsIEpJVENvbXBpbGVyOjpVbmxpbmtlZENvbnN0YW50KG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlUmVn
LCBwcm9wZXJ0eVJlZykpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVnLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CkBAIC0yODA1LDcgKzI4MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUmVnRXhwVGVzdElubGluZShOb2RlKiBub2RlKQogICAgICAgICAvLyAgU2F2
ZWQgY2FjaGVkIHJlc3VsdAogICAgICAgICBwdHJkaWZmX3Qgb2Zmc2V0ID0gSlNHbG9iYWxPYmpl
Y3Q6OnJlZ0V4cEdsb2JhbERhdGFPZmZzZXQoKSArIFJlZ0V4cEdsb2JhbERhdGE6Om9mZnNldE9m
Q2FjaGVkUmVzdWx0KCk7CiAKLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9ncmFwaCwgcmVnRXhwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFs
T2JqZWN0R1BSLCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mTGFzdFJlZ0V4
cCgpKSk7CisgICAgICAgIG1faml0LnN0b3JlVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6
VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCByZWdFeHApLCBKSVRDb21waWxlcjo6QWRkcmVzcyhn
bG9iYWxPYmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZMYXN0
UmVnRXhwKCkpKTsKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoYXJndW1lbnRHUFIsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGdsb2JhbE9iamVjdEdQUiwgb2Zmc2V0ICsgUmVnRXhwQ2FjaGVkUmVzdWx0
OjpvZmZzZXRPZkxhc3RJbnB1dCgpKSk7CiAgICAgICAgIG1faml0LnN0b3JlMzIoeWFyclJlZ2lz
dGVycy5yZXR1cm5SZWdpc3RlciwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZ2xvYmFsT2JqZWN0R1BS
LCBvZmZzZXQgKyBSZWdFeHBDYWNoZWRSZXN1bHQ6Om9mZnNldE9mUmVzdWx0KCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoTWF0Y2hSZXN1bHQsIHN0YXJ0KSkpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKHlh
cnJSZWdpc3RlcnMucmV0dXJuUmVnaXN0ZXIyLCBKSVRDb21waWxlcjo6QWRkcmVzcyhnbG9iYWxP
YmplY3RHUFIsIG9mZnNldCArIFJlZ0V4cENhY2hlZFJlc3VsdDo6b2Zmc2V0T2ZSZXN1bHQoKSAr
IE9CSkVDVF9PRkZTRVRPRihNYXRjaFJlc3VsdCwgZW5kKSkpOwpAQCAtMzUzMCw3ICszNTMyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIGlm
ICghc3RvcmFnZUVkZ2UpIHsKICAgICAgICAgICAgIGF1dG8gY2FsbFNsb3dQYXRoID0gWyZdICgp
IHsKLSAgICAgICAgICAgICAgICBhdXRvIGdsb2JhbE9iamVjdEltbVB0ciA9IFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpOworICAgICAgICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRy
ID0gSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7CiAgICAgICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgogICAgICAg
ICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBZGQsIHJlc3VsdEdQ
UiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CkBA
IC0zNzM5LDcgKzM3NDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1c2hl
ZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWlj
c0lzTG9ja0ZyZWUsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFw
aCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9wZXJh
bmRHUFIpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzSXNMb2Nr
RnJlZSwgcmVzdWx0R1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgb3BlcmFuZEdQ
Uik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODgx
LDcgKzM4ODMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSwgdmFsdWVHUFIpKTsKICAgICAgICAgICAgIGFkZFNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKLSAgICAgICAgICAg
ICAgICAgICAgc2xvd0Nhc2UsIHRoaXMsIG9wZXJhdGlvbkFycmF5UG9wQW5kUmVjb3Zlckxlbmd0
aCwgdmFsdWVHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBiYXNlR1BSKSk7CisgICAg
ICAgICAgICAgICAgICAgIHNsb3dDYXNlLCB0aGlzLCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292
ZXJMZW5ndGgsIHZhbHVlR1BSLCBKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBXZSBjYW4ndCBrbm93IGZvciBzdXJl
IHRoYXQgdGhlIHJlc3VsdCBpcyBhbiBpbnQgYmVjYXVzZSBvZiB0aGUgc2xvdyBwYXRocy4gOi0v
CiAgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHZhbHVlR1BSLCBub2RlKTsKQEAgLTM5MTQsNyAr
MzkxNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0
aW9uQXJyYXlQb3AsIHZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBo
LCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQ
UikpOworICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkFycmF5
UG9wLCB2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGJhc2VHUFIpKTsK
IAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdCh2YWx1ZUdQUiwgbm9kZSk7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTQwNDAsNyArNDA0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgLy8gSW5zdGVhZCBvZiB0aGUgc2xvdyBwYXRoIGdlbmVy
YXRvciwgd2UgZW1pdCBjYWxsT3BlcmF0aW9uIGhlcmUuCiAgICAgICAgIGlmICghKG1fc3RhdGUu
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgU3BlY0J5dGVjb2RlTnVtYmVyKSkgewog
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVG9OdW1iZXIsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSks
IGFyZ3VtZW50R1BSKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1i
ZXIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGFyZ3VtZW50R1BS
KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3ROdW1iZXIgPSBtX2ppdC5icmFu
Y2hJZk5vdE51bWJlcihhcmd1bWVudEdQUik7CkBAIC00MDQ5LDcgKzQwNTEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgICAgIG5vdE51bWJl
ci5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRHUFIpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOworICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBKSVRDb21w
aWxlcjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgc2lsZW50
RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IApAQCAtNDUzOSw3ICs0NTQxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKIAogICAgICAg
ICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG5vZGUtPmVjbWFNb2Rl
KCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRp
b25QdXRCeVZhbFdpdGhUaGlzLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZUdQUiwg
dGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG5vZGUtPmVjbWFNb2RlKCkuaXNTdHJpY3QoKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRo
aXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzLCBKSVRDb21waWxlcjo6VW5saW5r
ZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBwcm9wZXJ0eUdQUiwgdmFsdWVHUFIp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOwpAQCAtNDY3Nyw3ICs0Njc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xv
YmFsT2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQ
UiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5sb2FkVW5saW5rZWRDb25zdGFudChKSVRDb21waWxlcjo6VW5saW5rZWRDb25zdGFu
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1
Y3R1cmUodm0oKSwgdmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAg
ICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0
R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00ODgyLDcgKzQ4
ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk1hcEhhc2gsIHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVS
ZWdzKGlucHV0R1BSKSk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhh
c2gsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdz
KGlucHV0R1BSKSk7CiAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC00OTI3LDcgKzQ5MjksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgc2xvd1Bh
dGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRH
UFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEpTVmFsdWVSZWdzKGlucHV0R1BSKSk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKSVRDb21waWxl
cjo6VW5saW5rZWRDb25zdGFudChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
CkBAIC01MDc1LDkgKzUwNzcsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBzbG93UGF0aENhc2VzLmxpbmsoJm1faml0KTsKICAgICAgICAg
ICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKGluZGV4R1BSKTsKICAgICAgICAgICAgIGlmIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTWFwT2JqZWN0VXNlKQotICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CisgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BS
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkpTU2V0RmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRp
b24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpVbmxp
bmtlZENvbnN0YW50KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CiAgICAgICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKQEAgLTUwODUsOSArNTA4
Nyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAg
ICBub3RQcmVzZW50SW5UYWJsZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGlmIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gTWFwT2JqZWN0VXNlKQotICAgICAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCB2bSgpLnNlbnRpbmVsTWFwQnVja2V0
KCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3RhbnQo
SklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0oKS5zZW50aW5lbE1hcEJ1
Y2tldCgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCB2bSgpLnNlbnRpbmVsU2V0QnVj
a2V0KCkpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZFVubGlua2VkQ29uc3Rh
bnQoSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgdm0oKS5zZW50aW5lbFNl
dEJ1Y2tldCgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC01Mzkw
LDcgKzUzOTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgc2xvd1BhdGgubGluaygmbV9qaXQpOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJl
Z2lzdGVycyhyZXN1bHRHUFIpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhhc093
blByb3BlcnR5LCByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgs
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBvYmplY3RH
UFIsIGtleUdQUik7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJvcGVy
dHksIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlVubGlua2VkQ29uc3RhbnQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIG9iamVjdEdQUiwg
a2V5R1BSKTsKICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1RodW5rcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RodW5rcy5j
cHAKaW5kZXggMWQwN2RlNWRiZTQ5ZTNhZmMyMDc0OGVlZTAzMjQ4ZGY4MGU0MGY3NC4uNTEzM2I0
ZTYwZjhmODQ2YzgxMTJmNjlmNDI1ZjNhM2FhZWI1ZDIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVGh1bmtzLmNwcApAQCAtMTY3LDYgKzE2NywxMCBAQCBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9zckVudHJ5VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogCiAg
ICAgaml0LnJlc3RvcmVDYWxsZWVTYXZlc0Zyb21FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIo
dm0udG9wRW50cnlGcmFtZSk7CiAgICAgaml0LmVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0
ZXJzKCk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBqaXQuZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJQdHIoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrLCBHUFJJbmZvOjpjb25zdGFudHNSZWdp
c3Rlcik7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNv
bnN0YW50c1JlZ2lzdGVyLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURGF0YSgpKSwgR1BSSW5mbzo6
Y29uc3RhbnRzUmVnaXN0ZXIpOworI2VuZGlmCiAKICAgICBqaXQuZmFySnVtcChHUFJJbmZvOjpy
ZWdUMSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKaW5kZXggZDE5MTU5Y2FmY2Q5NzU3YmRkM2Q1
OWQyOGViZTZlY2E5MmM4NzBiNi4uMmQ1ZGM1ZGUwZjE3M2MxZDFhZDg1NjQ1NzJlNDBiMmU5NzVl
NTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBl
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNw
cApAQCAtNDUsMTQgKzQ1LDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUV4ZWN1dGFibGVCYXNl
KiBBc3NlbWJseUhlbHBlcnM6OmV4ZWN1dGFibGVGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCi17Ci0gICAgYXV0byogaW5saW5lQ2FsbEZyYW1l
ID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUoKTsKLSAgICBpZiAoIWlubGluZUNhbGxGcmFt
ZSkKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7Ci0gICAgcmV0
dXJuIGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
OwotfQotCiBBc3NlbWJseUhlbHBlcnM6Okp1bXAgQXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkZh
c3RUeXBlZEFycmF5KEdQUlJlZyBiYXNlR1BSKQogewogICAgIHJldHVybiBicmFuY2gzMigKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDFiOTAyODk5
MjA1ZjdjOTI5YjA1ZjI0YmZhNGQ5MTQ3NzJhMWUzNTkuLjkzMTljNWYzYzcyMzYyZDNhYThiMDUz
ZDgyOTQ1YTI5ZTg3YTlmYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaApAQCAtMTU0NSwxMyArMTU0NSw2IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6
IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiAgICAgdm9pZCBjbGVhclNhbXBsaW5nRmxhZyhpbnQz
Ml90IGZsYWcpOwogI2VuZGlmCiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9y
KENvZGVPcmlnaW4gY29kZU9yaWdpbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0Rm9yKGNvZGVPcmlnaW4pOwotICAgIH0KLSAgICAKLSAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZUZvcihDb2RlQmxvY2sqLCBjb25zdCBDb2RlT3JpZ2luJik7Ci0g
ICAgCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9y
T3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2so
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCAwZmZjYTQz
N2RmYjY0YWE0NzczMjZlN2M0OGI4MzFlNzQzNjVjMDNhLi45NjhhYjBmZGRiNjQyMGYwNTQwNmFl
NGM5YWM4MmNiM2Y3ZDQ5ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxw
ZXJzLmgKQEAgLTY5LDYgKzY5LDEwIEBAIGNsYXNzIENDYWxsSGVscGVycyA6IHB1YmxpYyBBc3Nl
bWJseUhlbHBlcnMgewogICAgICAgICBHUFJSZWcgbV9ncHI7CiAgICAgfTsKIAorICAgIC8vIEJh
c2UgY2xhc3MgZm9yIGNvbnN0YW50IG1hdGVyaWFsaXplcnMuCisgICAgLy8gSXQgb2ZmZXJzIERl
cml2ZWRDbGFzczo6bWF0ZXJpYWxpemUgYW5kIHBva2UgZnVuY3Rpb25zLgorICAgIGNsYXNzIENv
bnN0YW50TWF0ZXJpYWxpemVyIHsgfTsKKwogICAgIC8vIFRoZSBtb3N0IGdlbmVyYWwgaGVscGVy
IGZvciBzZXR0aW5nIGFyZ3VtZW50cyB0aGF0IGZpdCBpbiBhIEdQUiwgaWYgeW91IGNhbiBjb21w
dXRlIGVhY2gKICAgICAvLyBhcmd1bWVudCB3aXRob3V0IHVzaW5nIGFueSBhcmd1bWVudCByZWdp
c3RlcnMuIFlvdSB1c3VhbGx5IHdhbnQgb25lIG9mIHRoZSBzZXR1cEFyZ3VtZW50cyooKQogICAg
IC8vIG1ldGhvZHMgYmVsb3cgaW5zdGVhZCBvZiB0aGlzLiBUaGlzIHRoaW5nIGlzIG1vc3QgdXNl
ZnVsIGlmIHlvdSBoYXZlICphIGxvdCogb2YgYXJndW1lbnRzLgpAQCAtMzY1LDcgKzM2OSwxMCBA
QCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJsaWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcG9rZUZvckFyZ3VtZW50KEFyZ1R5cGUgYXJnLCB1bnNpZ25lZCBjdXJy
ZW50R1BSQXJndW1lbnQsIHVuc2lnbmVkIGN1cnJlbnRGUFJBcmd1bWVudCwgdW5zaWduZWQgbnVt
Q3Jvc3NTb3VyY2VzLCB1bnNpZ25lZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMs
IHVuc2lnbmVkIGV4dHJhUG9rZSkKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHBva2VPZmZzZXQg
PSBjYWxjdWxhdGVQb2tlT2Zmc2V0KGN1cnJlbnRHUFJBcmd1bWVudCwgY3VycmVudEZQUkFyZ3Vt
ZW50LCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJhR1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tl
KTsKLSAgICAgICAgcG9rZShhcmcsIHBva2VPZmZzZXQpOworICAgICAgICBpZiBjb25zdGV4cHIg
KHN0ZDo6aXNfYmFzZV9vZl92PENvbnN0YW50TWF0ZXJpYWxpemVyLCBBcmdUeXBlPikKKyAgICAg
ICAgICAgIGFyZy5wb2tlKCp0aGlzLCBhZGRyZXNzRm9yUG9rZShwb2tlT2Zmc2V0KSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHBva2UoYXJnLCBwb2tlT2Zmc2V0KTsKICAgICB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgc3RhY2tBbGlnbmVkKHVuc2lnbmVkIGN1cnJlbnRHUFJBcmd1
bWVudCwgdW5zaWduZWQgY3VycmVudEZQUkFyZ3VtZW50LCB1bnNpZ25lZCBudW1Dcm9zc1NvdXJj
ZXMsIHVuc2lnbmVkIGV4dHJhR1BSQXJncywgdW5zaWduZWQgbm9uQXJnR1BScywgdW5zaWduZWQg
ZXh0cmFQb2tlKQpAQCAtNjQ2LDYgKzY1MywyNyBAQCBjbGFzcyBDQ2FsbEhlbHBlcnMgOiBwdWJs
aWMgQXNzZW1ibHlIZWxwZXJzIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNJbXBsPE9wZXJhdGlv
blR5cGU+KGFyZ1NvdXJjZVJlZ3MsIFRydXN0ZWRJbW1QdHIoYXJnLmdldCgpKSwgYXJncy4uLik7
CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3BlcmF0aW9uVHlwZSwgdW5zaWduZWQg
bnVtR1BSQXJncywgdW5zaWduZWQgbnVtR1BSU291cmNlcywgdW5zaWduZWQgbnVtRlBSQXJncywg
dW5zaWduZWQgbnVtRlBSU291cmNlcywgdW5zaWduZWQgbnVtQ3Jvc3NTb3VyY2VzLCB1bnNpZ25l
ZCBleHRyYUdQUkFyZ3MsIHVuc2lnbmVkIG5vbkFyZ0dQUnMsIHVuc2lnbmVkIGV4dHJhUG9rZSwg
dHlwZW5hbWUgQXJnLCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIEFMV0FZU19JTkxJTkUgc3RkOjpl
bmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2ZfdjxDb25zdGFudE1hdGVyaWFsaXplciwgQXJnPj4K
KyAgICBzZXR1cEFyZ3VtZW50c0ltcGwoQXJnQ29sbGVjdGlvbjxudW1HUFJBcmdzLCBudW1HUFJT
b3VyY2VzLCBudW1GUFJBcmdzLCBudW1GUFJTb3VyY2VzLCBudW1Dcm9zc1NvdXJjZXMsIGV4dHJh
R1BSQXJncywgbm9uQXJnR1BScywgZXh0cmFQb2tlPiBhcmdTb3VyY2VSZWdzLCBBcmcgYXJnLCBB
cmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Zsb2F0
aW5nX3BvaW50PENVUlJFTlRfQVJHVU1FTlRfVFlQRT46OnZhbHVlLCAiV2UgZG9uJ3Qgc3VwcG9y
dCBpbW1lZGlhdGUgZmxvYXRzL2RvdWJsZXMgaW4gc2V0dXBBcmd1bWVudHMiKTsKKyAgICAgICAg
YXV0byBudW1BcmdSZWdpc3RlcnMgPSBHUFJJbmZvOjpudW1iZXJPZkFyZ3VtZW50UmVnaXN0ZXJz
OworI2lmIE9TKFdJTkRPV1MpICYmIENQVShYODZfNjQpCisgICAgICAgIGF1dG8gY3VycmVudEFy
Z0NvdW50ID0gbnVtR1BSQXJncyArIG51bUZQUkFyZ3MgKyAoc3RkOjppc19zYW1lPFJFU1VMVF9U
WVBFLCBTbG93UGF0aFJldHVyblR5cGU+Ojp2YWx1ZSA/IDEgOiAwKTsKKyNlbHNlCisgICAgICAg
IGF1dG8gY3VycmVudEFyZ0NvdW50ID0gbnVtR1BSQXJncyArIGV4dHJhR1BSQXJnczsKKyNlbmRp
ZgorICAgICAgICBpZiAoY3VycmVudEFyZ0NvdW50IDwgbnVtQXJnUmVnaXN0ZXJzKSB7CisgICAg
ICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9uVHlwZT4oYXJnU291cmNlUmVncy5h
ZGRHUFJBcmcoKSwgYXJncy4uLik7CisgICAgICAgICAgICBhcmcubWF0ZXJpYWxpemUoKnRoaXMs
IEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3RlcihjdXJyZW50QXJnQ291bnQpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHBva2VGb3JBcmd1bWVudChhcmcsIG51
bUdQUkFyZ3MsIG51bUZQUkFyZ3MsIG51bUNyb3NzU291cmNlcywgZXh0cmFHUFJBcmdzLCBub25B
cmdHUFJzLCBleHRyYVBva2UpOworICAgICAgICBzZXR1cEFyZ3VtZW50c0ltcGw8T3BlcmF0aW9u
VHlwZT4oYXJnU291cmNlUmVncy5hZGRHUFJBcmcoKSwgYXJncy4uLik7CisgICAgfQorCiAjdW5k
ZWYgQ1VSUkVOVF9BUkdVTUVOVF9UWVBFCiAjdW5kZWYgUkVTVUxUX1RZUEUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAppbmRleCAxZWIwNWFmNDFlZjVhNWFkNTg0NGQxZjZhNGNiNmVh
YjU5MjNkN2I5Li5kMGJiNDM1MGMyMDgxYjU2N2U0OWJmYjUzZjAzYTcyZDUwYjJjZTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaApAQCAtNDIwLDEzICs0MjAsMTQgQEAgY2xhc3Mg
R1BSSW5mbyB7CiBjbGFzcyBHUFJJbmZvIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEdQUlJlZyBS
ZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlJlZ2lz
dGVycyA9IDExOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3Rl
cnMgPSAxMDsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQXJndW1lbnRS
ZWdpc3RlcnMgPSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTOwogCiAgICAgLy8gVGhlc2Ug
cmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBYODZSZWdpc3RlcnM6OmVicDsKICAgICBzdGF0aWMg
Y29uc3RleHByIEdQUlJlZyBudW1iZXJUYWdSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0Owog
ICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENlbGxNYXNrUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjb25zdGFudHNSZWdpc3Rl
ciA9IFg4NlJlZ2lzdGVyczo6cjEzOwogCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAt
NDUwLDE2ICs0NTEsMTYgQEAgY2xhc3MgR1BSSW5mbyB7CiAKICNpZiAhT1MoV0lORE9XUykKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBYODZSZWdpc3RlcnM6OnIxMjsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdpc3RlcnM6OnIxNDsKLSAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxNTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdpc3RlcnM6OnIxMzsgLy8g
Y29uc3RhbnRzUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBY
ODZSZWdpc3RlcnM6OnIxNDsgLy8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdpc3RlcnM6OnIxNTsgLy8gbm90Q2VsbE1hc2tSZWdp
c3RlcgogI2Vsc2UKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzEgPSBYODZSZWdp
c3RlcnM6OmVzaTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzIgPSBYODZSZWdp
c3RlcnM6OmVkaTsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzMgPSBYODZSZWdp
c3RlcnM6OnIxMjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdp
c3RlcnM6OnIxMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzUgPSBYODZSZWdp
c3RlcnM6OnIxNDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBYODZSZWdp
c3RlcnM6OnIxNTsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzQgPSBYODZSZWdp
c3RlcnM6OnIxMzsgLy8gY29uc3RhbnRzUmVnaXN0ZXIKKyAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyByZWdDUzUgPSBYODZSZWdpc3RlcnM6OnIxNDsgLy8gbnVtYmVyVGFnUmVnaXN0ZXIKKyAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBYODZSZWdpc3RlcnM6OnIxNTsgLy8g
bm90Q2VsbE1hc2tSZWdpc3RlcgogI2VuZGlmCiAKICAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJv
dmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4g
dmFsdWUgcmVnaXN0ZXJzLgpAQCAtNDk3LDkgKzQ5OCw5IEBAIGNsYXNzIEdQUkluZm8gewogICAg
IHsKICAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwogI2lmICFPUyhX
SU5ET1dTKQotICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVt
YmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJl
Z1Q1LCByZWdUNiwgcmVnVDcsIHJlZ0NTMCwgcmVnQ1MxLCByZWdDUzIgfTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsg
cmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnVDYsIHJlZ1Q3LCBy
ZWdDUzAsIHJlZ0NTMSB9OwogI2Vsc2UKLSAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdp
c3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwg
cmVnVDMsIHJlZ1Q0LCByZWdUNSwgcmVnQ1MwLCByZWdDUzEsIHJlZ0NTMiwgcmVnQ1MzLCByZWdD
UzQgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJl
ck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdU
NSwgcmVnQ1MwLCByZWdDUzEsIHJlZ0NTMiwgcmVnQ1MzIH07CiAjZW5kaWYKICAgICAgICAgcmV0
dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwogICAgIH0KQEAgLTYzNCw2ICs2MzUsNyBAQCBj
bGFzcyBHUFJJbmZvIHsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVSZWdp
c3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBu
dW1iZXJUYWdSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY29uc3RhbnRzUmVnaXN0ZXIgPSBBUk02NFJlZ2lz
dGVyczo6eDI2OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGRhdGFUZW1wUmVnaXN0ZXIg
PSBNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3RlcjsKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyBtZW1vcnlUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6bWVtb3J5VGVtcFJl
Z2lzdGVyOwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCkBAIC02NjAsNyArNjYyLDcgQEAg
Y2xhc3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gQVJN
NjRSZWdpc3RlcnM6OngyMzsgLy8gVXNlZCBieSBGVEwgb25seQogICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHJlZ0NTNSA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9u
bHkKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6
eDI1OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9IEFSTTY0UmVnaXN0ZXJz
Ojp4MjY7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3Rl
cnM6OngyNjsgLy8gY29uc3RhbnRzCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M4
ID0gQVJNNjRSZWdpc3RlcnM6OngyNzsgLy8gbnVtYmVyVGFnCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1M5ID0gQVJNNjRSZWdpc3RlcnM6OngyODsgLy8gbm90Q2VsbE1hc2sKICAg
ICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1
cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgpAQCAtNzc3LDcgKzc3OSw3
IEBAIGNsYXNzIEdQUkluZm8gewogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJldHVyblZh
bHVlR1BSMiA9IHJlZ1QxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vblByZXNlcnZl
ZE5vblJldHVybkdQUiA9IHJlZ1QyOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NT
MCA9IE1JUFNSZWdpc3RlcnM6OnMwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NT
MSA9IE1JUFNSZWdpc3RlcnM6OnMxOworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NT
MSA9IE1JUFNSZWdpc3RlcnM6OnMxOyAvLyBjb25zdGFudHMKIAogICAgIHN0YXRpYyBHUFJSZWcg
dG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKICAgICB7CkBAIC04MzIsNiArODM0LDcgQEAgY2xh
c3MgR1BSSW5mbyB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0
ZXIgPSBSSVNDVjY0UmVnaXN0ZXJzOjpmcDsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBu
dW1iZXJUYWdSZWdpc3RlciA9IFJJU0NWNjRSZWdpc3RlcnM6OngyNTsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBub3RDZWxsTWFza1JlZ2lzdGVyID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI2
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGNvbnN0YW50c1JlZ2lzdGVyID0gUklTQ1Y2
NFJlZ2lzdGVyczo6eDI0OwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDAgPSBS
SVNDVjY0UmVnaXN0ZXJzOjp4MTA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnVDEg
PSBSSVNDVjY0UmVnaXN0ZXJzOjp4MTE7CkBAIC04NTQsNyArODU3LDcgQEAgY2xhc3MgR1BSSW5m
byB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M0ID0gUklTQ1Y2NFJlZ2lzdGVy
czo6eDIxOwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IFJJU0NWNjRSZWdp
c3RlcnM6OngyMjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBSSVNDVjY0
UmVnaXN0ZXJzOjp4MjM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gUklT
Q1Y2NFJlZ2lzdGVyczo6eDI0OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNyA9
IFJJU0NWNjRSZWdpc3RlcnM6OngyNDsgLy8gY29uc3RhbnRzCiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBHUFJSZWcgcmVnQ1M4ID0gUklTQ1Y2NFJlZ2lzdGVyczo6eDI1OyAvLyBudW1iZXJUYWcKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzkgPSBSSVNDVjY0UmVnaXN0ZXJzOjp4MjY7
IC8vIG5vdENlbGxNYXNrCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1MxMCA9IFJJ
U0NWNjRSZWdpc3RlcnM6OngyNzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA3MTEy
NzZlNWU2ZDdmOWM5Yjk1ZDU4Zjc5MTA2NjAzMjc4NTFmNzU0Li4wODZkYTk2OTQyOGIwOWQ4NDk4
YzY2NTk2NGU2ZjU0Yzk5MGNhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0y
NTEsNyArMjUxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBpZiAob3Bjb2RlSUQgIT0gb3BfY2F0Y2gpIHsKICAgICAgICAgICAgIGxvYWRQdHIoYWRkcmVz
c0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spLCByZWdUMCk7CiAgICAgICAgICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZNZXRhZGF0YVRhYmxlKCkpLCBy
ZWdUMSk7Ci0gICAgICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENvZGVCbG9jazo6b2Zm
c2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHJlZ1QyKTsKKyAgICAgICAgICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEoKSksIHJlZ1QyKTsKIAogICAg
ICAgICAgICAgYXV0byBtZXRhZGF0YU9LID0gYnJhbmNoUHRyKEVxdWFsLCByZWdUMSwgc19tZXRh
ZGF0YUdQUik7CiAgICAgICAgICAgICBicmVha3BvaW50KCk7CkBAIC02NzUsNyArNjc1LDcgQEAg
dm9pZCBKSVQ6OmVtaXRNYXRlcmlhbGl6ZU1ldGFkYXRhQW5kQ29uc3RhbnRQb29sUmVnaXN0ZXJz
KCkKIHsKICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSwg
cmVnVDApOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZk1l
dGFkYXRhVGFibGUoKSksIHNfbWV0YWRhdGFHUFIpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdU
MCwgQ29kZUJsb2NrOjpvZmZzZXRPZkJhc2VsaW5lSklURGF0YSgpKSwgc19jb25zdGFudHNHUFIp
OworICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkpJVERhdGEo
KSksIHNfY29uc3RhbnRzR1BSKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRTYXZlQ2FsbGVlU2F2ZXMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNTFmYzE5Nzg3
OTc3YTUzZjA2NTE1ODgxOTM2YzI4YzkzYmQwOTZhMS4uOGIyNmZhMTA4NWQ5ZGEyMWVmOTFmNjk4
MDFjNWU3NDBmZTdiMjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xMDE1LDcgKzEwMTUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gU28gd2UgcmVwbGVuaXNo
IGl0IGhlcmUuCiAgICAgewogICAgICAgICBsb2FkUHRyKGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSwgcmVnVDApOwotICAgICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZCYXNlbGluZUpJVERhdGEoKSksIHNfY29uc3RhbnRzR1BSKTsKKyAg
ICAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURGF0YSgp
KSwgc19jb25zdGFudHNHUFIpOwogICAgIH0KIAogICAgIGNhbGxPcGVyYXRpb25Ob0V4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvblJldHJpZXZlQW5kQ2xlYXJFeGNlcHRpb25JZkNhdGNoYWJsZSwgVHJ1
c3RlZEltbVB0cigmdm0oKSkpOwpAQCAtMTAzNiw2ICsxMDM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfY2F0Y2goY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogCiAgICAg
Y2FsbE9wZXJhdGlvbk5vRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNo
QW5kVmFsdWVQcm9maWxlLCBUcnVzdGVkSW1tUHRyKCZ2bSgpKSwgbV9ieXRlY29kZUluZGV4LmFz
Qml0cygpKTsKICAgICBhdXRvIHNraXBPU1JFbnRyeSA9IGJyYW5jaFRlc3RQdHIoWmVybywgcmV0
dXJuVmFsdWVHUFIpOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZXR1cm5WYWx1ZUdQ
UjIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CiAgICAgZW1pdFJlc3RvcmVDYWxsZWVTYXZl
cygpOwogICAgIGZhckp1bXAocmV0dXJuVmFsdWVHUFIsIEV4Y2VwdGlvbkhhbmRsZXJQdHJUYWcp
OwogICAgIHNraXBPU1JFbnRyeS5saW5rKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggZWIzODM3MGNiOTE2Mjg4NWExOTc3ZjE3YmYzOWI3
ZjVkNzBlOTQ4Yy4uOTJkNDYwZjY2YzUxYzgxYTgwYWEwYWI1ZjU2MTFhOTQwYmYwZGZhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0yMDg0LDcg
KzIwODQsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uT3B0aW1pemUsIFNs
b3dQYXRoUmV0dXJuVHlwZSwgKFZNKiB2bVBvaW50ZXIsCiAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dChudWxscHRyLCBudWxscHRyKTsKIH0KIAotSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJh
dGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChWTSogdm1Qb2lu
dGVyLCB1aW50MzJfdCBieXRlY29kZUluZGV4Qml0cykpCitKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBTbG93UGF0aFJl
dHVyblR5cGUsIChWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlY29kZUluZGV4Qml0cykpCiB7
CiAgICAgVk0mIHZtID0gKnZtUG9pbnRlcjsKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IERF
Q0xBUkVfQ0FMTF9GUkFNRSh2bSk7CkBAIC0yMDk0LDEzICsyMDk0LDEzIEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVByb2ZpbGUs
IGNoYXIqLCAoVk0qCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpOwogICAgIENvZGVCbG9jayogb3B0aW1pemVkUmVwbGFjZW1lbnQgPSBjb2RlQmxvY2st
PnJlcGxhY2VtZW50KCk7CiAgICAgaWYgKFVOTElLRUxZKCFvcHRpbWl6ZWRSZXBsYWNlbWVudCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KG51
bGxwdHIsIG51bGxwdHIpOwogCiAgICAgc3dpdGNoIChvcHRpbWl6ZWRSZXBsYWNlbWVudC0+aml0
VHlwZSgpKSB7CiAgICAgY2FzZSBKSVRUeXBlOjpERkdKSVQ6CiAgICAgY2FzZSBKSVRUeXBlOjpG
VExKSVQ6IHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEV4Y2VwdGlvbkhhbmRsZXJQ
dHJUYWc+IGVudHJ5ID0gREZHOjpwcmVwYXJlQ2F0Y2hPU1JFbnRyeSh2bSwgY2FsbEZyYW1lLCBj
b2RlQmxvY2ssIG9wdGltaXplZFJlcGxhY2VtZW50LCBieXRlY29kZUluZGV4KTsKLSAgICAgICAg
cmV0dXJuIGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpOworICAgICAgICByZXR1cm4g
ZW5jb2RlUmVzdWx0KGVudHJ5LmV4ZWN1dGFibGVBZGRyZXNzPGNoYXIqPigpLCBvcHRpbWl6ZWRS
ZXBsYWNlbWVudCk7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtMjEx
Myw3ICsyMTEzLDcgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblRyeU9TUkVu
dGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZSwgY2hhciosIChWTSoKICAgICAgICAgcHJvZmlsZS5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT51bmNoZWNrZWRSKHByb2Zp
bGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogCi0gICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IGI5ZTgzMGNh
ZDNiM2Q1ZjNhNDMyMDMzOTJiNGQ3N2E2YzA5MTQ5OGIuLmQxMTkzMmFhN2RmMDEyOGYwOGUzYjAx
YmMxZTgyMGQ5NmYwOTUzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0
aW9ucy5oCkBAIC0yNjAsNyArMjYwLDcgQEAgSlNDX0RFQ0xBUkVfSklUX09QRVJBVElPTihvcGVy
YXRpb25UaHJvdywgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgRW5jb2RlZEpTVmFsdWUKIEpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRGVidWcsIHZvaWQsIChWTSosIGludDMyX3Qp
KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKIEpTQ19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0
aW9uT3B0aW1pemUsIFNsb3dQYXRoUmV0dXJuVHlwZSwgKFZNKiwgdWludDMyX3QpKTsKLUpTQ19E
RUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQ
cm9maWxlLCBjaGFyKiwgKFZNKiwgdWludDMyX3QpKTsKK0pTQ19ERUNMQVJFX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlLCBTbG93UGF0aFJl
dHVyblR5cGUsIChWTSosIHVpbnQzMl90KSk7CiAjZW5kaWYKIEpTQ19ERUNMQVJFX0pJVF9PUEVS
QVRJT04ob3BlcmF0aW9uUHV0R2V0dGVyQnlJZCwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KiwgSlND
ZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlvbnMsIEpTQ2VsbCopKTsKIEpT
Q19ERUNMQVJFX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0U2V0dGVyQnlJZCwgdm9pZCwgKEpT
R2xvYmFsT2JqZWN0KiwgSlNDZWxsKiwgVW5pcXVlZFN0cmluZ0ltcGwqLCBpbnQzMl90IG9wdGlv
bnMsIEpTQ2VsbCopKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVn
aXN0ZXJTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAK
aW5kZXggYjJlZmY2NTI0YzRiMjZlYzY5ODViMjk1ZGRmNDFhNWI0NzUyMTQ0Mi4uMWMzMTI3NTRk
MGMzOWEyMWFiNjAwZDc2ZWE1Yzk1ZDU5ZWNkYzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZWdpc3RlclNldC5jcHAKQEAgLTIwMCwxNiArMjAwLDE4IEBAIFJlZ2lzdGVyU2V0IFJl
Z2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycygpCiAjZWxpZiBDUFUo
WDg2XzY0KQogI2lmICFPUyhXSU5ET1dTKQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mx
KTsKLSAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CisgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpyZWdDUzIgPT0gR1BSSW5mbzo6Y29uc3RhbnRzUmVnaXN0ZXIpOwogICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
ICAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpub3RDZWxsTWFz
a1JlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CiAgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsK
ICNlbHNlCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M0KTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBH
UFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CiAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpy
ZWdDUzUgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIHN0YXRpY19hc3NlcnQo
R1BSSW5mbzo6cmVnQ1M2ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
NSk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwogI2VuZGlmCkBAIC0yMTgsOSAr
MjIwLDEwIEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2
ZVJlZ2lzdGVycygpCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwogI2VsaWYgQ1BV
KEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7
Ci0gICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOworICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1M3ID09IEdQUkluZm86OmNvbnN0YW50c1JlZ2lzdGVyKTsKICAgICBzdGF0aWNf
YXNzZXJ0KEdQUkluZm86OnJlZ0NTOCA9PSBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAj
ZWxzZQpAQCAtMjM2LDE3ICsyMzksMjAgQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmRmZ0Nh
bGxlZVNhdmVSZWdpc3RlcnMoKQogI2VsaWYgQ1BVKFg4Nl82NCkKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwotICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKICNpZiAhT1MoV0lORE9XUykKKyAgICBzdGF0aWNf
YXNzZXJ0KEdQUkluZm86OnJlZ0NTMiA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CiAg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIpOwogICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMyk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzQpOwogI2Vsc2UKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMik7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwotICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpjb25zdGFu
dHNSZWdpc3Rlcik7CiAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzUgPT0gR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M2
ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M0KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNSk7CiAgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzYpOwogI2VuZGlmCkBAIC0yNTQsOCArMjYwLDEwIEBAIFJlZ2lz
dGVyU2V0IFJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKCkKICAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwog
I2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUklu
Zm86OnJlZ0NTNyA9PSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3Rlcik7CiAgICAgc3RhdGljX2Fz
c2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpOworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTOCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzkpOwogI2Vs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAppbmRleCBjMDMzM2QzNDJi
MDliMDMwNDAxMGY0NDYyODQzZmMwODk0ODI5ZWU0Li4xNTExNWVlMDdkMjRmMTRiZWU2ZGJhZmU2
MjI2MmM2ODAyNDUwMjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CkBAIC0zOTUsMTMgKzM5NSwxMyBAQCBzdHJ1Y3QgUmVnaXN0ZXJzIHsKIAogI2lmIENQVShYODZf
NjQpICYmICFPUyhXSU5ET1dTKQogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG1ldGFkYXRh
VGFibGVHUFIgPSBHUFJJbmZvOjpyZWdDUzE7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcg
cGJHUFIgPSBHUFJJbmZvOjpyZWdDUzI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcGJH
UFIgPSBHUFJJbmZvOjpjb25zdGFudHNSZWdpc3RlcjsKICNlbGlmIENQVShYODZfNjQpICYmIE9T
KFdJTkRPV1MpCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQUiA9
IEdQUkluZm86OnJlZ0NTMzsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQ
UkluZm86OnJlZ0NTNDsKKyAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUklu
Zm86OmNvbnN0YW50c1JlZ2lzdGVyOwogI2VsaWYgQ1BVKEFSTTY0KSB8fCBDUFUoUklTQ1Y2NCkK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZXRhZGF0YVRhYmxlR1BSID0gR1BSSW5mbzo6
cmVnQ1M2OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6cmVn
Q1M3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHBiR1BSID0gR1BSSW5mbzo6Y29uc3Rh
bnRzUmVnaXN0ZXI7CiAjZWxpZiBDUFUoTUlQUykgfHwgQ1BVKEFSTV9USFVNQjIpCiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBHUFJSZWcgbWV0YWRhdGFUYWJsZUdQUiA9IEdQUkluZm86OnJlZ0NTMDsK
ICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBwYkdQUiA9IEdQUkluZm86OnJlZ0NTMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCA1ZDc5Y2ZjODkwMjBiMDVhNGUxNmM4N2NjZTBlNTE5MzFmMmE4MzdkLi5mYjdmNjgw
MjY5MDM3ZGY2ZjQxMGQ5OTQyMzIwMmEwOTZhNWE2Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0yNTcwLDcgKzI1
NzAsNyBAQCBpZiBKSVQKICAgICBtYWNybyBsb2FkQmFzZWxpbmVKSVRDb25zdGFudFBvb2woKQog
ICAgICAgICAjIEJhc2VsaW5lIHVzZXMgTExJbnQncyBQQiByZWdpc3RlciBmb3IgaXRzIEpJVCBj
b25zdGFudCBwb29sLgogICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKLSAgICAgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2Jhc2VsaW5lSklURGF0YVtQQl0sIFBCCisgICAgICAgIGxvYWRw
IENvZGVCbG9jazo6bV9qaXREYXRhW1BCXSwgUEIKICAgICBlbmQKIAogICAgIG1hY3JvIHNldHVw
UmV0dXJuVG9CYXNlbGluZUFmdGVyQ2hlY2twb2ludEV4aXRJZk5lZWRlZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmYmUyYTIxZGMw
NzU5MTY2ZGQ1YzBlMzAzZGQ2OGNlY2E4OWUwNWQ4Li41YWM2MjkzZDBmNzI2YWE1MThhMmIxZTRh
M2EzMTUyNjFmOTFmMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTkyMSw2ICs5MjEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBSZWdFeHBHbG9iYWxEYXRh
JiByZWdFeHBHbG9iYWxEYXRhKCkgeyByZXR1cm4gbV9yZWdFeHBHbG9iYWxEYXRhOyB9CiAgICAg
c3RhdGljIHB0cmRpZmZfdCByZWdFeHBHbG9iYWxEYXRhT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX3JlZ0V4cEdsb2JhbERhdGEpOyB9CiAKKyAgICBz
dGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFsVGhpcygpIHsgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxUaGlzKTsgfQogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZWTSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwg
bV92bSk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xvYmFsTGV4aWNhbEVudmly
b25tZW50KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBtX2dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCk7IH0KICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mR2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihKU0dsb2Jh
bE9iamVjdCwgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>