<?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>204149</bug_id>
          
          <creation_ts>2019-11-13 02:26:05 -0800</creation_ts>
          <short_desc>[JSC] BlockDirectory&apos;s bits should be compact</short_desc>
          <delta_ts>2019-11-14 01:38:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1589805</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 02:26:05 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589806</commentid>
    <comment_count>1</comment_count>
      <attachid>383442</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 02:30:18 -0800</bug_when>
    <thetext>Created attachment 383442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589811</commentid>
    <comment_count>2</comment_count>
      <attachid>383443</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 02:55:36 -0800</bug_when>
    <thetext>Created attachment 383443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589813</commentid>
    <comment_count>3</comment_count>
      <attachid>383445</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 03:03:25 -0800</bug_when>
    <thetext>Created attachment 383445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589815</commentid>
    <comment_count>4</comment_count>
      <attachid>383446</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 03:15:58 -0800</bug_when>
    <thetext>Created attachment 383446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589817</commentid>
    <comment_count>5</comment_count>
      <attachid>383447</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 03:23:19 -0800</bug_when>
    <thetext>Created attachment 383447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589902</commentid>
    <comment_count>6</comment_count>
      <attachid>383447</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-11-13 09:39:29 -0800</bug_when>
    <thetext>Comment on attachment 383447
Patch

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

&gt; Source/JavaScriptCore/heap/BlockDirectory.cpp:351
&gt; +        [&amp;] (auto, const char* name) {

Are you intentionally passing by value here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589989</commentid>
    <comment_count>7</comment_count>
      <attachid>383447</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 12:35:08 -0800</bug_when>
    <thetext>Comment on attachment 383447
Patch

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

&gt;&gt; Source/JavaScriptCore/heap/BlockDirectory.cpp:351
&gt;&gt; +        [&amp;] (auto, const char* name) {
&gt; 
&gt; Are you intentionally passing by value here?

Yes, this should be BlockDirectoryBitVectorRef. But I&apos;m planning to change this to BlockDirectoryBitVectorRef to make it explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589998</commentid>
    <comment_count>8</comment_count>
      <attachid>383447</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 12:51:06 -0800</bug_when>
    <thetext>Comment on attachment 383447
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/heap/BlockDirectory.cpp:351
&gt;&gt;&gt; +        [&amp;] (auto, const char* name) {
&gt;&gt; 
&gt;&gt; Are you intentionally passing by value here?
&gt; 
&gt; Yes, this should be BlockDirectoryBitVectorRef. But I&apos;m planning to change this to BlockDirectoryBitVectorRef to make it explicit.

Ah, we cannot. Each bitvector has different type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590032</commentid>
    <comment_count>9</comment_count>
      <attachid>383492</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 13:53:31 -0800</bug_when>
    <thetext>Created attachment 383492
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590040</commentid>
    <comment_count>10</comment_count>
      <attachid>383495</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 14:12:05 -0800</bug_when>
    <thetext>Created attachment 383495
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590052</commentid>
    <comment_count>11</comment_count>
      <attachid>383500</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 14:52:40 -0800</bug_when>
    <thetext>Created attachment 383500
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590084</commentid>
    <comment_count>12</comment_count>
      <attachid>383507</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 16:02:13 -0800</bug_when>
    <thetext>Created attachment 383507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590104</commentid>
    <comment_count>13</comment_count>
      <attachid>383514</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 16:31:11 -0800</bug_when>
    <thetext>Created attachment 383514
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590113</commentid>
    <comment_count>14</comment_count>
      <attachid>383518</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 16:49:36 -0800</bug_when>
    <thetext>Created attachment 383518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590115</commentid>
    <comment_count>15</comment_count>
      <attachid>383519</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 16:56:12 -0800</bug_when>
    <thetext>Created attachment 383519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590118</commentid>
    <comment_count>16</comment_count>
      <attachid>383520</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 17:03:06 -0800</bug_when>
    <thetext>Created attachment 383520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590123</commentid>
    <comment_count>17</comment_count>
      <attachid>383521</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 17:14:01 -0800</bug_when>
    <thetext>Created attachment 383521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590140</commentid>
    <comment_count>18</comment_count>
      <attachid>383528</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 17:49:43 -0800</bug_when>
    <thetext>Created attachment 383528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590151</commentid>
    <comment_count>19</comment_count>
      <attachid>383532</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 18:01:42 -0800</bug_when>
    <thetext>Created attachment 383532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590166</commentid>
    <comment_count>20</comment_count>
      <attachid>383532</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-11-13 18:36:59 -0800</bug_when>
    <thetext>Comment on attachment 383532
Patch

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

r=me

&gt; Source/JavaScriptCore/heap/BlockDirectoryBits.h:156
&gt; +            for (unsigned i = BlockDirectoryBitVectorView&lt;kind&gt;::arrayLength(); i--;)

Is there a reason for the previous function using Base::arrayLength() while this one is using BlockDirectoryBitVectorView&lt;kind&gt;::arrayLength() ?

&gt; Source/JavaScriptCore/heap/BlockDirectoryBits.h:191
&gt; +    BlockDirectoryBitVectorRef&lt;Kind::capitalBitName&gt; lowerBitName() \

I don&apos;t think this function is useful as long as you have the one above.
Either delete it, or make it return a const BlockDirectoryBitVectorRef&lt;Kind::capitalBitName&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590169</commentid>
    <comment_count>21</comment_count>
      <attachid>383532</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 19:00:42 -0800</bug_when>
    <thetext>Comment on attachment 383532
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/heap/BlockDirectoryBits.h:156
&gt;&gt; +            for (unsigned i = BlockDirectoryBitVectorView&lt;kind&gt;::arrayLength(); i--;)
&gt; 
&gt; Is there a reason for the previous function using Base::arrayLength() while this one is using BlockDirectoryBitVectorView&lt;kind&gt;::arrayLength() ?

No reason. Thanks, fixed.

&gt;&gt; Source/JavaScriptCore/heap/BlockDirectoryBits.h:191
&gt;&gt; +    BlockDirectoryBitVectorRef&lt;Kind::capitalBitName&gt; lowerBitName() \
&gt; 
&gt; I don&apos;t think this function is useful as long as you have the one above.
&gt; Either delete it, or make it return a const BlockDirectoryBitVectorRef&lt;Kind::capitalBitName&gt;

Yeah, removing View version, since Ref one is used to modify the bits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590172</commentid>
    <comment_count>22</comment_count>
      <attachid>383532</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-13 19:08:07 -0800</bug_when>
    <thetext>Comment on attachment 383532
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/heap/BlockDirectoryBits.h:191
&gt;&gt;&gt; +    BlockDirectoryBitVectorRef&lt;Kind::capitalBitName&gt; lowerBitName() \
&gt;&gt; 
&gt;&gt; I don&apos;t think this function is useful as long as you have the one above.
&gt;&gt; Either delete it, or make it return a const BlockDirectoryBitVectorRef&lt;Kind::capitalBitName&gt;
&gt; 
&gt; Yeah, removing View version, since Ref one is used to modify the bits.

I tried removing this but it brings much complexity like implementing `bool operator[] const`. For now, I&apos;ll just keep it since it just works anyway :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590216</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-11-14 01:37:16 -0800</bug_when>
    <thetext>Committed r252452: &lt;https://trac.webkit.org/changeset/252452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590218</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-14 01:38:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/57184145&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383442</attachid>
            <date>2019-11-13 02:30:18 -0800</date>
            <delta_ts>2019-11-13 02:55:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113023017.patch</filename>
            <type>text/plain</type>
            <size>23504</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NTk5ZDI2YjE3NGNjMTM1NTAyZGI0ZDk1OWM1YTZlN2IxNjFkNDA5Li5lODJiOGE0MmUwYTE5ZmZm
MzA4MjhhZjU5MGQzMDE1MzkzN2UxMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NSBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OnByZXBhcmVGb3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6
OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmVuZE1hcmtpbmcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNo
b3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeTo6ZmluZEJsb2NrVG9Td2VlcCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0
b3J5Ojpzd2VlcCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzaHJpbmspOgorICAg
ICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0KToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9ja1NvdXJjZSk6CisgICAgICAg
ICogaGVhcC9CbG9ja0RpcmVjdG9yeS5oOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNo
Qml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5
Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgorICAg
ICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29y
ZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6
OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6
OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5
Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxsKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnlCaXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpyZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdt
ZW50KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tE
aXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2NrKToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxT
ZXQuY3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2Vk
QmxvY2tTb3VyY2UpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldElubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwpOgorCiAyMDE5LTExLTEyICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gUHV0IG1v
cmUgdGhpbmdzIGluIElzb1N1YnNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggZGNlYjNmYzA5OTA3MmFjMzY2MTZlMTYzNjk2NmI1M2JiNTM3NWJjMi4uYjZmMGFlZDMw
ZTI0ZDNhZjVlM2RhYTFlOTI3MjVlNDJlZTE0M2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtNTY5LDYgKzU2OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRF
X0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKICAgICBoZWFw
L0FsbG9jYXRvckZvck1vZGUuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnkuaAorICAgIGhlYXAv
QmxvY2tEaXJlY3RvcnlCaXRzLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCiAg
ICAgaGVhcC9DZWxsQXR0cmlidXRlcy5oCiAgICAgaGVhcC9DZWxsQ29udGFpbmVyLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAppbmRleCA3ZWVlNGE4
NzQ2YjZiZDE4ODUyYTdhYjYyODc0YmJhZjU3YWJlMjg5Li5kYzQyYjUzZWVjMzlhNjc3ODM1OTEz
NzU2MmI2YzNiZDViMThmZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tEaXJlY3RvcnkuY3BwCkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgQmxvY2tEaXJlY3Rvcnk6Omlz
UGFnZWRPdXQoTW9ub3RvbmljVGltZSBkZWFkbGluZSkKIAogTWFya2VkQmxvY2s6OkhhbmRsZSog
QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiB7Ci0gICAgbV9lbXB0eUN1
cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBtX2VtcHR5
Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKICAg
ICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsKQEAgLTg1LDcgKzg1
LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2Nr
VG9TdGVhbCgpCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2Nr
Rm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYgYWxsb2NhdG9yKQogewogICAgIGZvciAoOzsp
IHsKLSAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRl
QnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJz
b3IsIHRydWUpOworICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yID0gKG1fYml0
cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgfCBtX2JpdHMuZW1wdHkoKSkuZmluZEJpdChhbGxv
Y2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKICAgICAgICAgaWYgKGFsbG9jYXRvci5t
X2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIApAQCAtMTE4LDIxICsxMTgsMTIgQEAgdm9pZCBCbG9ja0RpcmVj
dG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgICAgIHNpemVf
dCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CiAgICAgICAgIG1fYmxvY2tzLmFw
cGVuZChibG9jayk7CiAgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9sZENhcGFj
aXR5KSB7Ci0gICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAgICAgICAgICAgICAgIE5v
TG9ja2luZ05lY2Vzc2FyeSwKLSAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZl
Y3RvcikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgdmVjdG9y
Lm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFTU0VSVChtX2JpdHMubnVtQml0cygpID09IG9sZENhcGFjaXR5
KTsKICAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2FwYWNpdHkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2JpdHZlY3Rv
ckxvY2spOwogICAgICAgICAgICAgc3Vic3BhY2UoKS0+ZGlkUmVzaXplQml0cyhtX2Jsb2Nrcy5j
YXBhY2l0eSgpKTsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCi0gICAgICAgICAgICAg
ICAgbG9ja2VyLAotICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7
Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBtX2JpdHMucmVzaXplKG1fYmxvY2tz
LmNhcGFjaXR5KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW5kZXggPSBt
X2ZyZWVCbG9ja0luZGljZXMudGFrZUxhc3QoKTsKQEAgLTE5Miw3ICsxODMsNyBAQCB2b2lkIEJs
b2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiAgICAgbV91bnN3ZXB0Q3Vyc29y
ID0gMDsKICAgICBtX2VtcHR5Q3Vyc29yID0gMDsKICAgICAKLSAgICBtX2VkZW4uY2xlYXJBbGwo
KTsKKyAgICBtX2JpdHMuZWRlbigpLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0
aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRo
aXMgd29yayBhZ2Fpbi4KQEAgLTIzNyw4ICsyMjgsOCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpi
ZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCiAgICAgLy8gTWFyayBiaXRzIGFyZSBzdGlj
a3kgYW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0aGVz
ZSBkdXJpbmcgZnVsbAogICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhl
IGxhc3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25nCiAg
ICAgLy8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCi0gICAgbV9tYXJraW5nTm90RW1wdHkuY2xl
YXJBbGwoKTsKLSAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1h
cmtpbmdOb3RFbXB0eSgpLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtpbmdSZXRpcmVkKCku
Y2xlYXJBbGwoKTsKIH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCkBAIC0y
NDksOCArMjQwLDggQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAgICAgLy8g
a25vdyB3aGF0IGtpbmQgb2YgY29sbGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxy
ZWFkeSBlbmNvZGVkIGluIHRoZSBtX21hcmtpbmdYWVoKICAgICAvLyB2ZWN0b3JzLgogICAgIAot
ICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7Ci0gICAgbV9jYW5BbGxv
Y2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5n
UmV0aXJlZDsKKyAgICBtX2JpdHMuZW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiB+bV9iaXRzLm1h
cmtpbmdOb3RFbXB0eSgpOworICAgIG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgPSBt
X2JpdHMubGl2ZSgpICYgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgfm1fYml0cy5tYXJraW5n
UmV0aXJlZCgpOwogCiAgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgewogICAgICAgICAvLyBU
aGVyZSBhcmUgc29tZSBibG9ja3MgdGhhdCB3ZSBkaWRuJ3QgYWxsb2NhdGUgb3V0IG9mIGluIHRo
ZSBsYXN0IGN5Y2xlLCBidXQgd2Ugc3dlcHQgdGhlbS4gVGhpcwpAQCAtMjU4LDcgKzI0OSw3IEBA
IHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogICAgICAgICAvLyBkZXN0cnVjdG9y
cyBhZ2Fpbi4gVGhhdCdzIGZpbmUgYmVjYXVzZSBvZiB6YXBwaW5nLiBUaGUgb25seSB0aW1lIHdo
ZW4gd2UgY2Fubm90IGZvcmdldCBpcyB3aGVuCiAgICAgICAgIC8vIHdlIGp1c3QgYWxsb2NhdGUg
YSBibG9jayBvciB3aGVuIHdlIG1vdmUgYSBibG9jayBmcm9tIG9uZSBzaXplIGNsYXNzIHRvIGFu
b3RoZXIuIFRoYXQgZG9lc24ndAogICAgICAgICAvLyBoYXBwZW4gaGVyZS4KLSAgICAgICAgbV9k
ZXN0cnVjdGlibGUgPSBtX2xpdmU7CisgICAgICAgIG1fYml0cy5kZXN0cnVjdGlibGUoKSA9IG1f
Yml0cy5saXZlKCk7CiAgICAgfQogICAgIAogICAgIGlmIChmYWxzZSkgewpAQCAtMjY5LDE3ICsy
NjAsMTcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAKIHZvaWQgQmxvY2tE
aXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKIHsKLSAgICBtX3Vu
c3dlcHQgfD0gbV9lZGVuOworICAgIG1fYml0cy51bnN3ZXB0KCkgfD0gbV9iaXRzLmVkZW4oKTsK
IH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rp
b24oKQogewotICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKKyAgICBtX2JpdHMudW5zd2VwdCgpID0g
bV9iaXRzLmxpdmUoKTsKIH0KIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6
OmZpbmRCbG9ja1RvU3dlZXAoKQogewotICAgIG1fdW5zd2VwdEN1cnNvciA9IG1fdW5zd2VwdC5m
aW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CisgICAgbV91bnN3ZXB0Q3Vyc29yID0gbV9i
aXRzLnVuc3dlcHQoKS5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CiAgICAgaWYgKG1f
dW5zd2VwdEN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX3Vuc3dlcHRDdXJzb3JdOwpAQCAtMjg3LDcgKzI3OCw3
IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVw
KCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogewotICAgIG1fdW5zd2VwdC5mb3JF
YWNoU2V0Qml0KAorICAgIG1fYml0cy51bnN3ZXB0KCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAg
WyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrID0gbV9ibG9ja3NbaW5kZXhdOwogICAgICAgICAgICAgYmxvY2stPnN3ZWVwKG51bGxwdHIp
OwpAQCAtMjk2LDcgKzI4Nyw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIAogdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKCkKIHsKLSAgICAobV9lbXB0eSAmIH5tX2Rlc3RydWN0
aWJsZSkuZm9yRWFjaFNldEJpdCgKKyAgICAobV9iaXRzLmVtcHR5KCkgJiB+bV9iaXRzLmRlc3Ry
dWN0aWJsZSgpKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewog
ICAgICAgICAgICAgbWFya2VkU3BhY2UoKS5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsKICAg
ICAgICAgfSk7CkBAIC0zMDcsNyArMjk4LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YXNzZXJ0
Tm9VbnN3ZXB0KCkKICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgaWYgKG1fdW5zd2VwdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fYml0cy51bnN3ZXB0
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZGF0YUxvZygiQXNzZXJ0
aW9uIGZhaWxlZDogdW5zd2VwdCBub3QgZW1wdHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKQEAgLTMy
OSw3ICszMjAsNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4g
QmxvY2tEaXJlY3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9jawogICAgICAgICAgICAgaWYgKG1f
ZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVj
dG9yeS5tX21hcmtpbmdOb3RFbXB0eS5maW5kQml0KG1faW5kZXgsIHRydWUpOworICAgICAgICAg
ICAgbV9pbmRleCA9IG1fZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5maW5kQml0
KG1faW5kZXgsIHRydWUpOwogICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3Rvcnku
bV9ibG9ja3Muc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9C
bG9ja0RpcmVjdG9yeS5oCmluZGV4IGE3YmNhYTZiOWViZDRiYWQ2M2Q3ZTc4MTEwOTE4ZTNlNDM2
Mzg3ZDEuLjg2Yzc4ZWRiYWU4MWRmMjJhNDE5ZTcyN2E2OWRiZGM5OThiMjM4MTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCIKKyNp
bmNsdWRlICJCbG9ja0RpcmVjdG9yeUJpdHMuaCIKICNpbmNsdWRlICJDZWxsQXR0cmlidXRlcy5o
IgogI2luY2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxvY2F0b3IuaCIKQEAg
LTQ0LDE5ICs0NSw2IEBAIGNsYXNzIElzb0NlbGxTZXQ7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotI2RlZmluZSBGT1JfRUFDSF9CTE9DS19ESVJF
Q1RPUllfQklUKG1hY3JvKSBcCi0gICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBi
bG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKLSAgICBtYWNybyhlbXB0
eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmpl
Y3RzLiAqLyBcCi0gICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCi0gICAgbWFjcm8o
Y2FuQWxsb2NhdGVCdXROb3RFbXB0eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNl
dCBvZiBhbGwgYmxvY2tzIGFyZSBuZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBt
b3JlIHRoYW4gbWluTWFya2VkQmxvY2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAotICAgIG1hY3Jv
KGRlc3RydWN0aWJsZSwgRGVzdHJ1Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhh
dCBtYXkgaGF2ZSBkZXN0cnVjdG9ycyB0byBydW4uICovXAotICAgIG1hY3JvKGVkZW4sIEVkZW4p
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhl
IGxhc3QgR0MuICovXAotICAgIG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVy
LiAqL1wKLSAgICBcCi0gICAgLyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAq
L1wKLSAgICBtYWNybyhtYXJraW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNl
dCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBlbXB0eS4gKi8gXAotICAgIG1hY3JvKG1hcmtp
bmdSZXRpcmVkLCBNYXJraW5nUmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQg
YXJlIHJldGlyZWQuICovCi0KIC8vIEZJWE1FOiBXZSBkZWZpbmVkIGNhbkFsbG9jYXRlQnV0Tm90
RW1wdHkgYW5kIGVtcHR5IHRvIGJlIGV4Y2x1c2l2ZToKIC8vCiAvLyAgICAgY2FuQWxsb2NhdGVC
dXROb3RFbXB0eSAmIGVtcHR5ID09IDAKQEAgLTExNSw5ICsxMDMsOSBAQCBjbGFzcyBCbG9ja0Rp
cmVjdG9yeSB7CiAgICAgTG9jayYgYml0dmVjdG9yTG9jaygpIHsgcmV0dXJuIG1fYml0dmVjdG9y
TG9jazsgfQogCiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxvd2VyQml0
TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCi0gICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFt
ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV8g
IyMgbG93ZXJCaXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFt
ZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzLmlzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4KTsgfSBcCiAgICAgYm9vbCBpcyAjIyBjYXBp
dGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUobG9ja2VyLCBi
bG9jay0+aW5kZXgoKSk7IH0gXAotICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93
ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxC
aXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7
IG1fYml0cy5zZXRJcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCwgdmFsdWUpOyB9IFwKICAgICB2
b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIs
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0
YWxCaXROYW1lKGxvY2tlciwgYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQogICAgIEZPUl9FQUNI
X0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMpCiAjdW5k
ZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKQEAgLTEyNiw3ICsxMTQsNyBAQCBjbGFz
cyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NLX0RJUkVD
VE9SWV9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgICAg
ICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxvd2VyQml0
TmFtZSgpKTsKICAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJF
Q1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNL
CiAgICAgfQpAQCAtMTM1LDcgKzEyMyw3IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICB2
b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0
IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNL
KGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dl
ckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxvd2VyQml0
TmFtZSgpLCAjY2FwaXRhbEJpdE5hbWUpOwogICAgICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RP
UllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NLX0RJUkVD
VE9SWV9CSVRfQ0FMTEJBQ0sKICAgICB9CkBAIC0xNzMsMTAgKzE2MSw3IEBAIGNsYXNzIEJsb2Nr
RGlyZWN0b3J5IHsKIAogICAgIC8vIE11dGF0b3IgdXNlcyB0aGlzIHRvIGd1YXJkIHJlc2l6aW5n
IHRoZSBiaXR2ZWN0b3JzLiBUaG9zZSB0aGluZ3MgaW4gdGhlIEdDIHRoYXQgbWF5IHJ1bgogICAg
IC8vIGNvbmN1cnJlbnRseSB0byB0aGUgbXV0YXRvciBtdXN0IGxvY2sgdGhpcyB3aGVuIGFjY2Vz
c2luZyB0aGUgYml0dmVjdG9ycy4KLSNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJB
VElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgRmFzdEJpdFZlY3RvciBt
XyAjIyBsb3dlckJpdE5hbWU7Ci0gICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9D
S19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKQotI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRf
REVDTEFSQVRJT04KKyAgICBCbG9ja0RpcmVjdG9yeUJpdHMgbV9iaXRzOwogICAgIExvY2sgbV9i
aXR2ZWN0b3JMb2NrOwogICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2NrOwogICAgIENlbGxB
dHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnlCaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDRiYWZmOTE3MDJhMDMxNTVjNGM5YzM2
ZWFhNDhlMGFjYmRjYTFkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDxhcnJheT4KKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgRk9SX0VBQ0hfQkxPQ0tf
RElSRUNUT1JZX0JJVChtYWNybykgXAorICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQg
b2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8o
ZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUg
b2JqZWN0cy4gKi8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1h
Y3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRo
ZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBh
cmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBt
YWNybyhkZXN0cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tz
IHRoYXQgbWF5IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKKyAgICBtYWNybyhlZGVuLCBF
ZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNl
IHRoZSBsYXN0IEdDLiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dl
ZXBlci4gKi9cCisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2lu
Zy4gKi9cCisgICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRo
ZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyht
YXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0
aGF0IGFyZSByZXRpcmVkLiAqLworCitjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgYml0c1BlclNlZ21lbnQgPSAzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IHNlZ21lbnRTaGlmdCA9IDU7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleE1h
c2sgPSAoMVUgPDwgc2VnbWVudFNoaWZ0KSAtIDE7CisgICAgc3RhdGljX2Fzc2VydCgoMSA8PCBz
ZWdtZW50U2hpZnQpID09IGJpdHNQZXJTZWdtZW50KTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RP
UllfQklUX0tJTkRfQ09VTlQobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgKyAxCisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHMg
PSAwIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5E
X0NPVU5UKTsKKyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQKKworICAgIGVu
dW0gY2xhc3MgS2luZCB7CisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJB
VElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgICAgIGNhcGl0YWxCaXRO
YW1lLAorICAgICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9S
WV9CSVRfS0lORF9ERUNMQVJBVElPTikKKyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRf
REVDTEFSQVRJT04KKyAgICB9OworCisgICAgdXNpbmcgU2VnbWVudCA9IHN0ZDo6YXJyYXk8dWlu
dDMyX3QsIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcz47CisKKyAgICB0ZW1wbGF0ZTxL
aW5kIGtpbmQ+CisgICAgY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldyB7Cisg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgdXNp
bmcgVmlld1R5cGUgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OworCisgICAgICAg
IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAg
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldyhjb25zdCBTZWdtZW50KiBzZWdtZW50cywg
c2l6ZV90IG51bUJpdHMpCisgICAgICAgICAgICA6IG1fc2VnbWVudHMoc2VnbWVudHMpCisgICAg
ICAgICAgICAsIG1fbnVtQml0cyhudW1CaXRzKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBtX251bUJpdHM7CisgICAgICAgIH0KKworICAgICAgICB1aW50MzJfdCB3b3JkKHNpemVfdCBp
bmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oaW5kZXggPCBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cygpKSk7
CisgICAgICAgICAgICByZXR1cm4gbV9zZWdtZW50c1tpbmRleF1bc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGtpbmQpXTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90JiB3b3JkKHNpemVfdCBp
bmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaW5kZXggPCBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cygpKSk7CisgICAg
ICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhdW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNs
ZWFyQWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IG1fbnVtQml0czsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFNl
Z21lbnQqPihtX3NlZ21lbnRzKVtpbmRleF1bc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpXSA9
IDA7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IFNlZ21lbnQqIG1f
c2VnbWVudHMgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPEtpbmQga2luZD4KKyAgICB1c2luZyBCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvclZpZXcgPSBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPEJsb2NrRGlyZWN0b3J5Qml0
VmVjdG9yV29yZFZpZXc8a2luZD4+OworCisgICAgdGVtcGxhdGU8S2luZCBraW5kPgorICAgIGNs
YXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmIGZpbmFsIDogcHVibGljIEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yVmlldzxraW5kPiB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZihCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
PGtpbmQ+IHZpZXcpCisgICAgICAgICAgICA6IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxr
aW5kPih2aWV3KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3Bl
cmF0b3I9KGNvbnN0IFdURjo6RmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobnVtQml0cygpID09IG90aGVyLm51bUJpdHMo
KSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
clZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAgQmxvY2tE
aXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjptX3dvcmRzLndvcmQoaSkgPSBvdGhlci5tX3dv
cmRzLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKyAgICB9
OworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwg
Y2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXpl
X3QgaW5kZXgpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIG1fc2VnbWVudHNbaW5k
ZXggPj4gc2VnbWVudFNoaWZ0XVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oS2luZDo6Y2FwaXRhbEJp
dE5hbWUpXSAmICgxVSA8PCAoaW5kZXggJiBpbmRleE1hc2spKTsgXAorICAgIH0gXAorICAgIHZv
aWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSBcCisg
ICAgeyBcCisgICAgICAgIHVpbnQzMl90JiBiaXRzID0gbV9zZWdtZW50c1tpbmRleCA+PiBzZWdt
ZW50U2hpZnRdW3N0YXRpY19jYXN0PHVuc2lnbmVkPihLaW5kOjpjYXBpdGFsQml0TmFtZSldOyBc
CisgICAgICAgIGlmICh2YWx1ZSkgXAorICAgICAgICAgICAgYml0cyB8PSAoMVUgPDwgKGluZGV4
ICYgaW5kZXhNYXNrKSk7IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgICBiaXRzICY9IH4o
MVUgPDwgKGluZGV4ICYgaW5kZXhNYXNrKSk7IFwKKyAgICB9IFwKKyAgICBCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvclZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+IGxvd2VyQml0TmFtZSgpIGNvbnN0
IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxL
aW5kOjpjYXBpdGFsQml0TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5k
OjpjYXBpdGFsQml0TmFtZT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyBcCisgICAg
fSBcCisgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRhbEJpdE5hbWU+
IGxvd2VyQml0TmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIEJsb2NrRGlyZWN0b3J5
Qml0VmVjdG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
cldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1C
aXRzKSk7IFwKKyAgICB9CisgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19E
SVJFQ1RPUllfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VT
U09SUworCisgICAgdW5zaWduZWQgbnVtQml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQml0czsg
fQorCisgICAgdm9pZCByZXNpemUodW5zaWduZWQgbnVtQml0cykKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIG9sZE51bUJpdHMgPSBtX251bUJpdHM7CisgICAgICAgIG1fbnVtQml0cyA9IG51bUJp
dHM7CisgICAgICAgIG1fc2VnbWVudHMucmVzaXplKChudW1CaXRzICsgYml0c1BlclNlZ21lbnQg
LSAxKSA+PiBzZWdtZW50U2hpZnQpOworICAgICAgICBpZiAobnVtQml0cyA8IG9sZE51bUJpdHMg
JiYgbnVtQml0cykgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGxhc3Qgc2VnbWVudC4KKyAg
ICAgICAgICAgIGF1dG8mIHNlZ21lbnQgPSBtX3NlZ21lbnRzW251bUJpdHMgPj4gc2VnbWVudFNo
aWZ0XTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
KDFVTEwgPDwgKG51bUJpdHMgJiBpbmRleE1hc2spKSAtIDEpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRz
OyArK2luZGV4KQorICAgICAgICAgICAgICAgIHNlZ21lbnRbaW5kZXhdICY9IG1hc2s7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9y
RWFjaFNlZ21lbnQoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAg
ICAgICAgIGZ1bmMoaW5kZXgrKywgc2VnbWVudCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZl
Y3RvcjxTZWdtZW50PiBtX3NlZ21lbnRzOworICAgIHVuc2lnbmVkIG1fbnVtQml0cyB7IDAgfTsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaAppbmRleCA0MWNiYjQ5YzI2NDk1NjZkZWNkZjc4
MjM4M2JlYzg4Y2EyMmJhNTc1Li42ODRiMWE4ZDg2YzRjNzU5NzBkNDg2OGNmZDQwYmM2Nzk2YjAw
YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9y
eUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9y
eUlubGluZXMuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxv
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgK
KyAgICBtX2JpdHMubGl2ZSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGlu
ZGV4KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0p
OwpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdAogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RF
bXB0eUJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9tYXJraW5nTm90RW1w
dHkuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkuZm9yRWFjaFNl
dEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIGZ1bmN0b3Io
bV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0lzb0NlbGxTZXQuY3BwCmluZGV4IGFhNjJlMTFmZDQ0ZjZhYmNiYmJmNDI1Yjg2ZmRmMTExODBh
ODQ3OWMuLjgwYTljZWI2YTM3OTZlOTNlNDZlMzc0MTdjOTlmMmViNjhmMGE0ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJl
ZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxl
bE5vdEVtcHR5TWFya2VkQmxvY2tTCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2xvY2spOwotICAgICAgICAgICAgYXV0byBiaXRzID0gbV9kaXJlY3RvcnkubV9tYXJraW5n
Tm90RW1wdHkgJiBtX3NldC5tX2Jsb2Nrc1dpdGhCaXRzOworICAgICAgICAgICAgYXV0byBiaXRz
ID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9zZXQubV9ibG9ja3NX
aXRoQml0czsKICAgICAgICAgICAgIG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRleCwgdHJ1
ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nrcy5zaXpl
KCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggZmM4MTY5Mjg3ZjA1NjZiZWVi
ODlkMTk4NDcxOTExYTRhNzU5YzRlMS4uZGI3ZThhY2I1NjFiMWQyMmQ0NzYxNjVjYmM0MDhiYzM4
ZjY1NmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5s
aW5lcy5oCkBAIC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2b2lkIElz
b0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgQmxv
Y2tEaXJlY3RvcnkmIGRpcmVjdG9yeSA9IG1fc3Vic3BhY2UubV9kaXJlY3Rvcnk7Ci0gICAgKGRp
cmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0eSAmIG1fYmxvY2tzV2l0aEJpdHMpLmZvckVhY2hTZXRC
aXQoCisgICAgKGRpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX2Jsb2Nrc1dp
dGhCaXRzKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBibG9ja0luZGV4KSB7
CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9yeS5tX2Js
b2Nrc1tibG9ja0luZGV4XTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383443</attachid>
            <date>2019-11-13 02:55:36 -0800</date>
            <delta_ts>2019-11-13 03:03:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113025536.patch</filename>
            <type>text/plain</type>
            <size>27669</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NTk5ZDI2YjE3NGNjMTM1NTAyZGI0ZDk1OWM1YTZlN2IxNjFkNDA5Li4wYWFlZmRkZjJhNTBiMDEz
M2I1NGVlYjE4YWYwY2IyNWU3NDZkMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OnJlbW92ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2lu
Z0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmVuZE1h
cmtpbmcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9y
RWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RV
bnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZmluZEJsb2NrVG9Td2VlcCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpzd2VlcCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzaHJpbmspOgorICAgICAgICAoSlNDOjpC
bG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9ja1NvdXJjZSk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjpkdW1wQml0cyk6CisgICAgICAgICogaGVhcC9CbG9ja0RpcmVjdG9yeS5oOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAg
ICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29y
ZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxs
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlC
aXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpy
ZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50
KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2NrKToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTb3VyY2UpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3Rh
dGUpOgorCiAyMDE5LTExLTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gUHV0IG1vcmUgdGhpbmdzIGluIElzb1N1YnNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU1ZTc5
NTE1YTJiZDE5YjM0MzUwZmE2OWRlOTkzOGVmYTY4ZTNlMWIuLmUxZDc4ZDNkYjFmZjUwOGQzY2M2
OTVhNjEyNmExNTVmMGM2ZTEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMTMgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBCbG9ja0Rp
cmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBhY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAg
KFdURjo6RmFzdEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzKToKKyAgICAgICAgKFdURjo6RmFz
dEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzIGNvbnN0KToKKwogMjAxOS0xMS0xMSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVVRDIG9mZnNldCBm
b3IgU2Ftb2EgaXMgbWlzY2FsY3VsYXRlZCB3aGVuICFIQVZFKFRJTUVHTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkY2ViM2ZjMDk5MDcyYWMzNjYxNmUxNjM2OTY2YjUz
YmI1Mzc1YmMyLi5iNmYwYWVkMzBlMjRkM2FmNWUzZGFhMWU5MjcyNWU0MmVlMTQzZWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjksNiArNTY5LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoZWFwL0FsbG9jYXRv
cklubGluZXMuaAogICAgIGhlYXAvQWxsb2NhdG9yRm9yTW9kZS5oCiAgICAgaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oCisgICAgaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAogICAgIGhlYXAvQmxvY2tE
aXJlY3RvcnlJbmxpbmVzLmgKICAgICBoZWFwL0NlbGxBdHRyaWJ1dGVzLmgKICAgICBoZWFwL0Nl
bGxDb250YWluZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tEaXJlY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuY3BwCmluZGV4IDdlZWU0YTg3NDZiNmJkMTg4NTJhN2FiNjI4NzRiYmFmNTdhYmUyODkuLjQ2
ZGUyZWZhNzlkMTRkN2VlZmUxNGVhMjg1MzU2OGEyZDVkMTMzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9v
bCBCbG9ja0RpcmVjdG9yeTo6aXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKQogCiBN
YXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFs
KCkKIHsKLSAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3Is
IHRydWUpOworICAgIG1fZW1wdHlDdXJzb3IgPSBtX2JpdHMuZW1wdHkoKS5maW5kQml0KG1fZW1w
dHlDdXJzb3IsIHRydWUpOwogICAgIGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1wdHlD
dXJzb3JdOwpAQCAtODUsNyArODUsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVj
dG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2Nr
RGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvY2F0
b3IpCiB7CiAgICAgZm9yICg7OykgewotICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vy
c29yID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQoYWxsb2Nh
dG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGFsbG9jYXRvci5tX2FsbG9j
YXRpb25DdXJzb3IgPSAobV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSB8IG1fYml0cy5l
bXB0eSgpKS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwogICAg
ICAgICBpZiAoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCkBAIC0xMTgsMjEgKzExOCwx
MiBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKICAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsK
ICAgICAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNh
cGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3Io
Ci0gICAgICAgICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICAgICAgICAgIFsm
XSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1C
aXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFj
aXR5KCkgPiBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fYml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRS
ZXNpemVCaXRzKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgZm9yRWFjaEJpdFZl
Y3RvcigKLSAgICAgICAgICAgICAgICBsb2NrZXIsCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0
Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZSht
X2Jsb2Nrcy5jYXBhY2l0eSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1f
Yml0cy5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOwpAQCAtMTQy
LDcgKzEzMyw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIE5vTG9j
a2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAg
ICAgICAgWyZdIChhdXRvIHZlY3RvcikgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0
b3IsICF2ZWN0b3JbaW5kZXhdKTsKICAgICAgICAgfSk7CiAKQEAgLTE2NSw3ICsxNTYsNyBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBob2xkTG9jayhtX2JpdHZl
Y3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAg
ICBbJl0gKGF1dG8gdmVjdG9yKSB7CiAgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCld
ID0gZmFsc2U7CiAgICAgICAgIH0pOwogICAgIApAQCAtMTkyLDcgKzE4Myw3IEBAIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKICAgICBtX3Vuc3dlcHRDdXJzb3Ig
PSAwOwogICAgIG1fZW1wdHlDdXJzb3IgPSAwOwogICAgIAotICAgIG1fZWRlbi5jbGVhckFsbCgp
OworICAgIG1fYml0cy5lZGVuKCkuY2xlYXJBbGwoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhp
cyB3b3JrIGFnYWluLgpAQCAtMjM3LDggKzIyOCw4IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmJl
Z2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKICAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNr
eSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNl
IGR1cmluZyBmdWxsCiAgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUg
bGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKICAg
ICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KLSAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVh
ckFsbCgpOwotICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFy
a2luZ05vdEVtcHR5KCkuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFya2luZ1JldGlyZWQoKS5j
bGVhckFsbCgpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKQEAgLTI0
OSw4ICsyNDAsOCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKICAgICAvLyBr
bm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBpcyBhbHJl
YWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgogICAgIC8vIHZlY3RvcnMuCiAgICAgCi0g
ICAgbV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKLSAgICBtX2NhbkFsbG9j
YXRlQnV0Tm90RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdS
ZXRpcmVkOworICAgIG1fYml0cy5lbXB0eSgpID0gbV9iaXRzLmxpdmUoKSAmIH5tX2JpdHMubWFy
a2luZ05vdEVtcHR5KCk7CisgICAgbV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSA9IG1f
Yml0cy5saXZlKCkgJiBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiB+bV9iaXRzLm1hcmtpbmdS
ZXRpcmVkKCk7CiAKICAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CiAgICAgICAgIC8vIFRo
ZXJlIGFyZSBzb21lIGJsb2NrcyB0aGF0IHdlIGRpZG4ndCBhbGxvY2F0ZSBvdXQgb2YgaW4gdGhl
IGxhc3QgY3ljbGUsIGJ1dCB3ZSBzd2VwdCB0aGVtLiBUaGlzCkBAIC0yNTgsNyArMjQ5LDcgQEAg
dm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAgICAgICAgIC8vIGRlc3RydWN0b3Jz
IGFnYWluLiBUaGF0J3MgZmluZSBiZWNhdXNlIG9mIHphcHBpbmcuIFRoZSBvbmx5IHRpbWUgd2hl
biB3ZSBjYW5ub3QgZm9yZ2V0IGlzIHdoZW4KICAgICAgICAgLy8gd2UganVzdCBhbGxvY2F0ZSBh
IGJsb2NrIG9yIHdoZW4gd2UgbW92ZSBhIGJsb2NrIGZyb20gb25lIHNpemUgY2xhc3MgdG8gYW5v
dGhlci4gVGhhdCBkb2Vzbid0CiAgICAgICAgIC8vIGhhcHBlbiBoZXJlLgotICAgICAgICBtX2Rl
c3RydWN0aWJsZSA9IG1fbGl2ZTsKKyAgICAgICAgbV9iaXRzLmRlc3RydWN0aWJsZSgpID0gbV9i
aXRzLmxpdmUoKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGZhbHNlKSB7CkBAIC0yNjksMTcgKzI2
MCwxNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIAogdm9pZCBCbG9ja0Rp
cmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKQogewotICAgIG1fdW5z
d2VwdCB8PSBtX2VkZW47CisgICAgbV9iaXRzLnVuc3dlcHQoKSB8PSBtX2JpdHMuZWRlbigpOwog
fQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlv
bigpCiB7Ci0gICAgbV91bnN3ZXB0ID0gbV9saXZlOworICAgIG1fYml0cy51bnN3ZXB0KCkgPSBt
X2JpdHMubGl2ZSgpOwogfQogCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6
ZmluZEJsb2NrVG9Td2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0Q3Vyc29yID0gbV91bnN3ZXB0LmZp
bmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKKyAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX2Jp
dHMudW5zd2VwdCgpLmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV91
bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fdW5zd2VwdEN1cnNvcl07CkBAIC0yODcsNyArMjc4LDcg
QEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja1RvU3dlZXAo
KQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0LmZvckVh
Y2hTZXRCaXQoCisgICAgbV9iaXRzLnVuc3dlcHQoKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBb
Jl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2sgPSBtX2Jsb2Nrc1tpbmRleF07CiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVsbHB0cik7
CkBAIC0yOTYsNyArMjg3LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogCiB2b2lk
IEJsb2NrRGlyZWN0b3J5OjpzaHJpbmsoKQogewotICAgIChtX2VtcHR5ICYgfm1fZGVzdHJ1Y3Rp
YmxlKS5mb3JFYWNoU2V0Qml0KAorICAgIChtX2JpdHMuZW1wdHkoKSAmIH5tX2JpdHMuZGVzdHJ1
Y3RpYmxlKCkpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAg
ICAgICAgICAgICBtYXJrZWRTcGFjZSgpLmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0pOwogICAg
ICAgICB9KTsKQEAgLTMwNyw3ICsyOTgsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojphc3NlcnRO
b1Vuc3dlcHQoKQogICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBpZiAobV91bnN3ZXB0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9iaXRzLnVuc3dlcHQo
KS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBkYXRhTG9nKCJBc3NlcnRp
b24gZmFpbGVkOiB1bnN3ZXB0IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOwpAQCAtMzI5
LDcgKzMyMCw3IEBAIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBC
bG9ja0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrCiAgICAgICAgICAgICBpZiAobV9k
b25lKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgbV9pbmRleCA9IG1fZGlyZWN0
b3J5Lm1fbWFya2luZ05vdEVtcHR5LmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CisgICAgICAgICAg
ICBtX2luZGV4ID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZpbmRCaXQo
bV9pbmRleCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5t
X2Jsb2Nrcy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3LDE0ICszNDgsMTQgQEAgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKICAgICB1bnNpZ25lZCBtYXhO
YW1lTGVuZ3RoID0gMDsKICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5v
TG9ja2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiwgY29uc3QgY2hh
ciogbmFtZSkgeworICAgICAgICBbJl0gKGF1dG8sIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKICAgICAgICAgICAgIG1heE5h
bWVMZW5ndGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOwogICAgICAgICB9KTsK
ICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2luZ05l
Y2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IsIGNvbnN0IGNoYXIq
IG5hbWUpIHsKKyAgICAgICAgWyZdIChhdXRvIHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgewog
ICAgICAgICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFtZSwgIjogIik7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0gc3RybGVuKG5hbWUpOyBpLS07KQogICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiICIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Jsb2NrRGlyZWN0b3J5LmgKaW5kZXggYTdiY2FhNmI5ZWJkNGJhZDYzZDdlNzgxMTA5MThlM2U0
MzYzODdkMS4uODZjNzhlZGJhZTgxZGYyMmE0MTllNzI3YTY5ZGJkYzk5OGIyMzgxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIgor
I2luY2x1ZGUgIkJsb2NrRGlyZWN0b3J5Qml0cy5oIgogI2luY2x1ZGUgIkNlbGxBdHRyaWJ1dGVz
LmgiCiAjaW5jbHVkZSAiRnJlZUxpc3QuaCIKICNpbmNsdWRlICJMb2NhbEFsbG9jYXRvci5oIgpA
QCAtNDQsMTkgKzQ1LDYgQEAgY2xhc3MgSXNvQ2VsbFNldDsKIGNsYXNzIE1hcmtlZFNwYWNlOwog
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0jZGVmaW5lIEZPUl9FQUNIX0JMT0NLX0RJ
UkVDVE9SWV9CSVQobWFjcm8pIFwKLSAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9m
IGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAotICAgIG1hY3JvKGVt
cHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9i
amVjdHMuICovIFwKLSAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKLSAgICBtYWNy
byhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJl
IG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCi0gICAgbWFj
cm8oZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0
aGF0IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCi0gICAgbWFjcm8oZWRlbiwgRWRl
bikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0
aGUgbGFzdCBHQy4gKi9cCi0gICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVw
ZXIuICovXAotICAgIFwKLSAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcu
ICovXAotICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCi0gICAgbWFjcm8obWFy
a2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhh
dCBhcmUgcmV0aXJlZC4gKi8KLQogLy8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXRO
b3RFbXB0eSBhbmQgZW1wdHkgdG8gYmUgZXhjbHVzaXZlOgogLy8KIC8vICAgICBjYW5BbGxvY2F0
ZUJ1dE5vdEVtcHR5ICYgZW1wdHkgPT0gMApAQCAtMTE1LDkgKzEwMyw5IEBAIGNsYXNzIEJsb2Nr
RGlyZWN0b3J5IHsKICAgICBMb2NrJiBiaXR2ZWN0b3JMb2NrKCkgeyByZXR1cm4gbV9iaXR2ZWN0
b3JMb2NrOyB9CiAKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMobG93ZXJC
aXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKLSAgICBib29sIGlzICMjIGNhcGl0YWxCaXRO
YW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBt
XyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXRO
YW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2JpdHMuaXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKICAgICBib29sIGlzICMjIGNh
cGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIs
IGJsb2NrLT5pbmRleCgpKTsgfSBcCi0gICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShj
b25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBs
b3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRh
bEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUp
IHsgbV9iaXRzLnNldElzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7IH0gXAogICAg
IHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tl
ciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2Fw
aXRhbEJpdE5hbWUobG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CiAgICAgRk9SX0VB
Q0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUykKICN1
bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUwpAQCAtMTI2LDcgKzExNCw3IEBAIGNs
YXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgQWJz
dHJhY3RMb2NrZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElS
RUNUT1JZX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAg
ICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMubG93ZXJC
aXROYW1lKCkpOwogICAgICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJ
UkVDVE9SWV9CSVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJB
Q0sKICAgICB9CkBAIC0xMzUsNyArMTIzLDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAg
IHZvaWQgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29u
c3QgRnVuYyYgZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJB
Q0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgICAgICBmdW5jKG1fICMjIGxv
d2VyQml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMubG93ZXJC
aXROYW1lKCksICNjYXBpdGFsQml0TmFtZSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVD
VE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElS
RUNUT1JZX0JJVF9DQUxMQkFDSwogICAgIH0KQEAgLTE3MywxMCArMTYxLDcgQEAgY2xhc3MgQmxv
Y2tEaXJlY3RvcnkgewogCiAgICAgLy8gTXV0YXRvciB1c2VzIHRoaXMgdG8gZ3VhcmQgcmVzaXpp
bmcgdGhlIGJpdHZlY3RvcnMuIFRob3NlIHRoaW5ncyBpbiB0aGUgR0MgdGhhdCBtYXkgcnVuCiAg
ICAgLy8gY29uY3VycmVudGx5IHRvIHRoZSBtdXRhdG9yIG11c3QgbG9jayB0aGlzIHdoZW4gYWNj
ZXNzaW5nIHRoZSBiaXR2ZWN0b3JzLgotI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xB
UkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICBGYXN0Qml0VmVjdG9y
IG1fICMjIGxvd2VyQml0TmFtZTsKLSAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJM
T0NLX0RJUkVDVE9SWV9CSVRfREVDTEFSQVRJT04pCi0jdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9ERUNMQVJBVElPTgorICAgIEJsb2NrRGlyZWN0b3J5Qml0cyBtX2JpdHM7CiAgICAgTG9jayBt
X2JpdHZlY3RvckxvY2s7CiAgICAgTG9jayBtX2xvY2FsQWxsb2NhdG9yc0xvY2s7CiAgICAgQ2Vs
bEF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeUJpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjkxMDMyNGQ2NjdlOWUyMjI3ZmE1
OWZiMDJmNGMwMWFmOGI4NjMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBGT1JfRUFDSF9CTE9D
S19ESVJFQ1RPUllfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNl
dCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNy
byhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2
ZSBvYmplY3RzLiAqLyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBz
ZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAg
bWFjcm8oY2FuQWxsb2NhdGVCdXROb3RFbXB0eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIGFyZSBuZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUu
IGFyZSBtb3JlIHRoYW4gbWluTWFya2VkQmxvY2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAorICAg
IG1hY3JvKGRlc3RydWN0aWJsZSwgRGVzdHJ1Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9j
a3MgdGhhdCBtYXkgaGF2ZSBkZXN0cnVjdG9ycyB0byBydW4uICovXAorICAgIG1hY3JvKGVkZW4s
IEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2lu
Y2UgdGhlIGxhc3QgR0MuICovXAorICAgIG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBz
ZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBz
d2VlcGVyLiAqL1wKKyAgICBcCisgICAgLyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJr
aW5nLiAqL1wKKyAgICBtYWNybyhtYXJraW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBlbXB0eS4gKi8gXAorICAgIG1hY3Jv
KG1hcmtpbmdSZXRpcmVkLCBNYXJraW5nUmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tz
IHRoYXQgYXJlIHJldGlyZWQuICovCisKK2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBiaXRzUGVyU2VnbWVudCA9IDMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgc2VnbWVudFNoaWZ0ID0gNTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4
TWFzayA9ICgxVSA8PCBzZWdtZW50U2hpZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8
IHNlZ21lbnRTaGlmdCkgPT0gYml0c1BlclNlZ21lbnQpOworCisjZGVmaW5lIEJMT0NLX0RJUkVD
VE9SWV9CSVRfS0lORF9DT1VOVChsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSArIDEKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5k
cyA9IDAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0tJ
TkRfQ09VTlQpOworI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVAorCisgICAg
ZW51bSBjbGFzcyBLaW5kIHsKKyNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xB
UkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgY2FwaXRhbEJp
dE5hbWUsCisgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNU
T1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lO
RF9ERUNMQVJBVElPTgorICAgIH07CisKKyAgICB1c2luZyBTZWdtZW50ID0gc3RkOjphcnJheTx1
aW50MzJfdCwgbnVtYmVyT2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRzPjsKKworICAgIHRlbXBsYXRl
PEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3IHsK
KyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB1
c2luZyBWaWV3VHlwZSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc7CisKKyAgICAg
ICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldygpID0gZGVmYXVsdDsKKworICAgICAg
ICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KGNvbnN0IFNlZ21lbnQqIHNlZ21lbnRz
LCBzaXplX3QgbnVtQml0cykKKyAgICAgICAgICAgIDogbV9zZWdtZW50cyhzZWdtZW50cykKKyAg
ICAgICAgICAgICwgbV9udW1CaXRzKG51bUJpdHMpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIHNpemVfdCBudW1CaXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1fbnVtQml0czsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHdvcmQoc2l6ZV90
IGluZGV4KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkp
KTsKKyAgICAgICAgICAgIHJldHVybiBtX3NlZ21lbnRzW2luZGV4XVtzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oa2luZCldOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3QmIHdvcmQoc2l6ZV90
IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihpbmRleCA8IGZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAg
ICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21lbnRzKVtpbmRleF1b
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
Y2xlYXJBbGwoKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgbV9udW1CaXRzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8
U2VnbWVudCo+KG1fc2VnbWVudHMpW2luZGV4XVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCld
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3Qg
bV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAg
dXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+PjsKKworICAgIHRlbXBsYXRl
PEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiBmaW5hbCA6
IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4geworICAgIHB1YmxpYzoK
KyAgICAgICAgZXhwbGljaXQgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYoQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPiB2aWV3KQorICAgICAgICAgICAgOiBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclZpZXc8a2luZD4odmlldykKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAgICAgICAgQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShjb25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90
aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVyLm51bUJpdHMoKSk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZp
ZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAgQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkgPSBvdGhlci51
bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVyLm51
bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAg
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkg
fD0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAgICAgcmV0dXJuICp0aGlz
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS5j
bGVhckFsbCgpOworICAgICAgICB9CisgICAgfTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllf
QklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJv
b2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCBcCisgICAgeyBcCisg
ICAgICAgIHJldHVybiBtX3NlZ21lbnRzW2luZGV4ID4+IHNlZ21lbnRTaGlmdF1bc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEtpbmQ6OmNhcGl0YWxCaXROYW1lKV0gJiAoMVUgPDwgKGluZGV4ICYgaW5k
ZXhNYXNrKSk7IFwKKyAgICB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNp
emVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgXAorICAgIHsgXAorICAgICAgICB1aW50MzJfdCYgYml0
cyA9IG1fc2VnbWVudHNbaW5kZXggPj4gc2VnbWVudFNoaWZ0XVtzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oS2luZDo6Y2FwaXRhbEJpdE5hbWUpXTsgXAorICAgICAgICBpZiAodmFsdWUpIFwKKyAgICAg
ICAgICAgIGJpdHMgfD0gKDFVIDw8IChpbmRleCAmIGluZGV4TWFzaykpOyBcCisgICAgICAgIGVs
c2UgXAorICAgICAgICAgICAgYml0cyAmPSB+KDFVIDw8IChpbmRleCAmIGluZGV4TWFzaykpOyBc
CisgICAgfSBcCisgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNhcGl0YWxC
aXROYW1lPiBsb3dlckJpdE5hbWUoKSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KG1fc2VnbWVudHMu
ZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0gXAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVj
dG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1lPiBsb3dlckJpdE5hbWUoKSBcCisgICAgeyBcCisg
ICAgICAgIHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0
TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5kOjpjYXBpdGFsQml0TmFt
ZT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyBcCisgICAgfQorICAgIEZPUl9FQUNI
X0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMpCisjdW5k
ZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKKworICAgIHVuc2lnbmVkIG51bUJpdHMo
KSBjb25zdCB7IHJldHVybiBtX251bUJpdHM7IH0KKworICAgIHZvaWQgcmVzaXplKHVuc2lnbmVk
IG51bUJpdHMpCisgICAgeworICAgICAgICB1bnNpZ25lZCBvbGROdW1CaXRzID0gbV9udW1CaXRz
OworICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOworICAgICAgICBtX3NlZ21lbnRzLnJlc2l6
ZSgobnVtQml0cyArIGJpdHNQZXJTZWdtZW50IC0gMSkgPj4gc2VnbWVudFNoaWZ0KTsKKyAgICAg
ICAgaWYgKG51bUJpdHMgPCBvbGROdW1CaXRzICYmIG51bUJpdHMpIHsKKyAgICAgICAgICAgIC8v
IENsZWFyIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9z
ZWdtZW50c1tudW1CaXRzID4+IHNlZ21lbnRTaGlmdF07CisgICAgICAgICAgICB1aW50MzJfdCBt
YXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxVUxMIDw8IChudW1CaXRzICYgaW5kZXhNYXNr
KSkgLSAxKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51
bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kczsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBz
ZWdtZW50W2luZGV4XSAmPSBtYXNrOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmMmIGZ1bmMp
CisgICAgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoYXV0byYg
c2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgICAgICBmdW5jKGluZGV4KyssIHNlZ21lbnQp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAg
ICB1bnNpZ25lZCBtX251bUJpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgK
aW5kZXggNDFjYmI0OWMyNjQ5NTY2ZGVjZGY3ODIzODNiZWM4OGNhMjJiYTU3NS4uNjg0YjFhOGQ4
NmM0Yzc1OTcwZDQ4NjhjZmQ0MGJjNjc5NmIwMGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
Ci0gICAgbV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLmxpdmUoKS5mb3JFYWNoU2V0
Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3Rvciht
X2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxv
Y2soY29uc3QgRnVuY3QKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lk
IEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoTm90RW1wdHlCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogewotICAgIG1fbWFya2luZ05vdEVtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRz
Lm1hcmtpbmdOb3RFbXB0eSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGlu
ZGV4KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBhYTYyZTEx
ZmQ0NGY2YWJjYmJiZjQyNWI4NmZkZjExMTgwYTg0NzljLi44MGE5Y2ViNmEzNzk2ZTkzZTQ2ZTM3
NDE3Yzk5ZjJlYjY4ZjBhNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFu
ZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrUwogICAgICAg
ICAgICAgaWYgKG1fZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIGF1dG8g
Yml0cyA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9zZXQubV9ibG9ja3NXaXRo
Qml0czsKKyAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5n
Tm90RW1wdHkoKSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJpdHM7CiAgICAgICAgICAgICBtX2luZGV4
ID0gYml0cy5maW5kQml0KG1faW5kZXgsIHRydWUpOwogICAgICAgICAgICAgaWYgKG1faW5kZXgg
Pj0gbV9kaXJlY3RvcnkubV9ibG9ja3Muc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9kb25l
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxT
ZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5l
cy5oCmluZGV4IGZjODE2OTI4N2YwNTY2YmVlYjg5ZDE5ODQ3MTkxMWE0YTc1OWM0ZTEuLmRiN2U4
YWNiNTYxYjFkMjJkNDc2MTY1Y2JjNDA4YmMzOGY2NTZjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaApAQCAtNzAsNyArNzAsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChj
b25zdCBGdW5jJiBmdW5jKQogewogICAgIEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkgPSBtX3N1
YnNwYWNlLm1fZGlyZWN0b3J5OwotICAgIChkaXJlY3RvcnkubV9tYXJraW5nTm90RW1wdHkgJiBt
X2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0Qml0KAorICAgIChkaXJlY3RvcnkubV9iaXRzLm1h
cmtpbmdOb3RFbXB0eSgpICYgbV9ibG9ja3NXaXRoQml0cykuZm9yRWFjaFNldEJpdCgKICAgICAg
ICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgewogICAgICAgICAgICAgTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3NbYmxvY2tJbmRleF07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCBjNmUxZjZjZGY1MDI3ZmUx
NDBmNjQ0ZWNhNDkxOTBmNDg0OGIyNWEzLi45NzllM2NhZTY4YzUxMGFjNDU3ZmNkMjZiZWE0Njc3
NDE4N2JmYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUo
UHJpbnRTdHJlYW0mIG91dCkKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgZGlyZWN0b3J5
KCktPmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgaG9sZExvY2soZGlyZWN0b3J5
KCktPmJpdHZlY3RvckxvY2soKSksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgYml0dmVj
dG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgIFsmXSAoYXV0byBiaXR2ZWN0b3IsIGNv
bnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgbmFtZSwgIjoi
LCBiaXR2ZWN0b3JbaW5kZXgoKV0gPyAiWUVTIiA6ICJubyIpOwogICAgICAgICB9KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaAppbmRleCBhOGVkNmI4Mjg5MDBmZTAyMTNiZGVkOWM2Mzc1Yzk3YjBh
MzZjODU5Li40OTRlNjQ4OWZlNGExZGIyMmRiMjc0NjdlNjkxNzJhYTM3MjAyZGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYv
RmFzdEJpdFZlY3Rvci5oCkBAIC00MjEsNiArNDIxLDkgQEAgY2xhc3MgRmFzdEJpdFZlY3Rvcklt
cGwgewogICAgIH0KICAgICAKICAgICB0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUgd29yZFZpZXco
KSBjb25zdCB7IHJldHVybiBtX3dvcmRzLnZpZXcoKTsgfQorCisgICAgV29yZHMmIHVuc2FmZVdv
cmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQorICAgIGNvbnN0IFdvcmRzJiB1bnNhZmVXb3Jkcygp
IGNvbnN0IHsgcmV0dXJuIG1fd29yZHM7IH0KICAgICAKIHByaXZhdGU6CiAgICAgLy8gWW91J2Qg
dGhpbmsgdGhhdCB3ZSBjb3VsZCByZW1vdmUgdGhpcyBmcmllbmQgaWYgd2UgdXNlZCBwcm90ZWN0
ZWQsIGJ1dCB5b3UnZCBiZSB3cm9uZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383445</attachid>
            <date>2019-11-13 03:03:25 -0800</date>
            <delta_ts>2019-11-13 03:15:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113030324.patch</filename>
            <type>text/plain</type>
            <size>28888</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NTk5ZDI2YjE3NGNjMTM1NTAyZGI0ZDk1OWM1YTZlN2IxNjFkNDA5Li4wYWFlZmRkZjJhNTBiMDEz
M2I1NGVlYjE4YWYwY2IyNWU3NDZkMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OnJlbW92ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2lu
Z0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmVuZE1h
cmtpbmcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9y
RWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RV
bnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZmluZEJsb2NrVG9Td2VlcCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpzd2VlcCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzaHJpbmspOgorICAgICAgICAoSlNDOjpC
bG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9ja1NvdXJjZSk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjpkdW1wQml0cyk6CisgICAgICAgICogaGVhcC9CbG9ja0RpcmVjdG9yeS5oOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAg
ICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29y
ZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxs
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlC
aXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpy
ZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50
KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2NrKToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTb3VyY2UpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3Rh
dGUpOgorCiAyMDE5LTExLTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gUHV0IG1vcmUgdGhpbmdzIGluIElzb1N1YnNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU1ZTc5
NTE1YTJiZDE5YjM0MzUwZmE2OWRlOTkzOGVmYTY4ZTNlMWIuLmUxZDc4ZDNkYjFmZjUwOGQzY2M2
OTVhNjEyNmExNTVmMGM2ZTEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMTMgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBCbG9ja0Rp
cmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBhY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAg
KFdURjo6RmFzdEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzKToKKyAgICAgICAgKFdURjo6RmFz
dEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzIGNvbnN0KToKKwogMjAxOS0xMS0xMSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVVRDIG9mZnNldCBm
b3IgU2Ftb2EgaXMgbWlzY2FsY3VsYXRlZCB3aGVuICFIQVZFKFRJTUVHTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkY2ViM2ZjMDk5MDcyYWMzNjYxNmUxNjM2OTY2YjUz
YmI1Mzc1YmMyLi5iNmYwYWVkMzBlMjRkM2FmNWUzZGFhMWU5MjcyNWU0MmVlMTQzZWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjksNiArNTY5LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoZWFwL0FsbG9jYXRv
cklubGluZXMuaAogICAgIGhlYXAvQWxsb2NhdG9yRm9yTW9kZS5oCiAgICAgaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oCisgICAgaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAogICAgIGhlYXAvQmxvY2tE
aXJlY3RvcnlJbmxpbmVzLmgKICAgICBoZWFwL0NlbGxBdHRyaWJ1dGVzLmgKICAgICBoZWFwL0Nl
bGxDb250YWluZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tEaXJlY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuY3BwCmluZGV4IDdlZWU0YTg3NDZiNmJkMTg4NTJhN2FiNjI4NzRiYmFmNTdhYmUyODkuLmIx
MDcwNmY2M2VmY2JkNjIxOTkxZDYwMzdjMTg3MjZkNDRkMWVjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9v
bCBCbG9ja0RpcmVjdG9yeTo6aXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKQogCiBN
YXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFs
KCkKIHsKLSAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3Is
IHRydWUpOworICAgIG1fZW1wdHlDdXJzb3IgPSBtX2JpdHMuZW1wdHkoKS5maW5kQml0KG1fZW1w
dHlDdXJzb3IsIHRydWUpOwogICAgIGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1wdHlD
dXJzb3JdOwpAQCAtODUsNyArODUsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVj
dG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2Nr
RGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvY2F0
b3IpCiB7CiAgICAgZm9yICg7OykgewotICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vy
c29yID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQoYWxsb2Nh
dG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGFsbG9jYXRvci5tX2FsbG9j
YXRpb25DdXJzb3IgPSAobV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSB8IG1fYml0cy5l
bXB0eSgpKS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwogICAg
ICAgICBpZiAoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCkBAIC0xMTgsMjEgKzExOCwx
MiBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKICAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsK
ICAgICAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNh
cGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3Io
Ci0gICAgICAgICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICAgICAgICAgIFsm
XSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1C
aXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFj
aXR5KCkgPiBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fYml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRS
ZXNpemVCaXRzKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgZm9yRWFjaEJpdFZl
Y3RvcigKLSAgICAgICAgICAgICAgICBsb2NrZXIsCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0
Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZSht
X2Jsb2Nrcy5jYXBhY2l0eSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1f
Yml0cy5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOwpAQCAtMTQy
LDcgKzEzMyw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIE5vTG9j
a2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAg
ICAgICAgWyZdIChhdXRvIHZlY3RvcikgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0
b3IsICF2ZWN0b3JbaW5kZXhdKTsKICAgICAgICAgfSk7CiAKQEAgLTE2NSw3ICsxNTYsNyBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBob2xkTG9jayhtX2JpdHZl
Y3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAg
ICBbJl0gKGF1dG8gdmVjdG9yKSB7CiAgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCld
ID0gZmFsc2U7CiAgICAgICAgIH0pOwogICAgIApAQCAtMTkyLDcgKzE4Myw3IEBAIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKICAgICBtX3Vuc3dlcHRDdXJzb3Ig
PSAwOwogICAgIG1fZW1wdHlDdXJzb3IgPSAwOwogICAgIAotICAgIG1fZWRlbi5jbGVhckFsbCgp
OworICAgIG1fYml0cy5lZGVuKCkuY2xlYXJBbGwoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhp
cyB3b3JrIGFnYWluLgpAQCAtMjM3LDIwICsyMjgsMjAgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6
YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKQogICAgIC8vIE1hcmsgYml0cyBhcmUgc3Rp
Y2t5IGFuZCBzbyBpcyBvdXIgc3VtbWFyeSBvZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhl
c2UgZHVyaW5nIGZ1bGwKICAgICAvLyBjb2xsZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRo
ZSBsYXN0IGNvbGxlY3Rpb24geW91IHdpbGwgc3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZwog
ICAgIC8vIGFzIHRoZSBuZXh0IG9uZSBpcyBlZGVuLgotICAgIG1fbWFya2luZ05vdEVtcHR5LmNs
ZWFyQWxsKCk7Ci0gICAgbV9tYXJraW5nUmV0aXJlZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5t
YXJraW5nTm90RW1wdHkoKS5jbGVhckFsbCgpOworICAgIG1fYml0cy5tYXJraW5nUmV0aXJlZCgp
LmNsZWFyQWxsKCk7CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogewot
ICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLmFsbG9jYXRlZCgpLmNsZWFy
QWxsKCk7CiAgICAgCiAgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBj
b21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bwog
ICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdl
IGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCiAgICAgLy8gdmVjdG9ycy4K
ICAgICAKLSAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ05vdEVtcHR5OwotICAgIG1f
Y2FuQWxsb2NhdGVCdXROb3RFbXB0eSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1f
bWFya2luZ1JldGlyZWQ7CisgICAgbV9iaXRzLmVtcHR5KCkgPSBtX2JpdHMubGl2ZSgpICYgfm1f
Yml0cy5tYXJraW5nTm90RW1wdHkoKTsKKyAgICBtX2JpdHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0
eSgpID0gbV9iaXRzLmxpdmUoKSAmIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIH5tX2JpdHMu
bWFya2luZ1JldGlyZWQoKTsKIAogICAgIGlmIChuZWVkc0Rlc3RydWN0aW9uKCkpIHsKICAgICAg
ICAgLy8gVGhlcmUgYXJlIHNvbWUgYmxvY2tzIHRoYXQgd2UgZGlkbid0IGFsbG9jYXRlIG91dCBv
ZiBpbiB0aGUgbGFzdCBjeWNsZSwgYnV0IHdlIHN3ZXB0IHRoZW0uIFRoaXMKQEAgLTI1OCw3ICsy
NDksNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKICAgICAgICAgLy8gZGVz
dHJ1Y3RvcnMgYWdhaW4uIFRoYXQncyBmaW5lIGJlY2F1c2Ugb2YgemFwcGluZy4gVGhlIG9ubHkg
dGltZSB3aGVuIHdlIGNhbm5vdCBmb3JnZXQgaXMgd2hlbgogICAgICAgICAvLyB3ZSBqdXN0IGFs
bG9jYXRlIGEgYmxvY2sgb3Igd2hlbiB3ZSBtb3ZlIGEgYmxvY2sgZnJvbSBvbmUgc2l6ZSBjbGFz
cyB0byBhbm90aGVyLiBUaGF0IGRvZXNuJ3QKICAgICAgICAgLy8gaGFwcGVuIGhlcmUuCi0gICAg
ICAgIG1fZGVzdHJ1Y3RpYmxlID0gbV9saXZlOworICAgICAgICBtX2JpdHMuZGVzdHJ1Y3RpYmxl
KCkgPSBtX2JpdHMubGl2ZSgpOwogICAgIH0KICAgICAKICAgICBpZiAoZmFsc2UpIHsKQEAgLTI2
OSwxNyArMjYwLDE3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogCiB2b2lk
IEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpCiB7Ci0g
ICAgbV91bnN3ZXB0IHw9IG1fZWRlbjsKKyAgICBtX2JpdHMudW5zd2VwdCgpIHw9IG1fYml0cy5l
ZGVuKCk7CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckZ1bGxD
b2xsZWN0aW9uKCkKIHsKLSAgICBtX3Vuc3dlcHQgPSBtX2xpdmU7CisgICAgbV9iaXRzLnVuc3dl
cHQoKSA9IG1fYml0cy5saXZlKCk7CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGly
ZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKCkKIHsKLSAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX3Vu
c3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOworICAgIG1fdW5zd2VwdEN1cnNv
ciA9IG1fYml0cy51bnN3ZXB0KCkuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOwogICAg
IGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKQEAgLTI4Nyw3
ICsyNzgsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2Nr
VG9Td2VlcCgpCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIHsKLSAgICBtX3Vuc3dl
cHQuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMudW5zd2VwdCgpLmZvckVhY2hTZXRCaXQoCiAg
ICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fYmxvY2tzW2luZGV4XTsKICAgICAgICAgICAgIGJsb2NrLT5zd2VlcChu
dWxscHRyKTsKQEAgLTI5Niw3ICsyODcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgp
CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNocmluaygpCiB7Ci0gICAgKG1fZW1wdHkgJiB+bV9k
ZXN0cnVjdGlibGUpLmZvckVhY2hTZXRCaXQoCisgICAgKG1fYml0cy5lbXB0eSgpICYgfm1fYml0
cy5kZXN0cnVjdGlibGUoKSkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKICAgICAgICAgICAgIG1hcmtlZFNwYWNlKCkuZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4
XSk7CiAgICAgICAgIH0pOwpAQCAtMzA3LDcgKzI5OCw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6
OmFzc2VydE5vVW5zd2VwdCgpCiAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgIGlmIChtX2JpdHMu
dW5zd2VwdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGRhdGFMb2co
IkFzc2VydGlvbiBmYWlsZWQ6IHVuc3dlcHQgbm90IGVtcHR5IGluICIsICp0aGlzLCAiLlxuIik7
CkBAIC0zMjksNyArMzIwLDcgQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IEJsb2NrRGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2sKICAgICAgICAgICAg
IGlmIChtX2RvbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBtX2luZGV4ID0g
bV9kaXJlY3RvcnkubV9tYXJraW5nTm90RW1wdHkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKKyAg
ICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCku
ZmluZEJpdChtX2luZGV4LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGly
ZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcsMTQgKzM0OCwxNCBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQogICAgIHVuc2ln
bmVkIG1heE5hbWVMZW5ndGggPSAwOwogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAg
ICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBj
b25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgIFsmXSAoYXV0bywgY29uc3QgY2hhciogbmFtZSkg
ewogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOwogICAgICAgICAg
ICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7CiAgICAg
ICAgIH0pOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgTm9M
b2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29u
c3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0gKGF1dG8gdmVjdG9yLCBjb25zdCBjaGFyKiBu
YW1lKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7IGkt
LTspCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAppbmRleCBhN2JjYWE2YjllYmQ0YmFkNjNkN2U3ODEx
MDkxOGUzZTQzNjM4N2QxLi44NmM3OGVkYmFlODFkZjIyYTQxOWU3MjdhNjlkYmRjOTk4YjIzODE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZhaWx1cmVN
b2RlLmgiCisjaW5jbHVkZSAiQmxvY2tEaXJlY3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAiQ2VsbEF0
dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2Nh
dG9yLmgiCkBAIC00NCwxOSArNDUsNiBAQCBjbGFzcyBJc29DZWxsU2V0OwogY2xhc3MgTWFya2Vk
U3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9SX0VBQ0hf
QkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykgXAotICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRo
ZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCi0gICAg
bWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5v
IGxpdmUgb2JqZWN0cy4gKi8gXAotICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAot
ICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkp
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAo
aS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwK
LSAgICBtYWNybyhkZXN0cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwg
YmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBtYWNybyhl
ZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3Rz
IHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKLSAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50
YWwgc3dlZXBlci4gKi9cCi0gICAgXAotICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcg
bWFya2luZy4gKi9cCi0gICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkp
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKLSAgICBt
YWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLwotCiAvLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxv
Y2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CiAvLwogLy8gICAgIGNh
bkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCkBAIC0xMTUsOSArMTAzLDkgQEAgY2xh
c3MgQmxvY2tEaXJlY3RvcnkgewogICAgIExvY2smIGJpdHZlY3RvckxvY2soKSB7IHJldHVybiBt
X2JpdHZlY3RvckxvY2s7IH0KIAogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09S
Uyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAotICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cy5pcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCk7IH0gXAogICAgIGJvb2wg
aXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1l
KGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IFwKLSAgICB2b2lkIHNldElzICMjIGNhcGl0YWxC
aXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7
IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAj
IyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgsIHZhbHVlKTsg
fSBcCiAgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tl
ciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJ
cyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KICAg
ICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNT
T1JTKQogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCkBAIC0xMjYsNyArMTE0
LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
IFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQo
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSwogICAgIH0KQEAgLTEzNSw3ICsxMjMsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0YWxCaXROYW1lKTsKICAgICAgICAgRk9SX0VBQ0hfQkxP
Q0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpAQCAtMTczLDEwICsxNjEsNyBAQCBj
bGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAKICAgICAvLyBNdXRhdG9yIHVzZXMgdGhpcyB0byBndWFy
ZCByZXNpemluZyB0aGUgYml0dmVjdG9ycy4gVGhvc2UgdGhpbmdzIGluIHRoZSBHQyB0aGF0IG1h
eSBydW4KICAgICAvLyBjb25jdXJyZW50bHkgdG8gdGhlIG11dGF0b3IgbXVzdCBsb2NrIHRoaXMg
d2hlbiBhY2Nlc3NpbmcgdGhlIGJpdHZlY3RvcnMuCi0jZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9C
SVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgIEZhc3RC
aXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOwotICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9S
WV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElPTikKLSN1bmRlZiBCTE9DS19ESVJF
Q1RPUllfQklUX0RFQ0xBUkFUSU9OCisgICAgQmxvY2tEaXJlY3RvcnlCaXRzIG1fYml0czsKICAg
ICBMb2NrIG1fYml0dmVjdG9yTG9jazsKICAgICBMb2NrIG1fbG9jYWxBbGxvY2F0b3JzTG9jazsK
ICAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNTM3ZTUxYTczM2Q3
ZWYyZTA4YzFlZjNjZmU4YjUwMDJmNzBlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApAQCAtMCwwICsxLDI0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEZPUl9F
QUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAv
KiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAor
ICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2
ZSBubyBsaXZlIG9iamVjdHMuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAq
L1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGly
ZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAq
LyBcCisgICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCisgICAgbWFj
cm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2Jq
ZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3Jl
bWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVy
aW5nIG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisg
ICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRz
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGJpdHNQZXJTZWdtZW50ID0gMzI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBzZWdtZW50U2hpZnQgPSA1OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgaW5kZXhNYXNrID0gKDFVIDw8IHNlZ21lbnRTaGlmdCkgLSAxOworICAgIHN0YXRpY19hc3Nl
cnQoKDEgPDwgc2VnbWVudFNoaWZ0KSA9PSBiaXRzUGVyU2VnbWVudCk7CisKKyNkZWZpbmUgQkxP
Q0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5UKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
ICsgMQorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZCbG9ja0RpcmVjdG9y
eUJpdEtpbmRzID0gMCBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9S
WV9CSVRfS0lORF9DT1VOVCk7CisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5U
CisKKyAgICBlbnVtIGNsYXNzIEtpbmQgeworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0tJ
TkRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBj
YXBpdGFsQml0TmFtZSwKKyAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9D
S19ESVJFQ1RPUllfQklUX0tJTkRfREVDTEFSQVRJT04pCisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZ
X0JJVF9LSU5EX0RFQ0xBUkFUSU9OCisgICAgfTsKKworICAgIHVzaW5nIFNlZ21lbnQgPSBzdGQ6
OmFycmF5PHVpbnQzMl90LCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHM+OworCisgICAg
dGVtcGxhdGU8S2luZCBraW5kPgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29y
ZFZpZXcgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHVzaW5nIFZpZXdUeXBlID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzsK
KworICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KCkgPSBkZWZhdWx0Owor
CisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgU2VnbWVudCog
c2VnbWVudHMsIHNpemVfdCBudW1CaXRzKQorICAgICAgICAgICAgOiBtX3NlZ21lbnRzKHNlZ21l
bnRzKQorICAgICAgICAgICAgLCBtX251bUJpdHMobnVtQml0cykKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9udW1CaXRzOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgd29y
ZChzaXplX3QgaW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51
bUJpdHMoKSkpOworICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHNbaW5kZXhdW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAgIH0KKworICAgICAgICB1aW50MzJfdCYgd29y
ZChzaXplX3QgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMo
KSkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VnbWVudCo+KG1fc2VnbWVudHMp
W2luZGV4XVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOworICAgICAgICB9CisKKyAgICAg
ICAgdm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBtX251bUJpdHM7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgY29u
c3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhdW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihraW5kKV0gPSAwOworICAgICAgICB9CisKKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JXb3JkVmlldyB2aWV3KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIGNvbnN0IFNlZ21lbnQqIG1fc2VnbWVudHMgeyBudWxscHRyIH07CisgICAgICAg
IHNpemVfdCBtX251bUJpdHMgeyAwIH07CisgICAgfTsKKworICAgIHRlbXBsYXRlPEtpbmQga2lu
ZD4KKyAgICB1c2luZyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXcgPSBXVEY6OkZhc3RCaXRW
ZWN0b3JJbXBsPEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8a2luZD4+OworCisgICAg
dGVtcGxhdGU8S2luZCBraW5kPgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVm
IGZpbmFsIDogcHVibGljIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPiB7CisgICAg
cHVibGljOgorICAgICAgICBleHBsaWNpdCBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZihCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+IHZpZXcpCisgICAgICAgICAgICA6IEJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPih2aWV3KQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3I9KGNvbnN0IFdURjo6RmFzdEJpdFZlY3Rv
ckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjpudW1CaXRzKCkgPT0gb3RoZXIubnVt
Qml0cygpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEJsb2NrRGlyZWN0b3J5Qml0
VmVjdG9yVmlldzxraW5kPjo6YXJyYXlMZW5ndGgoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCkud29yZChpKSA9
IG90aGVyLnVuc2FmZVdvcmRzKCkud29yZChpKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CisgICAg
ICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmJiBvcGVyYXRvcnw9KGNvbnN0IFdURjo6RmFz
dEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQorICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjpudW1CaXRzKCkgPT0g
b3RoZXIubnVtQml0cygpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6YXJyYXlMZW5ndGgoKTsgaS0tOykKKyAgICAgICAg
ICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCku
d29yZChpKSB8PSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAg
eworICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVX
b3JkcygpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBjbGFzcyBCaXRSZWZlcmVu
Y2UgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBCaXRSZWZlcmVuY2UoKSB7IH0KKwor
ICAgICAgICAgICAgQml0UmVmZXJlbmNlKHVpbnQzMl90KiB3b3JkLCB1aW50MzJfdCBtYXNrKQor
ICAgICAgICAgICAgICAgIDogbV93b3JkKHdvcmQpCisgICAgICAgICAgICAgICAgLCBtX21hc2so
bWFzaykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuICEhKCptX3dvcmQgJiBtX21hc2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBCaXRSZWZlcmVuY2UmIG9wZXJhdG9yPShib29sIHZhbHVlKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgKm1fd29yZCB8PSBt
X21hc2s7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAqbV93b3Jk
ICY9IH5tX21hc2s7CisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAg
fQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICB1aW50MzJfdCogbV93b3JkIHsgbnVs
bHB0ciB9OworICAgICAgICAgICAgdWludDMyX3QgbV9tYXNrIHsgMCB9OworICAgICAgICB9Owor
CisgICAgICAgIEJpdFJlZmVyZW5jZSBhdChzaXplX3QgaW5kZXgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjpudW1CaXRzKCkpOworICAgICAgICAgICAgcmV0dXJu
IEJpdFJlZmVyZW5jZSgmQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVX
b3JkcygpLndvcmQoaW5kZXggPj4gNSksIDEgPDwgKGluZGV4ICYgMzEpKTsKKyAgICAgICAgfQor
CisgICAgICAgIEJpdFJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKKyAgICAgICAgfQorICAgIH07CisKKyNk
ZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFs
Qml0TmFtZSkgICAgIFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRl
eCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gbV9zZWdtZW50c1tpbmRleCA+PiBz
ZWdtZW50U2hpZnRdW3N0YXRpY19jYXN0PHVuc2lnbmVkPihLaW5kOjpjYXBpdGFsQml0TmFtZSld
ICYgKDFVIDw8IChpbmRleCAmIGluZGV4TWFzaykpOyBcCisgICAgfSBcCisgICAgdm9pZCBzZXRJ
cyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIFwKKyAgICB7IFwK
KyAgICAgICAgdWludDMyX3QmIGJpdHMgPSBtX3NlZ21lbnRzW2luZGV4ID4+IHNlZ21lbnRTaGlm
dF1bc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEtpbmQ6OmNhcGl0YWxCaXROYW1lKV07IFwKKyAgICAg
ICAgaWYgKHZhbHVlKSBcCisgICAgICAgICAgICBiaXRzIHw9ICgxVSA8PCAoaW5kZXggJiBpbmRl
eE1hc2spKTsgXAorICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgIGJpdHMgJj0gfigxVSA8PCAo
aW5kZXggJiBpbmRleE1hc2spKTsgXAorICAgIH0gXAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVj
dG9yVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgY29uc3QgXAorICAg
IHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNh
cGl0YWxCaXROYW1lPihCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0
YWxCaXROYW1lPihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwKKyAgICB9IFwKKyAg
ICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJC
aXROYW1lKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JSZWY8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsg
XAorICAgIH0KKyAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9S
WV9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCisK
KyAgICB1bnNpZ25lZCBudW1CaXRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1CaXRzOyB9CisKKyAg
ICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBudW1CaXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQg
b2xkTnVtQml0cyA9IG1fbnVtQml0czsKKyAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKKyAg
ICAgICAgbV9zZWdtZW50cy5yZXNpemUoKG51bUJpdHMgKyBiaXRzUGVyU2VnbWVudCAtIDEpID4+
IHNlZ21lbnRTaGlmdCk7CisgICAgICAgIGlmIChudW1CaXRzIDwgb2xkTnVtQml0cyAmJiBudW1C
aXRzKSB7CisgICAgICAgICAgICAvLyBDbGVhciB0aGUgbGFzdCBzZWdtZW50LgorICAgICAgICAg
ICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHNbbnVtQml0cyA+PiBzZWdtZW50U2hpZnRdOwor
ICAgICAgICAgICAgdWludDMyX3QgbWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMVVMTCA8
PCAobnVtQml0cyAmIGluZGV4TWFzaykpIC0gMSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHM7ICsraW5k
ZXgpCisgICAgICAgICAgICAgICAgc2VnbWVudFtpbmRleF0gJj0gbWFzazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoU2Vn
bWVudChjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICAgICAg
ZnVuYyhpbmRleCsrLCBzZWdtZW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFNl
Z21lbnQ+IG1fc2VnbWVudHM7CisgICAgdW5zaWduZWQgbV9udW1CaXRzIHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5SW5saW5lcy5oCmluZGV4IDQxY2JiNDljMjY0OTU2NmRlY2RmNzgyMzgzYmVj
ODhjYTIyYmE1NzUuLjY4NGIxYThkODZjNGM3NTk3MGQ0ODY4Y2ZkNDBiYzY3OTZiMDBiMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5l
cy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAorICAgIG1f
Yml0cy5saXZlKCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsK
ICAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7CkBAIC00
MSw3ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaE5vdEVtcHR5Qmxv
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX21hcmtpbmdOb3RFbXB0eS5mb3JF
YWNoU2V0Qml0KAorICAgIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5mb3JFYWNoU2V0Qml0KAog
ICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nr
c1tpbmRleF0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldC5jcHAKaW5kZXggYWE2MmUxMWZkNDRmNmFiY2JiYmY0MjViODZmZGYxMTE4MGE4NDc5Yy4u
ODBhOWNlYjZhMzc5NmU5M2U0NmUzNzQxN2M5OWYyZWI2OGYwYTQ4MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPFNoYXJl
ZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1MKICAgICAgICAgICAgIGlmIChtX2RvbmUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7Ci0gICAgICAgICAgICBhdXRvIGJpdHMgPSBtX2RpcmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0
eSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJpdHM7CisgICAgICAgICAgICBhdXRvIGJpdHMgPSBtX2Rp
cmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX3NldC5tX2Jsb2Nrc1dpdGhCaXRz
OwogICAgICAgICAgICAgbV9pbmRleCA9IGJpdHMuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKICAg
ICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGlyZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkgewog
ICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAppbmRleCBmYzgxNjkyODdmMDU2NmJlZWI4OWQxOTg0
NzE5MTFhNGE3NTljNGUxLi5kYjdlOGFjYjU2MWIxZDIyZDQ3NjE2NWNiYzQwOGJjMzhmNjU2YzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgK
QEAgLTcwLDcgKzcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIHZvaWQgSXNvQ2VsbFNl
dDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBCbG9ja0RpcmVj
dG9yeSYgZGlyZWN0b3J5ID0gbV9zdWJzcGFjZS5tX2RpcmVjdG9yeTsKLSAgICAoZGlyZWN0b3J5
Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9ibG9ja3NXaXRoQml0cykuZm9yRWFjaFNldEJpdCgKKyAg
ICAoZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fYmxvY2tzV2l0aEJpdHMp
LmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGJsb2NrSW5kZXgpIHsKICAgICAg
ICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZGlyZWN0b3J5Lm1fYmxvY2tzW2Js
b2NrSW5kZXhdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAK
aW5kZXggYzZlMWY2Y2RmNTAyN2ZlMTQwZjY0NGVjYTQ5MTkwZjQ4NDhiMjVhMy4uOTc5ZTNjYWU2
OGM1MTBhYzQ1N2ZjZDI2YmVhNDY3NzQxODdiZmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgQ29tbWFQcmludGVy
IGNvbW1hOwogICAgIGRpcmVjdG9yeSgpLT5mb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAg
ICAgIGhvbGRMb2NrKGRpcmVjdG9yeSgpLT5iaXR2ZWN0b3JMb2NrKCkpLAotICAgICAgICBbJl0g
KEZhc3RCaXRWZWN0b3ImIGJpdHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICBb
Jl0gKGF1dG8gYml0dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIG5hbWUsICI6IiwgYml0dmVjdG9yW2luZGV4KCldID8gIllFUyIgOiAibm8i
KTsKICAgICAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggYThlZDZiODI4OTAw
ZmUwMjEzYmRlZDljNjM3NWM5N2IwYTM2Yzg1OS4uNDk0ZTY0ODlmZTRhMWRiMjJkYjI3NDY3ZTY5
MTcyYWEzNzIwMmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtNDIxLDYgKzQyMSw5IEBA
IGNsYXNzIEZhc3RCaXRWZWN0b3JJbXBsIHsKICAgICB9CiAgICAgCiAgICAgdHlwZW5hbWUgV29y
ZHM6OlZpZXdUeXBlIHdvcmRWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93b3Jkcy52aWV3KCk7IH0K
KworICAgIFdvcmRzJiB1bnNhZmVXb3JkcygpIHsgcmV0dXJuIG1fd29yZHM7IH0KKyAgICBjb25z
dCBXb3JkcyYgdW5zYWZlV29yZHMoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzOyB9CiAgICAgCiBw
cml2YXRlOgogICAgIC8vIFlvdSdkIHRoaW5rIHRoYXQgd2UgY291bGQgcmVtb3ZlIHRoaXMgZnJp
ZW5kIGlmIHdlIHVzZWQgcHJvdGVjdGVkLCBidXQgeW91J2QgYmUgd3JvbmcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383446</attachid>
            <date>2019-11-13 03:15:58 -0800</date>
            <delta_ts>2019-11-13 03:23:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113031558.patch</filename>
            <type>text/plain</type>
            <size>28717</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NTk5ZDI2YjE3NGNjMTM1NTAyZGI0ZDk1OWM1YTZlN2IxNjFkNDA5Li4wYWFlZmRkZjJhNTBiMDEz
M2I1NGVlYjE4YWYwY2IyNWU3NDZkMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OnJlbW92ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2lu
Z0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmVuZE1h
cmtpbmcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9y
RWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RV
bnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZmluZEJsb2NrVG9Td2VlcCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpzd2VlcCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzaHJpbmspOgorICAgICAgICAoSlNDOjpC
bG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9ja1NvdXJjZSk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjpkdW1wQml0cyk6CisgICAgICAgICogaGVhcC9CbG9ja0RpcmVjdG9yeS5oOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAg
ICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29y
ZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxs
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlC
aXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpy
ZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50
KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2NrKToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTb3VyY2UpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3Rh
dGUpOgorCiAyMDE5LTExLTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gUHV0IG1vcmUgdGhpbmdzIGluIElzb1N1YnNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU1ZTc5
NTE1YTJiZDE5YjM0MzUwZmE2OWRlOTkzOGVmYTY4ZTNlMWIuLmUxZDc4ZDNkYjFmZjUwOGQzY2M2
OTVhNjEyNmExNTVmMGM2ZTEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMTMgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBCbG9ja0Rp
cmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBhY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAg
KFdURjo6RmFzdEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzKToKKyAgICAgICAgKFdURjo6RmFz
dEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzIGNvbnN0KToKKwogMjAxOS0xMS0xMSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVVRDIG9mZnNldCBm
b3IgU2Ftb2EgaXMgbWlzY2FsY3VsYXRlZCB3aGVuICFIQVZFKFRJTUVHTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkY2ViM2ZjMDk5MDcyYWMzNjYxNmUxNjM2OTY2YjUz
YmI1Mzc1YmMyLi5iNmYwYWVkMzBlMjRkM2FmNWUzZGFhMWU5MjcyNWU0MmVlMTQzZWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjksNiArNTY5LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoZWFwL0FsbG9jYXRv
cklubGluZXMuaAogICAgIGhlYXAvQWxsb2NhdG9yRm9yTW9kZS5oCiAgICAgaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oCisgICAgaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAogICAgIGhlYXAvQmxvY2tE
aXJlY3RvcnlJbmxpbmVzLmgKICAgICBoZWFwL0NlbGxBdHRyaWJ1dGVzLmgKICAgICBoZWFwL0Nl
bGxDb250YWluZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tEaXJlY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuY3BwCmluZGV4IDdlZWU0YTg3NDZiNmJkMTg4NTJhN2FiNjI4NzRiYmFmNTdhYmUyODkuLmIx
MDcwNmY2M2VmY2JkNjIxOTkxZDYwMzdjMTg3MjZkNDRkMWVjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9v
bCBCbG9ja0RpcmVjdG9yeTo6aXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKQogCiBN
YXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFs
KCkKIHsKLSAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3Is
IHRydWUpOworICAgIG1fZW1wdHlDdXJzb3IgPSBtX2JpdHMuZW1wdHkoKS5maW5kQml0KG1fZW1w
dHlDdXJzb3IsIHRydWUpOwogICAgIGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1wdHlD
dXJzb3JdOwpAQCAtODUsNyArODUsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVj
dG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2Nr
RGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvY2F0
b3IpCiB7CiAgICAgZm9yICg7OykgewotICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vy
c29yID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQoYWxsb2Nh
dG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGFsbG9jYXRvci5tX2FsbG9j
YXRpb25DdXJzb3IgPSAobV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSB8IG1fYml0cy5l
bXB0eSgpKS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwogICAg
ICAgICBpZiAoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCkBAIC0xMTgsMjEgKzExOCwx
MiBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKICAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsK
ICAgICAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNh
cGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3Io
Ci0gICAgICAgICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICAgICAgICAgIFsm
XSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1C
aXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFj
aXR5KCkgPiBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fYml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRS
ZXNpemVCaXRzKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgZm9yRWFjaEJpdFZl
Y3RvcigKLSAgICAgICAgICAgICAgICBsb2NrZXIsCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0
Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZSht
X2Jsb2Nrcy5jYXBhY2l0eSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1f
Yml0cy5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOwpAQCAtMTQy
LDcgKzEzMyw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIE5vTG9j
a2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAg
ICAgICAgWyZdIChhdXRvIHZlY3RvcikgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0
b3IsICF2ZWN0b3JbaW5kZXhdKTsKICAgICAgICAgfSk7CiAKQEAgLTE2NSw3ICsxNTYsNyBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBob2xkTG9jayhtX2JpdHZl
Y3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAg
ICBbJl0gKGF1dG8gdmVjdG9yKSB7CiAgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCld
ID0gZmFsc2U7CiAgICAgICAgIH0pOwogICAgIApAQCAtMTkyLDcgKzE4Myw3IEBAIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKICAgICBtX3Vuc3dlcHRDdXJzb3Ig
PSAwOwogICAgIG1fZW1wdHlDdXJzb3IgPSAwOwogICAgIAotICAgIG1fZWRlbi5jbGVhckFsbCgp
OworICAgIG1fYml0cy5lZGVuKCkuY2xlYXJBbGwoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhp
cyB3b3JrIGFnYWluLgpAQCAtMjM3LDIwICsyMjgsMjAgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6
YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKQogICAgIC8vIE1hcmsgYml0cyBhcmUgc3Rp
Y2t5IGFuZCBzbyBpcyBvdXIgc3VtbWFyeSBvZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhl
c2UgZHVyaW5nIGZ1bGwKICAgICAvLyBjb2xsZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRo
ZSBsYXN0IGNvbGxlY3Rpb24geW91IHdpbGwgc3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZwog
ICAgIC8vIGFzIHRoZSBuZXh0IG9uZSBpcyBlZGVuLgotICAgIG1fbWFya2luZ05vdEVtcHR5LmNs
ZWFyQWxsKCk7Ci0gICAgbV9tYXJraW5nUmV0aXJlZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5t
YXJraW5nTm90RW1wdHkoKS5jbGVhckFsbCgpOworICAgIG1fYml0cy5tYXJraW5nUmV0aXJlZCgp
LmNsZWFyQWxsKCk7CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogewot
ICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLmFsbG9jYXRlZCgpLmNsZWFy
QWxsKCk7CiAgICAgCiAgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBj
b21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bwog
ICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdl
IGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCiAgICAgLy8gdmVjdG9ycy4K
ICAgICAKLSAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ05vdEVtcHR5OwotICAgIG1f
Y2FuQWxsb2NhdGVCdXROb3RFbXB0eSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1f
bWFya2luZ1JldGlyZWQ7CisgICAgbV9iaXRzLmVtcHR5KCkgPSBtX2JpdHMubGl2ZSgpICYgfm1f
Yml0cy5tYXJraW5nTm90RW1wdHkoKTsKKyAgICBtX2JpdHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0
eSgpID0gbV9iaXRzLmxpdmUoKSAmIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIH5tX2JpdHMu
bWFya2luZ1JldGlyZWQoKTsKIAogICAgIGlmIChuZWVkc0Rlc3RydWN0aW9uKCkpIHsKICAgICAg
ICAgLy8gVGhlcmUgYXJlIHNvbWUgYmxvY2tzIHRoYXQgd2UgZGlkbid0IGFsbG9jYXRlIG91dCBv
ZiBpbiB0aGUgbGFzdCBjeWNsZSwgYnV0IHdlIHN3ZXB0IHRoZW0uIFRoaXMKQEAgLTI1OCw3ICsy
NDksNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKICAgICAgICAgLy8gZGVz
dHJ1Y3RvcnMgYWdhaW4uIFRoYXQncyBmaW5lIGJlY2F1c2Ugb2YgemFwcGluZy4gVGhlIG9ubHkg
dGltZSB3aGVuIHdlIGNhbm5vdCBmb3JnZXQgaXMgd2hlbgogICAgICAgICAvLyB3ZSBqdXN0IGFs
bG9jYXRlIGEgYmxvY2sgb3Igd2hlbiB3ZSBtb3ZlIGEgYmxvY2sgZnJvbSBvbmUgc2l6ZSBjbGFz
cyB0byBhbm90aGVyLiBUaGF0IGRvZXNuJ3QKICAgICAgICAgLy8gaGFwcGVuIGhlcmUuCi0gICAg
ICAgIG1fZGVzdHJ1Y3RpYmxlID0gbV9saXZlOworICAgICAgICBtX2JpdHMuZGVzdHJ1Y3RpYmxl
KCkgPSBtX2JpdHMubGl2ZSgpOwogICAgIH0KICAgICAKICAgICBpZiAoZmFsc2UpIHsKQEAgLTI2
OSwxNyArMjYwLDE3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogCiB2b2lk
IEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpCiB7Ci0g
ICAgbV91bnN3ZXB0IHw9IG1fZWRlbjsKKyAgICBtX2JpdHMudW5zd2VwdCgpIHw9IG1fYml0cy5l
ZGVuKCk7CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckZ1bGxD
b2xsZWN0aW9uKCkKIHsKLSAgICBtX3Vuc3dlcHQgPSBtX2xpdmU7CisgICAgbV9iaXRzLnVuc3dl
cHQoKSA9IG1fYml0cy5saXZlKCk7CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGly
ZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKCkKIHsKLSAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX3Vu
c3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOworICAgIG1fdW5zd2VwdEN1cnNv
ciA9IG1fYml0cy51bnN3ZXB0KCkuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOwogICAg
IGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKQEAgLTI4Nyw3
ICsyNzgsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2Nr
VG9Td2VlcCgpCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIHsKLSAgICBtX3Vuc3dl
cHQuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMudW5zd2VwdCgpLmZvckVhY2hTZXRCaXQoCiAg
ICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fYmxvY2tzW2luZGV4XTsKICAgICAgICAgICAgIGJsb2NrLT5zd2VlcChu
dWxscHRyKTsKQEAgLTI5Niw3ICsyODcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgp
CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNocmluaygpCiB7Ci0gICAgKG1fZW1wdHkgJiB+bV9k
ZXN0cnVjdGlibGUpLmZvckVhY2hTZXRCaXQoCisgICAgKG1fYml0cy5lbXB0eSgpICYgfm1fYml0
cy5kZXN0cnVjdGlibGUoKSkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKICAgICAgICAgICAgIG1hcmtlZFNwYWNlKCkuZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4
XSk7CiAgICAgICAgIH0pOwpAQCAtMzA3LDcgKzI5OCw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6
OmFzc2VydE5vVW5zd2VwdCgpCiAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgIGlmIChtX2JpdHMu
dW5zd2VwdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGRhdGFMb2co
IkFzc2VydGlvbiBmYWlsZWQ6IHVuc3dlcHQgbm90IGVtcHR5IGluICIsICp0aGlzLCAiLlxuIik7
CkBAIC0zMjksNyArMzIwLDcgQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IEJsb2NrRGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2sKICAgICAgICAgICAg
IGlmIChtX2RvbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBtX2luZGV4ID0g
bV9kaXJlY3RvcnkubV9tYXJraW5nTm90RW1wdHkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKKyAg
ICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCku
ZmluZEJpdChtX2luZGV4LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGly
ZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcsMTQgKzM0OCwxNCBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQogICAgIHVuc2ln
bmVkIG1heE5hbWVMZW5ndGggPSAwOwogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAg
ICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBj
b25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgIFsmXSAoYXV0bywgY29uc3QgY2hhciogbmFtZSkg
ewogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOwogICAgICAgICAg
ICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7CiAgICAg
ICAgIH0pOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgTm9M
b2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29u
c3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0gKGF1dG8gdmVjdG9yLCBjb25zdCBjaGFyKiBu
YW1lKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7IGkt
LTspCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAppbmRleCBhN2JjYWE2YjllYmQ0YmFkNjNkN2U3ODEx
MDkxOGUzZTQzNjM4N2QxLi44NmM3OGVkYmFlODFkZjIyYTQxOWU3MjdhNjlkYmRjOTk4YjIzODE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZhaWx1cmVN
b2RlLmgiCisjaW5jbHVkZSAiQmxvY2tEaXJlY3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAiQ2VsbEF0
dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2Nh
dG9yLmgiCkBAIC00NCwxOSArNDUsNiBAQCBjbGFzcyBJc29DZWxsU2V0OwogY2xhc3MgTWFya2Vk
U3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9SX0VBQ0hf
QkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykgXAotICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRo
ZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCi0gICAg
bWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5v
IGxpdmUgb2JqZWN0cy4gKi8gXAotICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAot
ICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkp
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAo
aS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwK
LSAgICBtYWNybyhkZXN0cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwg
YmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBtYWNybyhl
ZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3Rz
IHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKLSAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50
YWwgc3dlZXBlci4gKi9cCi0gICAgXAotICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcg
bWFya2luZy4gKi9cCi0gICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkp
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKLSAgICBt
YWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLwotCiAvLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxv
Y2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CiAvLwogLy8gICAgIGNh
bkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCkBAIC0xMTUsOSArMTAzLDkgQEAgY2xh
c3MgQmxvY2tEaXJlY3RvcnkgewogICAgIExvY2smIGJpdHZlY3RvckxvY2soKSB7IHJldHVybiBt
X2JpdHZlY3RvckxvY2s7IH0KIAogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09S
Uyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAotICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cy5pcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCk7IH0gXAogICAgIGJvb2wg
aXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1l
KGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IFwKLSAgICB2b2lkIHNldElzICMjIGNhcGl0YWxC
aXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7
IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAj
IyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgsIHZhbHVlKTsg
fSBcCiAgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tl
ciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJ
cyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KICAg
ICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNT
T1JTKQogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCkBAIC0xMjYsNyArMTE0
LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
IFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQo
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSwogICAgIH0KQEAgLTEzNSw3ICsxMjMsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0YWxCaXROYW1lKTsKICAgICAgICAgRk9SX0VBQ0hfQkxP
Q0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpAQCAtMTczLDEwICsxNjEsNyBAQCBj
bGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAKICAgICAvLyBNdXRhdG9yIHVzZXMgdGhpcyB0byBndWFy
ZCByZXNpemluZyB0aGUgYml0dmVjdG9ycy4gVGhvc2UgdGhpbmdzIGluIHRoZSBHQyB0aGF0IG1h
eSBydW4KICAgICAvLyBjb25jdXJyZW50bHkgdG8gdGhlIG11dGF0b3IgbXVzdCBsb2NrIHRoaXMg
d2hlbiBhY2Nlc3NpbmcgdGhlIGJpdHZlY3RvcnMuCi0jZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9C
SVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgIEZhc3RC
aXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOwotICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9S
WV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElPTikKLSN1bmRlZiBCTE9DS19ESVJF
Q1RPUllfQklUX0RFQ0xBUkFUSU9OCisgICAgQmxvY2tEaXJlY3RvcnlCaXRzIG1fYml0czsKICAg
ICBMb2NrIG1fYml0dmVjdG9yTG9jazsKICAgICBMb2NrIG1fbG9jYWxBbGxvY2F0b3JzTG9jazsK
ICAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNzg3YzgwMjc1MmQ1
NGYxNzRjZjJmMDk0NjlhMGQ4MmM5M2ZjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApAQCAtMCwwICsxLDI0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEZPUl9F
QUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAv
KiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAor
ICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2
ZSBubyBsaXZlIG9iamVjdHMuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAq
L1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGly
ZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAq
LyBcCisgICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCisgICAgbWFj
cm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2Jq
ZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3Jl
bWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVy
aW5nIG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisg
ICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRz
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGJpdHNQZXJTZWdtZW50ID0gMzI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBzZWdtZW50U2hpZnQgPSA1OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgaW5kZXhNYXNrID0gKDFVIDw8IHNlZ21lbnRTaGlmdCkgLSAxOworICAgIHN0YXRpY19hc3Nl
cnQoKDEgPDwgc2VnbWVudFNoaWZ0KSA9PSBiaXRzUGVyU2VnbWVudCk7CisKKyNkZWZpbmUgQkxP
Q0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5UKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
ICsgMQorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZCbG9ja0RpcmVjdG9y
eUJpdEtpbmRzID0gMCBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9S
WV9CSVRfS0lORF9DT1VOVCk7CisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5U
CisKKyAgICBlbnVtIGNsYXNzIEtpbmQgeworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0tJ
TkRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBj
YXBpdGFsQml0TmFtZSwKKyAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9D
S19ESVJFQ1RPUllfQklUX0tJTkRfREVDTEFSQVRJT04pCisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZ
X0JJVF9LSU5EX0RFQ0xBUkFUSU9OCisgICAgfTsKKworICAgIGNsYXNzIFNlZ21lbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgU2VnbWVudCgpID0gZGVmYXVsdDsKKyAgICAgICAgc3RkOjphcnJh
eTx1aW50MzJfdCwgbnVtYmVyT2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRzPiBtX2RhdGEgeyB9Owor
ICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAgY2xhc3MgQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JXb3JkVmlldyB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgdXNpbmcgVmlld1R5cGUgPSBCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvcldvcmRWaWV3OworCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXco
KSA9IGRlZmF1bHQ7CisKKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldyhj
b25zdCBTZWdtZW50KiBzZWdtZW50cywgc2l6ZV90IG51bUJpdHMpCisgICAgICAgICAgICA6IG1f
c2VnbWVudHMoc2VnbWVudHMpCisgICAgICAgICAgICAsIG1fbnVtQml0cyhudW1CaXRzKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX251bUJpdHM7CisgICAgICAgIH0KKworICAgICAg
ICB1aW50MzJfdCB3b3JkKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBmYXN0Qml0VmVjdG9y
QXJyYXlMZW5ndGgobnVtQml0cygpKSk7CisgICAgICAgICAgICByZXR1cm4gbV9zZWdtZW50c1tp
bmRleF0ubV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAgIH0KKwor
ICAgICAgICB1aW50MzJfdCYgd29yZChzaXplX3QgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgZmFzdEJpdFZlY3Rv
ckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
U2VnbWVudCo+KG1fc2VnbWVudHMpW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGtpbmQpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2xlYXJBbGwoKQorICAgICAgICB7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgZmFzdEJpdFZlY3Rv
ckFycmF5TGVuZ3RoKG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgY29uc3Rf
Y2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oa2luZCldID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0
VmVjdG9yV29yZFZpZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9OworICAg
ICAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5k
IGtpbmQ+CisgICAgdXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RGOjpGYXN0
Qml0VmVjdG9ySW1wbDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+PjsKKwor
ICAgIHRlbXBsYXRlPEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
clJlZiBmaW5hbCA6IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4gewor
ICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYo
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPiB2aWV3KQorICAgICAgICAgICAg
OiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4odmlldykKKyAgICAgICAgeworICAg
ICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAgICAgICAg
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShjb25zdCBXVEY6OkZhc3RCaXRW
ZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVy
Lm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAg
ICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQo
aSkgPSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgor
ICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25zdCBXVEY6
OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygp
ID09IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAg
ICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3Jk
cygpLndvcmQoaSkgfD0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5z
YWZlV29yZHMoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgY2xhc3MgQml0UmVm
ZXJlbmNlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgQml0UmVmZXJlbmNlKCkgeyB9
CisKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSh1aW50MzJfdCogd29yZCwgdWludDMyX3QgbWFz
aykKKyAgICAgICAgICAgICAgICA6IG1fd29yZCh3b3JkKQorICAgICAgICAgICAgICAgICwgbV9t
YXNrKG1hc2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiAhISgqbV93b3JkICYgbV9tYXNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgQml0UmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2YWx1ZSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICptX3dvcmQg
fD0gbV9tYXNrOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKm1f
d29yZCAmPSB+bV9tYXNrOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgdWludDMyX3QqIG1fd29yZCB7
IG51bGxwdHIgfTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1fbWFzayB7IDAgfTsKKyAgICAgICAg
fTsKKworICAgICAgICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4KQorICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IEJsb2Nr
RGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBCaXRSZWZlcmVuY2UoJkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5z
YWZlV29yZHMoKS53b3JkKGluZGV4ID4+IDUpLCAxIDw8IChpbmRleCAmIDMxKSk7CisgICAgICAg
IH0KKworICAgICAgICBCaXRSZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAgICAgIH0KKyAgICB9Owor
CisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2Fw
aXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3Qg
aW5kZXgpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGxvd2VyQml0TmFtZSgpW2lu
ZGV4XTsgXAorICAgIH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90
IGluZGV4LCBib29sIHZhbHVlKSBcCisgICAgeyBcCisgICAgICAgIGxvd2VyQml0TmFtZSgpW2lu
ZGV4XSA9IHZhbHVlOyBcCisgICAgfSBcCisgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3
PEtpbmQ6OmNhcGl0YWxCaXROYW1lPiBsb3dlckJpdE5hbWUoKSBjb25zdCBcCisgICAgeyBcCisg
ICAgICAgIHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6Y2FwaXRhbEJp
dE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJpdE5h
bWU+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0gXAorICAgIEJsb2Nr
RGlyZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1lPiBsb3dlckJpdE5hbWUo
KSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxL
aW5kOjpjYXBpdGFsQml0TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5k
OjpjYXBpdGFsQml0TmFtZT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyBcCisgICAg
fQorICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9B
Q0NFU1NPUlMpCisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKKworICAgIHVu
c2lnbmVkIG51bUJpdHMoKSBjb25zdCB7IHJldHVybiBtX251bUJpdHM7IH0KKworICAgIHZvaWQg
cmVzaXplKHVuc2lnbmVkIG51bUJpdHMpCisgICAgeworICAgICAgICB1bnNpZ25lZCBvbGROdW1C
aXRzID0gbV9udW1CaXRzOworICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOworICAgICAgICBt
X3NlZ21lbnRzLnJlc2l6ZSgobnVtQml0cyArIGJpdHNQZXJTZWdtZW50IC0gMSkgPj4gc2VnbWVu
dFNoaWZ0KTsKKyAgICAgICAgaWYgKG51bUJpdHMgPCBvbGROdW1CaXRzICYmIG51bUJpdHMpIHsK
KyAgICAgICAgICAgIC8vIENsZWFyIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgICAgICAgICBhdXRv
JiBzZWdtZW50ID0gbV9zZWdtZW50c1tudW1CaXRzID4+IHNlZ21lbnRTaGlmdF07CisgICAgICAg
ICAgICB1aW50MzJfdCBtYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxVUxMIDw8IChudW1C
aXRzICYgaW5kZXhNYXNrKSkgLSAxKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kczsgKytpbmRleCkKKyAg
ICAgICAgICAgICAgICBzZWdtZW50Lm1fZGF0YVtpbmRleF0gJj0gbWFzazsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoU2Vn
bWVudChjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OworICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICAgICAg
ZnVuYyhpbmRleCsrLCBzZWdtZW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFNl
Z21lbnQ+IG1fc2VnbWVudHM7CisgICAgdW5zaWduZWQgbV9udW1CaXRzIHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5SW5saW5lcy5oCmluZGV4IDQxY2JiNDljMjY0OTU2NmRlY2RmNzgyMzgzYmVj
ODhjYTIyYmE1NzUuLjY4NGIxYThkODZjNGM3NTk3MGQ0ODY4Y2ZkNDBiYzY3OTZiMDBiMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5l
cy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAorICAgIG1f
Yml0cy5saXZlKCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsK
ICAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7CkBAIC00
MSw3ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaE5vdEVtcHR5Qmxv
Y2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX21hcmtpbmdOb3RFbXB0eS5mb3JF
YWNoU2V0Qml0KAorICAgIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5mb3JFYWNoU2V0Qml0KAog
ICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nr
c1tpbmRleF0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2Vs
bFNldC5jcHAKaW5kZXggYWE2MmUxMWZkNDRmNmFiY2JiYmY0MjViODZmZGYxMTE4MGE4NDc5Yy4u
ODBhOWNlYjZhMzc5NmU5M2U0NmUzNzQxN2M5OWYyZWI2OGYwYTQ4MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPFNoYXJl
ZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1w
dHlNYXJrZWRCbG9ja1MKICAgICAgICAgICAgIGlmIChtX2RvbmUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9j
ayk7Ci0gICAgICAgICAgICBhdXRvIGJpdHMgPSBtX2RpcmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0
eSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJpdHM7CisgICAgICAgICAgICBhdXRvIGJpdHMgPSBtX2Rp
cmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX3NldC5tX2Jsb2Nrc1dpdGhCaXRz
OwogICAgICAgICAgICAgbV9pbmRleCA9IGJpdHMuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKICAg
ICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGlyZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkgewog
ICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAppbmRleCBmYzgxNjkyODdmMDU2NmJlZWI4OWQxOTg0
NzE5MTFhNGE3NTljNGUxLi5kYjdlOGFjYjU2MWIxZDIyZDQ3NjE2NWNiYzQwOGJjMzhmNjU2YzJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgK
QEAgLTcwLDcgKzcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIHZvaWQgSXNvQ2VsbFNl
dDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBCbG9ja0RpcmVj
dG9yeSYgZGlyZWN0b3J5ID0gbV9zdWJzcGFjZS5tX2RpcmVjdG9yeTsKLSAgICAoZGlyZWN0b3J5
Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9ibG9ja3NXaXRoQml0cykuZm9yRWFjaFNldEJpdCgKKyAg
ICAoZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fYmxvY2tzV2l0aEJpdHMp
LmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGJsb2NrSW5kZXgpIHsKICAgICAg
ICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZGlyZWN0b3J5Lm1fYmxvY2tzW2Js
b2NrSW5kZXhdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAK
aW5kZXggYzZlMWY2Y2RmNTAyN2ZlMTQwZjY0NGVjYTQ5MTkwZjQ4NDhiMjVhMy4uOTc5ZTNjYWU2
OGM1MTBhYzQ1N2ZjZDI2YmVhNDY3NzQxODdiZmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgQ29tbWFQcmludGVy
IGNvbW1hOwogICAgIGRpcmVjdG9yeSgpLT5mb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAg
ICAgIGhvbGRMb2NrKGRpcmVjdG9yeSgpLT5iaXR2ZWN0b3JMb2NrKCkpLAotICAgICAgICBbJl0g
KEZhc3RCaXRWZWN0b3ImIGJpdHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICBb
Jl0gKGF1dG8gYml0dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIG5hbWUsICI6IiwgYml0dmVjdG9yW2luZGV4KCldID8gIllFUyIgOiAibm8i
KTsKICAgICAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggYThlZDZiODI4OTAw
ZmUwMjEzYmRlZDljNjM3NWM5N2IwYTM2Yzg1OS4uNDk0ZTY0ODlmZTRhMWRiMjJkYjI3NDY3ZTY5
MTcyYWEzNzIwMmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtNDIxLDYgKzQyMSw5IEBA
IGNsYXNzIEZhc3RCaXRWZWN0b3JJbXBsIHsKICAgICB9CiAgICAgCiAgICAgdHlwZW5hbWUgV29y
ZHM6OlZpZXdUeXBlIHdvcmRWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93b3Jkcy52aWV3KCk7IH0K
KworICAgIFdvcmRzJiB1bnNhZmVXb3JkcygpIHsgcmV0dXJuIG1fd29yZHM7IH0KKyAgICBjb25z
dCBXb3JkcyYgdW5zYWZlV29yZHMoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzOyB9CiAgICAgCiBw
cml2YXRlOgogICAgIC8vIFlvdSdkIHRoaW5rIHRoYXQgd2UgY291bGQgcmVtb3ZlIHRoaXMgZnJp
ZW5kIGlmIHdlIHVzZWQgcHJvdGVjdGVkLCBidXQgeW91J2QgYmUgd3JvbmcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383447</attachid>
            <date>2019-11-13 03:23:19 -0800</date>
            <delta_ts>2019-11-13 13:53:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113032318.patch</filename>
            <type>text/plain</type>
            <size>28732</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NTk5ZDI2YjE3NGNjMTM1NTAyZGI0ZDk1OWM1YTZlN2IxNjFkNDA5Li4wYWFlZmRkZjJhNTBiMDEz
M2I1NGVlYjE4YWYwY2IyNWU3NDZkMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OnJlbW92ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2lu
Z0ZvckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmVuZE1h
cmtpbmcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9y
RWRlbkNvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RV
bnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZmluZEJsb2NrVG9Td2VlcCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpzd2VlcCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzaHJpbmspOgorICAgICAgICAoSlNDOjpC
bG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9ja1NvdXJjZSk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjpkdW1wQml0cyk6CisgICAgICAgICogaGVhcC9CbG9ja0RpcmVjdG9yeS5oOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJpdFZlY3Rvcik6CisgICAgICAg
IChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUpOgorICAgICAg
ICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29y
ZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxs
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlC
aXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpy
ZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50
KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2NrKToKKyAgICAgICAgKiBoZWFwL0lzb0NlbGxTZXQu
Y3BwOgorICAgICAgICAoSlNDOjpJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTb3VyY2UpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwpOgorICAgICAgICAqIGhlYXAvTWFy
a2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3Rh
dGUpOgorCiAyMDE5LTExLTEyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0pTQ10gUHV0IG1vcmUgdGhpbmdzIGluIElzb1N1YnNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU1ZTc5
NTE1YTJiZDE5YjM0MzUwZmE2OWRlOTkzOGVmYTY4ZTNlMWIuLmUxZDc4ZDNkYjFmZjUwOGQzY2M2
OTVhNjEyNmExNTVmMGM2ZTEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMTMgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBCbG9ja0Rp
cmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBhY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAg
KFdURjo6RmFzdEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzKToKKyAgICAgICAgKFdURjo6RmFz
dEJpdFZlY3RvckltcGw6OnVuc2FmZVdvcmRzIGNvbnN0KToKKwogMjAxOS0xMS0xMSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVVRDIG9mZnNldCBm
b3IgU2Ftb2EgaXMgbWlzY2FsY3VsYXRlZCB3aGVuICFIQVZFKFRJTUVHTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkY2ViM2ZjMDk5MDcyYWMzNjYxNmUxNjM2OTY2YjUz
YmI1Mzc1YmMyLi5iNmYwYWVkMzBlMjRkM2FmNWUzZGFhMWU5MjcyNWU0MmVlMTQzZWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC01NjksNiArNTY5LDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoZWFwL0FsbG9jYXRv
cklubGluZXMuaAogICAgIGhlYXAvQWxsb2NhdG9yRm9yTW9kZS5oCiAgICAgaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oCisgICAgaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAogICAgIGhlYXAvQmxvY2tE
aXJlY3RvcnlJbmxpbmVzLmgKICAgICBoZWFwL0NlbGxBdHRyaWJ1dGVzLmgKICAgICBoZWFwL0Nl
bGxDb250YWluZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tEaXJlY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rv
cnkuY3BwCmluZGV4IDdlZWU0YTg3NDZiNmJkMTg4NTJhN2FiNjI4NzRiYmFmNTdhYmUyODkuLmIx
MDcwNmY2M2VmY2JkNjIxOTkxZDYwMzdjMTg3MjZkNDRkMWVjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9v
bCBCbG9ja0RpcmVjdG9yeTo6aXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKQogCiBN
YXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFs
KCkKIHsKLSAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJzb3Is
IHRydWUpOworICAgIG1fZW1wdHlDdXJzb3IgPSBtX2JpdHMuZW1wdHkoKS5maW5kQml0KG1fZW1w
dHlDdXJzb3IsIHRydWUpOwogICAgIGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1wdHlD
dXJzb3JdOwpAQCAtODUsNyArODUsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVj
dG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2Nr
RGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvY2F0
b3IpCiB7CiAgICAgZm9yICg7OykgewotICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vy
c29yID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQoYWxsb2Nh
dG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGFsbG9jYXRvci5tX2FsbG9j
YXRpb25DdXJzb3IgPSAobV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSB8IG1fYml0cy5l
bXB0eSgpKS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwogICAg
ICAgICBpZiAoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCkBAIC0xMTgsMjEgKzExOCwx
MiBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKICAgICAgICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsK
ICAgICAgICAgbV9ibG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNh
cGFjaXR5KCkgIT0gb2xkQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3Io
Ci0gICAgICAgICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICAgICAgICAgIFsm
XSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9V
TlVTRUQodmVjdG9yLCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1C
aXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFj
aXR5KCkgPiBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fYml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRS
ZXNpemVCaXRzKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgZm9yRWFjaEJpdFZl
Y3RvcigKLSAgICAgICAgICAgICAgICBsb2NrZXIsCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0
Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZSht
X2Jsb2Nrcy5jYXBhY2l0eSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1f
Yml0cy5yZXNpemUobV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2Ug
ewogICAgICAgICBpbmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOwpAQCAtMTQy
LDcgKzEzMyw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIE5vTG9j
a2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAg
ICAgICAgWyZdIChhdXRvIHZlY3RvcikgewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0
b3IsICF2ZWN0b3JbaW5kZXhdKTsKICAgICAgICAgfSk7CiAKQEAgLTE2NSw3ICsxNTYsNyBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBob2xkTG9jayhtX2JpdHZl
Y3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAg
ICBbJl0gKGF1dG8gdmVjdG9yKSB7CiAgICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCld
ID0gZmFsc2U7CiAgICAgICAgIH0pOwogICAgIApAQCAtMTkyLDcgKzE4Myw3IEBAIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKICAgICBtX3Vuc3dlcHRDdXJzb3Ig
PSAwOwogICAgIG1fZW1wdHlDdXJzb3IgPSAwOwogICAgIAotICAgIG1fZWRlbi5jbGVhckFsbCgp
OworICAgIG1fYml0cy5lZGVuKCkuY2xlYXJBbGwoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRp
b25zOjp1c2VJbW1vcnRhbE9iamVjdHMoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhp
cyB3b3JrIGFnYWluLgpAQCAtMjM3LDIwICsyMjgsMjAgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6
YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKQogICAgIC8vIE1hcmsgYml0cyBhcmUgc3Rp
Y2t5IGFuZCBzbyBpcyBvdXIgc3VtbWFyeSBvZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhl
c2UgZHVyaW5nIGZ1bGwKICAgICAvLyBjb2xsZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRo
ZSBsYXN0IGNvbGxlY3Rpb24geW91IHdpbGwgc3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZwog
ICAgIC8vIGFzIHRoZSBuZXh0IG9uZSBpcyBlZGVuLgotICAgIG1fbWFya2luZ05vdEVtcHR5LmNs
ZWFyQWxsKCk7Ci0gICAgbV9tYXJraW5nUmV0aXJlZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5t
YXJraW5nTm90RW1wdHkoKS5jbGVhckFsbCgpOworICAgIG1fYml0cy5tYXJraW5nUmV0aXJlZCgp
LmNsZWFyQWxsKCk7CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogewot
ICAgIG1fYWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLmFsbG9jYXRlZCgpLmNsZWFy
QWxsKCk7CiAgICAgCiAgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBj
b21wcmVoZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bwog
ICAgIC8vIGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdl
IGlzIGFscmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCiAgICAgLy8gdmVjdG9ycy4K
ICAgICAKLSAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ05vdEVtcHR5OwotICAgIG1f
Y2FuQWxsb2NhdGVCdXROb3RFbXB0eSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1f
bWFya2luZ1JldGlyZWQ7CisgICAgbV9iaXRzLmVtcHR5KCkgPSBtX2JpdHMubGl2ZSgpICYgfm1f
Yml0cy5tYXJraW5nTm90RW1wdHkoKTsKKyAgICBtX2JpdHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0
eSgpID0gbV9iaXRzLmxpdmUoKSAmIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIH5tX2JpdHMu
bWFya2luZ1JldGlyZWQoKTsKIAogICAgIGlmIChuZWVkc0Rlc3RydWN0aW9uKCkpIHsKICAgICAg
ICAgLy8gVGhlcmUgYXJlIHNvbWUgYmxvY2tzIHRoYXQgd2UgZGlkbid0IGFsbG9jYXRlIG91dCBv
ZiBpbiB0aGUgbGFzdCBjeWNsZSwgYnV0IHdlIHN3ZXB0IHRoZW0uIFRoaXMKQEAgLTI1OCw3ICsy
NDksNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKICAgICAgICAgLy8gZGVz
dHJ1Y3RvcnMgYWdhaW4uIFRoYXQncyBmaW5lIGJlY2F1c2Ugb2YgemFwcGluZy4gVGhlIG9ubHkg
dGltZSB3aGVuIHdlIGNhbm5vdCBmb3JnZXQgaXMgd2hlbgogICAgICAgICAvLyB3ZSBqdXN0IGFs
bG9jYXRlIGEgYmxvY2sgb3Igd2hlbiB3ZSBtb3ZlIGEgYmxvY2sgZnJvbSBvbmUgc2l6ZSBjbGFz
cyB0byBhbm90aGVyLiBUaGF0IGRvZXNuJ3QKICAgICAgICAgLy8gaGFwcGVuIGhlcmUuCi0gICAg
ICAgIG1fZGVzdHJ1Y3RpYmxlID0gbV9saXZlOworICAgICAgICBtX2JpdHMuZGVzdHJ1Y3RpYmxl
KCkgPSBtX2JpdHMubGl2ZSgpOwogICAgIH0KICAgICAKICAgICBpZiAoZmFsc2UpIHsKQEAgLTI2
OSwxNyArMjYwLDE3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogCiB2b2lk
IEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpCiB7Ci0g
ICAgbV91bnN3ZXB0IHw9IG1fZWRlbjsKKyAgICBtX2JpdHMudW5zd2VwdCgpIHw9IG1fYml0cy5l
ZGVuKCk7CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckZ1bGxD
b2xsZWN0aW9uKCkKIHsKLSAgICBtX3Vuc3dlcHQgPSBtX2xpdmU7CisgICAgbV9iaXRzLnVuc3dl
cHQoKSA9IG1fYml0cy5saXZlKCk7CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGly
ZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKCkKIHsKLSAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX3Vu
c3dlcHQuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOworICAgIG1fdW5zd2VwdEN1cnNv
ciA9IG1fYml0cy51bnN3ZXB0KCkuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOwogICAg
IGlmIChtX3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKQEAgLTI4Nyw3
ICsyNzgsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2Nr
VG9Td2VlcCgpCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIHsKLSAgICBtX3Vuc3dl
cHQuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMudW5zd2VwdCgpLmZvckVhY2hTZXRCaXQoCiAg
ICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jayA9IG1fYmxvY2tzW2luZGV4XTsKICAgICAgICAgICAgIGJsb2NrLT5zd2VlcChu
dWxscHRyKTsKQEAgLTI5Niw3ICsyODcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgp
CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNocmluaygpCiB7Ci0gICAgKG1fZW1wdHkgJiB+bV9k
ZXN0cnVjdGlibGUpLmZvckVhY2hTZXRCaXQoCisgICAgKG1fYml0cy5lbXB0eSgpICYgfm1fYml0
cy5kZXN0cnVjdGlibGUoKSkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKICAgICAgICAgICAgIG1hcmtlZFNwYWNlKCkuZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4
XSk7CiAgICAgICAgIH0pOwpAQCAtMzA3LDcgKzI5OCw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6
OmFzc2VydE5vVW5zd2VwdCgpCiAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgIGlmIChtX2JpdHMu
dW5zd2VwdCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGRhdGFMb2co
IkFzc2VydGlvbiBmYWlsZWQ6IHVuc3dlcHQgbm90IGVtcHR5IGluICIsICp0aGlzLCAiLlxuIik7
CkBAIC0zMjksNyArMzIwLDcgQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRs
ZSooKT4+IEJsb2NrRGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2sKICAgICAgICAgICAg
IGlmIChtX2RvbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBtX2luZGV4ID0g
bV9kaXJlY3RvcnkubV9tYXJraW5nTm90RW1wdHkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKKyAg
ICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCku
ZmluZEJpdChtX2luZGV4LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGly
ZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcsMTQgKzM0OCwxNCBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQogICAgIHVuc2ln
bmVkIG1heE5hbWVMZW5ndGggPSAwOwogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAg
ICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBj
b25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgIFsmXSAoYXV0bywgY29uc3QgY2hhciogbmFtZSkg
ewogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOwogICAgICAgICAg
ICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7CiAgICAg
ICAgIH0pOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgTm9M
b2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29u
c3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0gKGF1dG8gdmVjdG9yLCBjb25zdCBjaGFyKiBu
YW1lKSB7CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7IGkt
LTspCiAgICAgICAgICAgICAgICAgb3V0LnByaW50KCIgIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAppbmRleCBhN2JjYWE2YjllYmQ0YmFkNjNkN2U3ODEx
MDkxOGUzZTQzNjM4N2QxLi44NmM3OGVkYmFlODFkZjIyYTQxOWU3MjdhNjlkYmRjOTk4YjIzODE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZhaWx1cmVN
b2RlLmgiCisjaW5jbHVkZSAiQmxvY2tEaXJlY3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAiQ2VsbEF0
dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2Nh
dG9yLmgiCkBAIC00NCwxOSArNDUsNiBAQCBjbGFzcyBJc29DZWxsU2V0OwogY2xhc3MgTWFya2Vk
U3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9SX0VBQ0hf
QkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykgXAotICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRo
ZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCi0gICAg
bWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5v
IGxpdmUgb2JqZWN0cy4gKi8gXAotICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAot
ICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkp
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAo
aS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwK
LSAgICBtYWNybyhkZXN0cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwg
YmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBtYWNybyhl
ZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3Rz
IHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKLSAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50
YWwgc3dlZXBlci4gKi9cCi0gICAgXAotICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcg
bWFya2luZy4gKi9cCi0gICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkp
IC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKLSAgICBt
YWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLwotCiAvLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxv
Y2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CiAvLwogLy8gICAgIGNh
bkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCkBAIC0xMTUsOSArMTAzLDkgQEAgY2xh
c3MgQmxvY2tEaXJlY3RvcnkgewogICAgIExvY2smIGJpdHZlY3RvckxvY2soKSB7IHJldHVybiBt
X2JpdHZlY3RvckxvY2s7IH0KIAogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09S
Uyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAotICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cy5pcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCk7IH0gXAogICAgIGJvb2wg
aXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlzICMjIGNhcGl0YWxCaXROYW1l
KGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IFwKLSAgICB2b2lkIHNldElzICMjIGNhcGl0YWxC
aXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7
IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBcCisgICAgdm9pZCBzZXRJcyAj
IyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgsIHZhbHVlKTsg
fSBcCiAgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tl
ciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywgYm9vbCB2YWx1ZSkgeyBzZXRJ
cyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5pbmRleCgpLCB2YWx1ZSk7IH0KICAg
ICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNT
T1JTKQogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCkBAIC0xMjYsNyArMTE0
LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
IFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQo
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSwogICAgIH0KQEAgLTEzNSw3ICsxMjMsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0YWxCaXROYW1lKTsKICAgICAgICAgRk9SX0VBQ0hfQkxP
Q0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpAQCAtMTczLDEwICsxNjEsNyBAQCBj
bGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAKICAgICAvLyBNdXRhdG9yIHVzZXMgdGhpcyB0byBndWFy
ZCByZXNpemluZyB0aGUgYml0dmVjdG9ycy4gVGhvc2UgdGhpbmdzIGluIHRoZSBHQyB0aGF0IG1h
eSBydW4KICAgICAvLyBjb25jdXJyZW50bHkgdG8gdGhlIG11dGF0b3IgbXVzdCBsb2NrIHRoaXMg
d2hlbiBhY2Nlc3NpbmcgdGhlIGJpdHZlY3RvcnMuCi0jZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9C
SVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgIEZhc3RC
aXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOwotICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9S
WV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElPTikKLSN1bmRlZiBCTE9DS19ESVJF
Q1RPUllfQklUX0RFQ0xBUkFUSU9OCisgICAgQmxvY2tEaXJlY3RvcnlCaXRzIG1fYml0czsKICAg
ICBMb2NrIG1fYml0dmVjdG9yTG9jazsKICAgICBMb2NrIG1fbG9jYWxBbGxvY2F0b3JzTG9jazsK
ICAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiYzgyNzVjZGJhNTgz
MGFiMTk2YTVmZTZkNzE1MTM0MzgxYzBiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApAQCAtMCwwICsxLDI0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEZPUl9F
QUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAv
KiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAor
ICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2
ZSBubyBsaXZlIG9iamVjdHMuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAq
L1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGly
ZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAq
LyBcCisgICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCisgICAgbWFj
cm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2Jq
ZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3Jl
bWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVy
aW5nIG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisg
ICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRz
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGJpdHNQZXJTZWdtZW50ID0gMzI7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBzZWdtZW50U2hpZnQgPSA1OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgaW5kZXhNYXNrID0gKDFVIDw8IHNlZ21lbnRTaGlmdCkgLSAxOworICAgIHN0YXRpY19hc3Nl
cnQoKDEgPDwgc2VnbWVudFNoaWZ0KSA9PSBiaXRzUGVyU2VnbWVudCk7CisKKyNkZWZpbmUgQkxP
Q0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5UKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
ICsgMQorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZCbG9ja0RpcmVjdG9y
eUJpdEtpbmRzID0gMCBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9S
WV9CSVRfS0lORF9DT1VOVCk7CisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5U
CisKKyAgICBlbnVtIGNsYXNzIEtpbmQgeworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0tJ
TkRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAgICBj
YXBpdGFsQml0TmFtZSwKKyAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9D
S19ESVJFQ1RPUllfQklUX0tJTkRfREVDTEFSQVRJT04pCisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZ
X0JJVF9LSU5EX0RFQ0xBUkFUSU9OCisgICAgfTsKKworICAgIGNsYXNzIFNlZ21lbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgU2VnbWVudCgpID0gZGVmYXVsdDsKKyAgICAgICAgc3RkOjphcnJh
eTx1aW50MzJfdCwgbnVtYmVyT2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRzPiBtX2RhdGEgeyB9Owor
ICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAgY2xhc3MgQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JXb3JkVmlldyB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIHB1YmxpYzoKKyAgICAgICAgdXNpbmcgVmlld1R5cGUgPSBCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvcldvcmRWaWV3OworCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXco
KSA9IGRlZmF1bHQ7CisKKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldyhj
b25zdCBTZWdtZW50KiBzZWdtZW50cywgc2l6ZV90IG51bUJpdHMpCisgICAgICAgICAgICA6IG1f
c2VnbWVudHMoc2VnbWVudHMpCisgICAgICAgICAgICAsIG1fbnVtQml0cyhudW1CaXRzKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX251bUJpdHM7CisgICAgICAgIH0KKworICAgICAg
ICB1aW50MzJfdCB3b3JkKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBXVEY6OmZhc3RCaXRW
ZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBtX3NlZ21l
bnRzW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpXTsKKyAgICAgICAg
fQorCisgICAgICAgIHVpbnQzMl90JiB3b3JkKHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBXVEY6OmZh
c3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21lbnRzKVtpbmRleF0ubV9kYXRhW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihraW5kKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkK
KyAgICAgICAgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IFdU
Rjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAg
ICAgICAgICAgY29uc3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlz
OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsg
bnVsbHB0ciB9OworICAgICAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAg
ICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAgdXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JW
aWV3ID0gV1RGOjpGYXN0Qml0VmVjdG9ySW1wbDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRW
aWV3PGtpbmQ+PjsKKworICAgIHRlbXBsYXRlPEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvclJlZiBmaW5hbCA6IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
clZpZXc8a2luZD4geworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JSZWYoQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPiB2aWV3
KQorICAgICAgICAgICAgOiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4odmlldykK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJX
b3Jkcz4KKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShjb25z
dCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVt
Qml0cygpID09IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTsp
CisgICAgICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNh
ZmVXb3JkcygpLndvcmQoaSkgPSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0
b3J8PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxr
aW5kPjo6bnVtQml0cygpID09IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3Ro
KCk7IGktLTspCisgICAgICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtp
bmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkgfD0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkp
OworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBj
bGVhckFsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
VmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAg
ICAgY2xhc3MgQml0UmVmZXJlbmNlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgQml0
UmVmZXJlbmNlKCkgeyB9CisKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSh1aW50MzJfdCogd29y
ZCwgdWludDMyX3QgbWFzaykKKyAgICAgICAgICAgICAgICA6IG1fd29yZCh3b3JkKQorICAgICAg
ICAgICAgICAgICwgbV9tYXNrKG1hc2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiAhISgqbV93b3JkICYgbV9tYXNrKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgQml0UmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2YWx1ZSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgICptX3dvcmQgfD0gbV9tYXNrOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgKm1fd29yZCAmPSB+bV9tYXNrOworICAgICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgdWlu
dDMyX3QqIG1fd29yZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1fbWFzayB7
IDAgfTsKKyAgICAgICAgfTsKKworICAgICAgICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihpbmRleCA8IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpKTsK
KyAgICAgICAgICAgIHJldHVybiBCaXRSZWZlcmVuY2UoJkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
VmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS53b3JkKGluZGV4ID4+IDUpLCAxIDw8IChpbmRleCAm
IDMxKSk7CisgICAgICAgIH0KKworICAgICAgICBCaXRSZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXpl
X3QgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAg
ICAgIH0KKyAgICB9OworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxv
d2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFs
Qml0TmFtZShzaXplX3QgaW5kZXgpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGxv
d2VyQml0TmFtZSgpW2luZGV4XTsgXAorICAgIH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRh
bEJpdE5hbWUoc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSBcCisgICAgeyBcCisgICAgICAgIGxv
d2VyQml0TmFtZSgpW2luZGV4XSA9IHZhbHVlOyBcCisgICAgfSBcCisgICAgQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPiBsb3dlckJpdE5hbWUoKSBjb25z
dCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8
S2luZDo6Y2FwaXRhbEJpdE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2lu
ZDo6Y2FwaXRhbEJpdE5hbWU+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAg
IH0gXAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1l
PiBsb3dlckJpdE5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JXb3JkVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVt
Qml0cykpOyBcCisgICAgfQorICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tf
RElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMpCisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NF
U1NPUlMKKworICAgIHVuc2lnbmVkIG51bUJpdHMoKSBjb25zdCB7IHJldHVybiBtX251bUJpdHM7
IH0KKworICAgIHZvaWQgcmVzaXplKHVuc2lnbmVkIG51bUJpdHMpCisgICAgeworICAgICAgICB1
bnNpZ25lZCBvbGROdW1CaXRzID0gbV9udW1CaXRzOworICAgICAgICBtX251bUJpdHMgPSBudW1C
aXRzOworICAgICAgICBtX3NlZ21lbnRzLnJlc2l6ZSgobnVtQml0cyArIGJpdHNQZXJTZWdtZW50
IC0gMSkgPj4gc2VnbWVudFNoaWZ0KTsKKyAgICAgICAgaWYgKG51bUJpdHMgPCBvbGROdW1CaXRz
ICYmIG51bUJpdHMpIHsKKyAgICAgICAgICAgIC8vIENsZWFyIHRoZSBsYXN0IHNlZ21lbnQuCisg
ICAgICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9zZWdtZW50c1tudW1CaXRzID4+IHNlZ21lbnRT
aGlmdF07CisgICAgICAgICAgICB1aW50MzJfdCBtYXNrID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KCgxVUxMIDw8IChudW1CaXRzICYgaW5kZXhNYXNrKSkgLSAxKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5k
czsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBzZWdtZW50Lm1fZGF0YVtpbmRleF0gJj0gbWFz
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRz
KQorICAgICAgICAgICAgZnVuYyhpbmRleCsrLCBzZWdtZW50KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgVmVjdG9yPFNlZ21lbnQ+IG1fc2VnbWVudHM7CisgICAgdW5zaWduZWQgbV9udW1CaXRz
IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCmluZGV4IDQxY2JiNDljMjY0OTU2
NmRlY2RmNzgyMzgzYmVjODhjYTIyYmE1NzUuLjY4NGIxYThkODZjNGM3NTk3MGQ0ODY4Y2ZkNDBi
YzY3OTZiMDBiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5SW5saW5lcy5oCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZv
ckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fbGl2ZS5mb3JFYWNo
U2V0Qml0KAorICAgIG1fYml0cy5saXZlKCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChz
aXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKICAg
ICAgICAgfSk7CkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9y
RWFjaE5vdEVtcHR5QmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX21hcmtp
bmdOb3RFbXB0eS5mb3JFYWNoU2V0Qml0KAorICAgIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5m
b3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAg
ZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKaW5kZXggYWE2MmUxMWZkNDRmNmFiY2JiYmY0MjViODZm
ZGYxMTE4MGE4NDc5Yy4uODBhOWNlYjZhMzc5NmU5M2U0NmUzNzQxN2M5OWYyZWI2OGYwYTQ4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgUmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6
OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1MKICAgICAgICAgICAgIGlmIChtX2RvbmUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBhdXRvIGJpdHMgPSBtX2RpcmVjdG9yeS5t
X21hcmtpbmdOb3RFbXB0eSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJpdHM7CisgICAgICAgICAgICBh
dXRvIGJpdHMgPSBtX2RpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX3NldC5t
X2Jsb2Nrc1dpdGhCaXRzOwogICAgICAgICAgICAgbV9pbmRleCA9IGJpdHMuZmluZEJpdChtX2lu
ZGV4LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGlyZWN0b3J5Lm1fYmxv
Y2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAppbmRleCBmYzgxNjkyODdm
MDU2NmJlZWI4OWQxOTg0NzE5MTFhNGE3NTljNGUxLi5kYjdlOGFjYjU2MWIxZDIyZDQ3NjE2NWNi
YzQwOGJjMzhmNjU2YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXRJbmxpbmVzLmgKQEAgLTcwLDcgKzcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4K
IHZvaWQgSXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIHsK
ICAgICBCbG9ja0RpcmVjdG9yeSYgZGlyZWN0b3J5ID0gbV9zdWJzcGFjZS5tX2RpcmVjdG9yeTsK
LSAgICAoZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9ibG9ja3NXaXRoQml0cykuZm9y
RWFjaFNldEJpdCgKKyAgICAoZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1f
YmxvY2tzV2l0aEJpdHMpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGJsb2Nr
SW5kZXgpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZGlyZWN0
b3J5Lm1fYmxvY2tzW2Jsb2NrSW5kZXhdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5jcHAKaW5kZXggYzZlMWY2Y2RmNTAyN2ZlMTQwZjY0NGVjYTQ5MTkwZjQ4NDhi
MjVhMy4uOTc5ZTNjYWU2OGM1MTBhYzQ1N2ZjZDI2YmVhNDY3NzQxODdiZmJjZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAtMzc3LDcgKzM3Nyw3IEBA
IHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQpCiAg
ICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgIGRpcmVjdG9yeSgpLT5mb3JFYWNoQml0VmVjdG9y
V2l0aE5hbWUoCiAgICAgICAgIGhvbGRMb2NrKGRpcmVjdG9yeSgpLT5iaXR2ZWN0b3JMb2NrKCkp
LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIGJpdHZlY3RvciwgY29uc3QgY2hhciogbmFt
ZSkgeworICAgICAgICBbJl0gKGF1dG8gYml0dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAg
ICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5hbWUsICI6IiwgYml0dmVjdG9yW2luZGV4KCld
ID8gIllFUyIgOiAibm8iKTsKICAgICAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5k
ZXggYThlZDZiODI4OTAwZmUwMjEzYmRlZDljNjM3NWM5N2IwYTM2Yzg1OS4uNDk0ZTY0ODlmZTRh
MWRiMjJkYjI3NDY3ZTY5MTcyYWEzNzIwMmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAt
NDIxLDYgKzQyMSw5IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3JJbXBsIHsKICAgICB9CiAgICAgCiAg
ICAgdHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlIHdvcmRWaWV3KCkgY29uc3QgeyByZXR1cm4gbV93
b3Jkcy52aWV3KCk7IH0KKworICAgIFdvcmRzJiB1bnNhZmVXb3JkcygpIHsgcmV0dXJuIG1fd29y
ZHM7IH0KKyAgICBjb25zdCBXb3JkcyYgdW5zYWZlV29yZHMoKSBjb25zdCB7IHJldHVybiBtX3dv
cmRzOyB9CiAgICAgCiBwcml2YXRlOgogICAgIC8vIFlvdSdkIHRoaW5rIHRoYXQgd2UgY291bGQg
cmVtb3ZlIHRoaXMgZnJpZW5kIGlmIHdlIHVzZWQgcHJvdGVjdGVkLCBidXQgeW91J2QgYmUgd3Jv
bmcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383492</attachid>
            <date>2019-11-13 13:53:31 -0800</date>
            <delta_ts>2019-11-13 14:12:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113135331.patch</filename>
            <type>text/plain</type>
            <size>49416</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li4wMzY4YTRmMDQwNDMxMjZh
YjBiOTE0OGI3YTM5NGNlNDliYTQwMDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NiBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGhlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFwL0Fs
bG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpBbGxvY2F0b3I6OmFsbG9jYXRlIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0Rp
cmVjdG9yeTo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6cHJl
cGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YmVnaW5N
YXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dl
cHRGb3JFZGVuQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFw
c2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0
b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnN3
ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNocmluayk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrU291cmNlKToKKyAgICAgICAgKEpTQzo6
QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5
Lmg6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpjZWxsS2luZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpoZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0Jsb2Nr
RGlyZWN0b3J5Qml0cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
cldvcmRWaWV3KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvcldvcmRWaWV3OjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp3b3JkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3Ojp3b3JkKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpjbGVhckFsbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzo6
dmlldyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6bnVtQml0cyBj
b25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6cmVzaXplKToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpmb3JFYWNoU2VnbWVudCk6CisgICAgICAgICog
aGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNo
Tm90RW1wdHlCbG9jayk6CisgICAgICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyk6CisgICAgICAg
IChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyk6CisgICAgICAgICogaGVh
cC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNw
YWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldC5jcHA6
CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjpJc29TdWJzcGFjZSk6CisgICAg
ICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3Bh
Y2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Mb2NhbEFsbG9jYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQpOgor
ICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFwL0xvY2FsQWxs
b2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUp
OgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorCiAyMDE5LTExLTEzICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8g
YSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1NWU3OTUxNWEyYmQxOWIzNDM1MGZh
NjlkZTk5MzhlZmE2OGUzZTFiLi5lMWQ3OGQzZGIxZmY1MDhkM2NjNjk1YTYxMjZhMTU1ZjBjNmUx
MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQmxvY2tEaXJlY3RvcnkncyBiaXRzIHNo
b3VsZCBiZSBjb21wYWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDQxNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsOjp1bnNhZmVXb3Jkcyk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1
bnNhZmVXb3JkcyBjb25zdCk6CisKIDIwMTktMTEtMTEgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtp
cnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFVUQyBvZmZzZXQgZm9yIFNhbW9hIGlzIG1pc2Nh
bGN1bGF0ZWQgd2hlbiAhSEFWRShUSU1FR00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggZGNlYjNmYzA5OTA3MmFjMzY2MTZlMTYzNjk2NmI1M2JiNTM3NWJjMi4uYjZmMGFl
ZDMwZTI0ZDNhZjVlM2RhYTFlOTI3MjVlNDJlZTE0M2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNTY5LDYgKzU2OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKICAgICBo
ZWFwL0FsbG9jYXRvckZvck1vZGUuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnkuaAorICAgIGhl
YXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5o
CiAgICAgaGVhcC9DZWxsQXR0cmlidXRlcy5oCiAgICAgaGVhcC9DZWxsQ29udGFpbmVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGQyN2Q5ODEwMTQzNzg5NDRhM2ExNjI4NzVh
ODU1MzJhOTE2Y2JkNi4uMzYzYmVmNDE4MTg1NGZjOWZlMmU1OGQyOTJjYTI3ODljYmI4ODM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw3IEBACiAJCUUz
NkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZG
RDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0MTAwOUFC
RjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZp
ZWRJRElubGluZXMuaCAqLzsgfTsKKwkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8qIEJsb2Nr
RGlyZWN0b3J5Qml0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODkzQTFE
MjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg5M0ExQzIy
MDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICov
OyB9OwogCQlFMzhEOTk5QzIyMUI3OEJCMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGlibGVQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDk5
OUEyMjFCNzg5RjAwRDUwNDc0IC8qIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzkwMDYyMTIyMDhCRkM0
MDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTAwNjIwMjIwOEJGQzMwMDEwMTlDRiAvKiBTdWJzcGFjZUFj
Y2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00OTQ3LDYgKzQ5NDgsNyBAQAogCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9B
c3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3Jv
QXNzZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgwRDY2
QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElESW5saW5lcy5oOyBwYXRoID0gZGZnL0RG
R01pbmlmaWVkSURJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODY1
MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tEaXJlY3RvcnlCaXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjBDMUY4RTgx
NDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MTAyLDYgKzYxMDQsNyBAQAogCQkJCTBGQjQ2NzdFMUZEREE2RTUwMDNG
Q0IwOSAvKiBBdG9tSW5kaWNlcy5oICovLAogCQkJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAv
KiBCbG9ja0RpcmVjdG9yeS5jcHAgKi8sCiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8q
IEJsb2NrRGlyZWN0b3J5LmggKi8sCisJCQkJRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJs
b2NrRGlyZWN0b3J5Qml0cy5oICovLAogCQkJCTBGN0RGMTQ1MUUyQkVGNjgwMDk1OTUxQiAvKiBC
bG9ja0RpcmVjdG9yeUlubGluZXMuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkg
LyogQ2VsbEF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAv
KiBDZWxsQXR0cmlidXRlcy5oICovLApAQCAtOTAwOCw2ICs5MDExLDcgQEAKIAkJCQk4Njk3NkU1
RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3RvcnkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9y
eUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUxQiAvKiBC
bG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ2OTQz
OTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuY3BwCmluZGV4IGU3YzkzYzI2MzY3OTc3MGIyZDAxZGYyZGUwYmZlY2ZmODZmMWNjMDguLmVh
MzJkZjNjMGJjYzFkZTE3NmVjZmE4ZjZmMjdlMDI0YTAyOTU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCkBAIC00
MCwxMiArNDAsMTIgQEAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6fkFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IoKQogewogfQogCi12b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGly
ZWN0b3J5KEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkpCit2b2lkIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEhlYXAmIGhlYXAsIEJsb2NrRGlyZWN0b3J5KiBkaXJl
Y3RvcnkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWRpcmVjdG9yeS0+bmV4dERpcmVjdG9yeUlu
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICAKICAgICBpZiAobV9kaXJlY3Rvcmllcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBk
aXJlY3RvcnktPmhlYXAoKS0+d29ybGRJc1N0b3BwZWQoKSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoaGVhcCwgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAud29ybGRJc1N0b3BwZWQo
KSk7CiAgICAgICAgIGZvciAoU3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJzcGFjZXMuZmlyc3Qo
KTsgc3Vic3BhY2U7IHN1YnNwYWNlID0gc3Vic3BhY2UtPm5leHRTdWJzcGFjZUluQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcigpKQogICAgICAgICAgICAgc3Vic3BhY2UtPmRpZENyZWF0ZUZpcnN0RGly
ZWN0b3J5KGRpcmVjdG9yeSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCmluZGV4IDY2NDQyYWRmMzE4YTU2N2Q4MmFj
YzBkZjgyMjJlMzVjYTFiNTRhZGMuLjk1NjY5NjM1ZDhkZDUxMzFkOGVmYmFiY2FlYWU2YjBmZTdl
ZDFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1v
cnlBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBCbG9ja0RpcmVjdG9yeTsKK2NsYXNzIEhlYXA7CiBjbGFzcyBTdWJzcGFjZTsKIAogY2xhc3Mg
QWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IgewogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3QgPSAwOwogCi0gICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShCbG9ja0RpcmVjdG9y
eSopOworICAgIHZvaWQgcmVnaXN0ZXJEaXJlY3RvcnkoSGVhcCYsIEJsb2NrRGlyZWN0b3J5Kik7
CiAgICAgQmxvY2tEaXJlY3RvcnkqIGZpcnN0RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3Rvcmllcy5maXJzdCgpOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3Vic3BhY2UoU3Vic3Bh
Y2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKaW5kZXggMjI5MTU4ZmNl
NDIwZjFlNzk5MjA5ZGMxNDQ4YjgzMjE4MGEyZjc5YS4uNzIzOWQyMjlmY2U5MmJiYTA0NTQwMDNl
NDlkNTI4ZjA3ZTMyN2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgK
QEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBHQ0RlZmVycmFsQ29u
dGV4dDsKK2NsYXNzIEhlYXA7CiBjbGFzcyBMb2NhbEFsbG9jYXRvcjsKIAogLy8gVGhpcyBhYnN0
cmFjdHMgaG93IHdlIHJlZmVyIHRvIExvY2FsQWxsb2NhdG9yIHNvIHRoYXQgd2UgY291bGQgZXZl
bnR1YWxseSBzdXBwb3J0IHRocmVhZC1sb2NhbApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBBbGxv
Y2F0b3IgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZlcnJh
bENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpIGNvbnN0OworICAgIHZvaWQqIGFsbG9j
YXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSkgY29u
c3Q7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaAppbmRleCAxNzU3MzI3M2M0
OTlmYmM1OGE3YjRmZWJmZjdhMGQ5YmM5ZGQ0MmVmLi42OTViMDg5ZDhjNTcxYTdiYjA4MGM3ZDlj
MWVhNmZjODlkOGU4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2Nh
dG9ySW5saW5lcy5oCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdB
WVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqIGNv
bnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBtb2RlKSBjb25zdAorQUxXQVlTX0lOTElORSB2
b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBj
b250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9sb2NhbEFsbG9jYXRvci0+YWxsb2NhdGUoY29udGV4dCwgbW9kZSk7CisgICAgcmV0dXJuIG1f
bG9jYWxBbGxvY2F0b3ItPmFsbG9jYXRlKGhlYXAsIGNvbnRleHQsIG1vZGUpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0
b3J5LmNwcAppbmRleCA3ZWVlNGE4NzQ2YjZiZDE4ODUyYTdhYjYyODc0YmJhZjU3YWJlMjg5Li5l
ZjYwMGZkOTIxNmQ1NmM5ZTdhZGE3OWE4MTVjYjg0Yzk3YmNkODQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCkBAIC0zOCw5ICszOCw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1CbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkoSGVhcCog
aGVhcCwgc2l6ZV90IGNlbGxTaXplKQorQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5KHNp
emVfdCBjZWxsU2l6ZSkKICAgICA6IG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNl
bGxTaXplKSkKLSAgICAsIG1faGVhcChoZWFwKQogewogfQogCkBAIC03Niw3ICs3NSw3IEBAIGJv
b2wgQmxvY2tEaXJlY3Rvcnk6OmlzUGFnZWRPdXQoTW9ub3RvbmljVGltZSBkZWFkbGluZSkKIAog
TWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVh
bCgpCiB7Ci0gICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29y
LCB0cnVlKTsKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJpdChtX2Vt
cHR5Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5
Q3Vyc29yXTsKQEAgLTg1LDcgKzg0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJl
Y3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9j
a0RpcmVjdG9yeTo6ZmluZEJsb2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYgYWxsb2Nh
dG9yKQogewogICAgIGZvciAoOzspIHsKLSAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1
cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KGFsbG9j
YXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBhbGxvY2F0b3IubV9hbGxv
Y2F0aW9uQ3Vyc29yID0gKG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgfCBtX2JpdHMu
ZW1wdHkoKSkuZmluZEJpdChhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKICAg
ICAgICAgaWYgKGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAtOTYsMTEgKzk1LDEx
IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxv
Y2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvCiAgICAgfQogfQogCi1NYXJrZWRCbG9jazo6SGFu
ZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jaygpCitNYXJrZWRCbG9jazo6SGFu
ZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayhIZWFwJiBoZWFwKQogewogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hl
YXAsIHN1YnNwYWNlKCktPmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CisgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShoZWFwLCBzdWJzcGFj
ZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIGlmICghaGFuZGxlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKQEAgLTExOCwyMSArMTE3LDEyIEBAIHZvaWQgQmxvY2tE
aXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgICAgICBz
aXplX3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOwogICAgICAgICBtX2Jsb2Nr
cy5hcHBlbmQoYmxvY2spOwogICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRD
YXBhY2l0eSkgewotICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAgICAgICAgICAg
ICBOb0xvY2tpbmdOZWNlc3NhcnksCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9y
JiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsIHZl
Y3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBvbGRDYXBh
Y2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENhcGFj
aXR5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9iaXR2
ZWN0b3JMb2NrKTsKICAgICAgICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJpdHMobV9ibG9j
a3MuY2FwYWNpdHkoKSk7Ci0gICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAgICAgICAg
ICAgICAgIGxvY2tlciwKLSAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgewotICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5
KCkpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbV9iaXRzLnJlc2l6ZShtX2Js
b2Nrcy5jYXBhY2l0eSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGluZGV4
ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CkBAIC0xNDIsNyArMTMyLDcgQEAgdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAg
ICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigKICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAot
ICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICBbJl0gKGF1dG8g
dmVjdG9yKSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgIXZlY3RvcltpbmRl
eF0pOwogICAgICAgICB9KTsKIApAQCAtMTY1LDcgKzE1NSw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rv
cnk6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgIAogICAgIGZv
ckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIGhvbGRMb2NrKG1fYml0dmVjdG9yTG9jayksCi0gICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgIFsmXSAoYXV0byB2ZWN0
b3IpIHsKICAgICAgICAgICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKICAgICAg
ICAgfSk7CiAgICAgCkBAIC0xOTIsNyArMTgyLDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6cHJl
cGFyZUZvckFsbG9jYXRpb24oKQogICAgIG1fdW5zd2VwdEN1cnNvciA9IDA7CiAgICAgbV9lbXB0
eUN1cnNvciA9IDA7CiAgICAgCi0gICAgbV9lZGVuLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLmVk
ZW4oKS5jbGVhckFsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUltbW9ydGFs
T2JqZWN0cygpKSkgewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgYWdhaW4uCkBA
IC0yMzcsMjAgKzIyNywyMCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtpbmdGb3JG
dWxsQ29sbGVjdGlvbigpCiAgICAgLy8gTWFyayBiaXRzIGFyZSBzdGlja3kgYW5kIHNvIGlzIG91
ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0aGVzZSBkdXJpbmcgZnVsbAog
ICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhlIGxhc3QgY29sbGVjdGlv
biB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25nCiAgICAgLy8gYXMgdGhlIG5l
eHQgb25lIGlzIGVkZW4uCi0gICAgbV9tYXJraW5nTm90RW1wdHkuY2xlYXJBbGwoKTsKLSAgICBt
X21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgp
LmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtpbmdSZXRpcmVkKCkuY2xlYXJBbGwoKTsKIH0K
IAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiB7Ci0gICAgbV9hbGxvY2F0ZWQu
Y2xlYXJBbGwoKTsKKyAgICBtX2JpdHMuYWxsb2NhdGVkKCkuY2xlYXJBbGwoKTsKICAgICAKICAg
ICAvLyBJdCdzIHN1cnByaXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXByZWhlbmQsIGJ1dCB0
aGUgZW5kLW9mLW1hcmtpbmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCiAgICAgLy8ga25vdyB3aGF0
IGtpbmQgb2YgY29sbGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxyZWFkeSBlbmNv
ZGVkIGluIHRoZSBtX21hcmtpbmdYWVoKICAgICAvLyB2ZWN0b3JzLgogICAgIAotICAgIG1fZW1w
dHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7Ci0gICAgbV9jYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5ID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5nUmV0aXJlZDsK
KyAgICBtX2JpdHMuZW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiB+bV9iaXRzLm1hcmtpbmdOb3RF
bXB0eSgpOworICAgIG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgPSBtX2JpdHMubGl2
ZSgpICYgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgfm1fYml0cy5tYXJraW5nUmV0aXJlZCgp
OwogCiAgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgewogICAgICAgICAvLyBUaGVyZSBhcmUg
c29tZSBibG9ja3MgdGhhdCB3ZSBkaWRuJ3QgYWxsb2NhdGUgb3V0IG9mIGluIHRoZSBsYXN0IGN5
Y2xlLCBidXQgd2Ugc3dlcHQgdGhlbS4gVGhpcwpAQCAtMjU4LDcgKzI0OCw3IEBAIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogICAgICAgICAvLyBkZXN0cnVjdG9ycyBhZ2Fpbi4g
VGhhdCdzIGZpbmUgYmVjYXVzZSBvZiB6YXBwaW5nLiBUaGUgb25seSB0aW1lIHdoZW4gd2UgY2Fu
bm90IGZvcmdldCBpcyB3aGVuCiAgICAgICAgIC8vIHdlIGp1c3QgYWxsb2NhdGUgYSBibG9jayBv
ciB3aGVuIHdlIG1vdmUgYSBibG9jayBmcm9tIG9uZSBzaXplIGNsYXNzIHRvIGFub3RoZXIuIFRo
YXQgZG9lc24ndAogICAgICAgICAvLyBoYXBwZW4gaGVyZS4KLSAgICAgICAgbV9kZXN0cnVjdGli
bGUgPSBtX2xpdmU7CisgICAgICAgIG1fYml0cy5kZXN0cnVjdGlibGUoKSA9IG1fYml0cy5saXZl
KCk7CiAgICAgfQogICAgIAogICAgIGlmIChmYWxzZSkgewpAQCAtMjY5LDE3ICsyNTksMTcgQEAg
dm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6
OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKIHsKLSAgICBtX3Vuc3dlcHQgfD0g
bV9lZGVuOworICAgIG1fYml0cy51bnN3ZXB0KCkgfD0gbV9iaXRzLmVkZW4oKTsKIH0KIAogdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24oKQogewot
ICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKKyAgICBtX2JpdHMudW5zd2VwdCgpID0gbV9iaXRzLmxp
dmUoKTsKIH0KIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9j
a1RvU3dlZXAoKQogewotICAgIG1fdW5zd2VwdEN1cnNvciA9IG1fdW5zd2VwdC5maW5kQml0KG1f
dW5zd2VwdEN1cnNvciwgdHJ1ZSk7CisgICAgbV91bnN3ZXB0Q3Vyc29yID0gbV9iaXRzLnVuc3dl
cHQoKS5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CiAgICAgaWYgKG1fdW5zd2VwdEN1
cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBtX2Jsb2Nrc1ttX3Vuc3dlcHRDdXJzb3JdOwpAQCAtMjg3LDcgKzI3Nyw3IEBAIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKCkKIAogdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogewotICAgIG1fdW5zd2VwdC5mb3JFYWNoU2V0Qml0
KAorICAgIG1fYml0cy51bnN3ZXB0KCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXpl
X3QgaW5kZXgpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9i
bG9ja3NbaW5kZXhdOwogICAgICAgICAgICAgYmxvY2stPnN3ZWVwKG51bGxwdHIpOwpAQCAtMjk2
LDcgKzI4Niw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIAogdm9pZCBCbG9ja0Rp
cmVjdG9yeTo6c2hyaW5rKCkKIHsKLSAgICAobV9lbXB0eSAmIH5tX2Rlc3RydWN0aWJsZSkuZm9y
RWFjaFNldEJpdCgKKyAgICAobV9iaXRzLmVtcHR5KCkgJiB+bV9iaXRzLmRlc3RydWN0aWJsZSgp
KS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAg
ICAgbWFya2VkU3BhY2UoKS5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7
CkBAIC0zMDcsNyArMjk3LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0
KCkKICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
aWYgKG1fdW5zd2VwdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fYml0cy51bnN3ZXB0KCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxl
ZDogdW5zd2VwdCBub3QgZW1wdHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKQEAgLTMyOSw3ICszMTks
NyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gQmxvY2tEaXJl
Y3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9jawogICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tX21h
cmtpbmdOb3RFbXB0eS5maW5kQml0KG1faW5kZXgsIHRydWUpOworICAgICAgICAgICAgbV9pbmRl
eCA9IG1fZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5maW5kQml0KG1faW5kZXgs
IHRydWUpOwogICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3RvcnkubV9ibG9ja3Mu
c2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1NywxNCArMzQ3LDE0IEBAIHZvaWQgQmxvY2tEaXJlY3Rv
cnk6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCiAgICAgdW5zaWduZWQgbWF4TmFtZUxlbmd0
aCA9IDA7CiAgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAgICBOb0xvY2tpbmdO
ZWNlc3NhcnksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0IGNoYXIqIG5hbWUp
IHsKKyAgICAgICAgWyZdIChhdXRvLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CiAgICAgICAgICAgICBtYXhOYW1lTGVuZ3Ro
ID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgCiAg
ICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAgICBOb0xvY2tpbmdOZWNlc3Nhcnks
Ci0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7
CisgICAgICAgIFsmXSAoYXV0byB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAg
ICAgIG91dC5wcmludCgiICAgICIsIG5hbWUsICI6ICIpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbWF4TmFtZUxlbmd0aCAtIHN0cmxlbihuYW1lKTsgaS0tOykKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Jsb2NrRGlyZWN0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oCmluZGV4IGE3YmNhYTZiOWViZDRiYWQ2M2Q3ZTc4MTEwOTE4ZTNlNDM2Mzg3ZDEu
LjAyODg4MGIyN2RjZDUyYzg1MDRkNjYxY2ExYzc0MDBkYzJiYzI1YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaApAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCIKKyNpbmNsdWRl
ICJCbG9ja0RpcmVjdG9yeUJpdHMuaCIKICNpbmNsdWRlICJDZWxsQXR0cmlidXRlcy5oIgogI2lu
Y2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxvY2F0b3IuaCIKQEAgLTQ0LDE5
ICs0NSw2IEBAIGNsYXNzIElzb0NlbGxTZXQ7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotI2RlZmluZSBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllf
QklUKG1hY3JvKSBcCi0gICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBp
bmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKLSAgICBtYWNybyhlbXB0eSwgRW1w
dHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzLiAq
LyBcCi0gICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCi0gICAgbWFjcm8oY2FuQWxs
b2NhdGVCdXROb3RFbXB0eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIGFyZSBuZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBtb3JlIHRo
YW4gbWluTWFya2VkQmxvY2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAotICAgIG1hY3JvKGRlc3Ry
dWN0aWJsZSwgRGVzdHJ1Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBtYXkg
aGF2ZSBkZXN0cnVjdG9ycyB0byBydW4uICovXAotICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRo
ZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxhc3Qg
R0MuICovXAotICAgIG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wK
LSAgICBcCi0gICAgLyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKLSAg
ICBtYWNybyhtYXJraW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBlbXB0eS4gKi8gXAotICAgIG1hY3JvKG1hcmtpbmdSZXRp
cmVkLCBNYXJraW5nUmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJl
dGlyZWQuICovCi0KIC8vIEZJWE1FOiBXZSBkZWZpbmVkIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkg
YW5kIGVtcHR5IHRvIGJlIGV4Y2x1c2l2ZToKIC8vCiAvLyAgICAgY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSAmIGVtcHR5ID09IDAKQEAgLTc4LDcgKzY2LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3Rvcnkg
ewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1YmxpYzoKLSAg
ICBCbG9ja0RpcmVjdG9yeShIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICBCbG9ja0RpcmVj
dG9yeShzaXplX3QgY2VsbFNpemUpOwogICAgIH5CbG9ja0RpcmVjdG9yeSgpOwogICAgIHZvaWQg
c2V0U3Vic3BhY2UoU3Vic3BhY2UqKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7
CkBAIC05OCw3ICs4Niw2IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0g
TmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQogICAgIEhlYXBDZWxsOjpL
aW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOyB9Ci0g
ICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogCiAgICAgYm9vbCBpc0ZyZWVMaXN0
ZWRDZWxsKGNvbnN0IHZvaWQqIHRhcmdldCk7CiAKQEAgLTExNSw5ICsxMDIsOSBAQCBjbGFzcyBC
bG9ja0RpcmVjdG9yeSB7CiAgICAgTG9jayYgYml0dmVjdG9yTG9jaygpIHsgcmV0dXJuIG1fYml0
dmVjdG9yTG9jazsgfQogCiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxv
d2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCi0gICAgYm9vbCBpcyAjIyBjYXBpdGFs
Qml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFs
Qml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzLmlzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4KTsgfSBcCiAgICAgYm9vbCBpcyAj
IyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUobG9j
a2VyLCBibG9jay0+aW5kZXgoKSk7IH0gXAotICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8g
IyMgbG93ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNh
cGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZh
bHVlKSB7IG1fYml0cy5zZXRJcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCwgdmFsdWUpOyB9IFwK
ICAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMj
IGNhcGl0YWxCaXROYW1lKGxvY2tlciwgYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQogICAgIEZP
Ul9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMp
CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKQEAgLTEyNiw3ICsxMTMsNyBA
QCBjbGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NL
X0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAot
ICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxv
d2VyQml0TmFtZSgpKTsKICAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9D
S19ESVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0NB
TExCQUNLCiAgICAgfQpAQCAtMTM1LDcgKzEyMiw3IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsK
ICAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYs
IGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0NB
TExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICAgICAgZnVuYyhtXyAj
IyBsb3dlckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxv
d2VyQml0TmFtZSgpLCAjY2FwaXRhbEJpdE5hbWUpOwogICAgICAgICBGT1JfRUFDSF9CTE9DS19E
SVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NL
X0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sKICAgICB9CkBAIC0xNjYsMTcgKzE1MywxNCBAQCBjbGFz
cyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJs
b2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYpOwogICAgIAotICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0
cnlBbGxvY2F0ZUJsb2NrKEhlYXAmKTsKICAgICAKICAgICBWZWN0b3I8TWFya2VkQmxvY2s6Okhh
bmRsZSo+IG1fYmxvY2tzOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxvY2tJbmRpY2Vz
OwogCiAgICAgLy8gTXV0YXRvciB1c2VzIHRoaXMgdG8gZ3VhcmQgcmVzaXppbmcgdGhlIGJpdHZl
Y3RvcnMuIFRob3NlIHRoaW5ncyBpbiB0aGUgR0MgdGhhdCBtYXkgcnVuCiAgICAgLy8gY29uY3Vy
cmVudGx5IHRvIHRoZSBtdXRhdG9yIG11c3QgbG9jayB0aGlzIHdoZW4gYWNjZXNzaW5nIHRoZSBi
aXR2ZWN0b3JzLgotI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKGxvd2Vy
Qml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2Vy
Qml0TmFtZTsKLSAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9S
WV9CSVRfREVDTEFSQVRJT04pCi0jdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElP
TgorICAgIEJsb2NrRGlyZWN0b3J5Qml0cyBtX2JpdHM7CiAgICAgTG9jayBtX2JpdHZlY3Rvckxv
Y2s7CiAgICAgTG9jayBtX2xvY2FsQWxsb2NhdG9yc0xvY2s7CiAgICAgQ2VsbEF0dHJpYnV0ZXMg
bV9hdHRyaWJ1dGVzOwpAQCAtMTkwLDcgKzE3NCw2IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsK
ICAgICAKICAgICAvLyBGSVhNRTogQWxsIG9mIHRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSByZWZl
cmVuY2VzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjY5ODgKLSAgICBIZWFwKiBtX2hlYXAgeyBudWxscHRyIH07CiAgICAgU3Vic3BhY2UqIG1fc3Vi
c3BhY2UgeyBudWxscHRyIH07CiAgICAgQmxvY2tEaXJlY3RvcnkqIG1fbmV4dERpcmVjdG9yeSB7
IG51bGxwdHIgfTsKICAgICBCbG9ja0RpcmVjdG9yeSogbV9uZXh0RGlyZWN0b3J5SW5TdWJzcGFj
ZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnlCaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc2YTU4NjE3NjFlZTFiMGE2Nzk0MjJhZTNlYTgwNjhi
NWQzYjVlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5Qml0cy5oCkBAIC0wLDAgKzEsMjQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxhcnJh
eT4KKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZ
X0JJVChtYWNybykgXAorICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sg
aW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cy4g
Ki8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFs
bG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0
aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBtYWNybyhkZXN0
cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgbWF5
IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0
IEdDLiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9c
CisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisg
ICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0
aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBy
ZXRpcmVkLiAqLworCitjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0
c1BlclNlZ21lbnQgPSAzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNlZ21lbnRT
aGlmdCA9IDU7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleE1hc2sgPSAoMVUg
PDwgc2VnbWVudFNoaWZ0KSAtIDE7CisgICAgc3RhdGljX2Fzc2VydCgoMSA8PCBzZWdtZW50U2hp
ZnQpID09IGJpdHNQZXJTZWdtZW50KTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0tJ
TkRfQ09VTlQobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgKyAxCisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHMgPSAwIEZPUl9F
QUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5UKTsK
KyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQKKworICAgIGVudW0gY2xhc3Mg
S2luZCB7CisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTihsb3dl
ckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgICAgIGNhcGl0YWxCaXROYW1lLAorICAg
ICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lO
RF9ERUNMQVJBVElPTikKKyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfREVDTEFSQVRJ
T04KKyAgICB9OworCisgICAgY2xhc3MgU2VnbWVudCB7CisgICAgcHVibGljOgorICAgICAgICBT
ZWdtZW50KCkgPSBkZWZhdWx0OworICAgICAgICBzdGQ6OmFycmF5PHVpbnQzMl90LCBudW1iZXJP
ZkJsb2NrRGlyZWN0b3J5Qml0S2luZHM+IG1fZGF0YSB7IH07CisgICAgfTsKKworICAgIHRlbXBs
YXRlPEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAg
ICB1c2luZyBWaWV3VHlwZSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc7CisKKyAg
ICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldygpID0gZGVmYXVsdDsKKworICAg
ICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KGNvbnN0IFNlZ21lbnQqIHNlZ21l
bnRzLCBzaXplX3QgbnVtQml0cykKKyAgICAgICAgICAgIDogbV9zZWdtZW50cyhzZWdtZW50cykK
KyAgICAgICAgICAgICwgbV9udW1CaXRzKG51bUJpdHMpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIHNpemVfdCBudW1CaXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fbnVtQml0czsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHdvcmQoc2l6
ZV90IGluZGV4KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBX
VEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3NlZ21lbnRzW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQp
XTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90JiB3b3JkKHNpemVfdCBpbmRleCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgV1RGOjpmYXN0Qml0VmVjdG9yQXJy
YXlMZW5ndGgobnVtQml0cygpKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxTZWdt
ZW50Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2lu
ZCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0
b3JBcnJheUxlbmd0aChudW1CaXRzKCkpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIGNvbnN0
X2Nhc3Q8U2VnbWVudCo+KG1fc2VnbWVudHMpW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGtpbmQpXSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3IHZpZXcoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgY29uc3QgU2VnbWVudCogbV9zZWdtZW50cyB7IG51bGxwdHIgfTsKKyAg
ICAgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8S2lu
ZCBraW5kPgorICAgIHVzaW5nIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldyA9IFdURjo6RmFz
dEJpdFZlY3RvckltcGw8QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPj47CisK
KyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAgY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JSZWYgZmluYWwgOiBwdWJsaWMgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVm
KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8a2luZD4gdmlldykKKyAgICAgICAgICAg
IDogQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+KHZpZXcpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CisgICAgICAg
IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpGYXN0Qml0
VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMoKSA9PSBvdGhl
ci5udW1CaXRzKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjphcnJheUxlbmd0aCgpOyBpLS07KQorICAgICAgICAgICAg
ICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS53b3Jk
KGkpID0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAgICAgcmV0dXJuICp0
aGlzOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4K
KyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yfD0oY29uc3QgV1RG
OjpGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVChCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMo
KSA9PSBvdGhlci5udW1CaXRzKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmxv
Y2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjphcnJheUxlbmd0aCgpOyBpLS07KQorICAg
ICAgICAgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29y
ZHMoKS53b3JkKGkpIHw9IG90aGVyLnVuc2FmZVdvcmRzKCkud29yZChpKTsKKyAgICAgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2xlYXJBbGwoKQorICAg
ICAgICB7CisgICAgICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVu
c2FmZVdvcmRzKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNsYXNzIEJpdFJl
ZmVyZW5jZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSgpIHsg
fQorCisgICAgICAgICAgICBCaXRSZWZlcmVuY2UodWludDMyX3QqIHdvcmQsIHVpbnQzMl90IG1h
c2spCisgICAgICAgICAgICAgICAgOiBtX3dvcmQod29yZCkKKyAgICAgICAgICAgICAgICAsIG1f
bWFzayhtYXNrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gISEoKm1fd29yZCAmIG1fbWFzayk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIEJpdFJlZmVyZW5jZSYgb3BlcmF0b3I9KGJvb2wgdmFsdWUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAqbV93b3Jk
IHw9IG1fbWFzazsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICpt
X3dvcmQgJj0gfm1fbWFzazsKKyAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIHVpbnQzMl90KiBtX3dvcmQg
eyBudWxscHRyIH07CisgICAgICAgICAgICB1aW50MzJfdCBtX21hc2sgeyAwIH07CisgICAgICAg
IH07CisKKyAgICAgICAgQml0UmVmZXJlbmNlIGF0KHNpemVfdCBpbmRleCkKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtp
bmQ+OjpudW1CaXRzKCkpOworICAgICAgICAgICAgcmV0dXJuIEJpdFJlZmVyZW5jZSgmQmxvY2tE
aXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaW5kZXggPj4g
NSksIDEgPDwgKGluZGV4ICYgMzEpKTsKKyAgICAgICAgfQorCisgICAgICAgIEJpdFJlZmVyZW5j
ZSBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGF0KGluZGV4KTsKKyAgICAgICAgfQorICAgIH07CisKKyNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZ
X0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKKyAgICBi
b29sIGlzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCkgY29uc3QgXAorICAgIHsgXAor
ICAgICAgICByZXR1cm4gbG93ZXJCaXROYW1lKClbaW5kZXhdOyBcCisgICAgfSBcCisgICAgdm9p
ZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIFwKKyAg
ICB7IFwKKyAgICAgICAgbG93ZXJCaXROYW1lKClbaW5kZXhdID0gdmFsdWU7IFwKKyAgICB9IFwK
KyAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+IGxv
d2VyQml0TmFtZSgpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRW
ZWN0b3JXb3JkVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4obV9zZWdtZW50cy5kYXRhKCksIG1f
bnVtQml0cykpOyBcCisgICAgfSBcCisgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2lu
ZDo6Y2FwaXRhbEJpdE5hbWU+IGxvd2VyQml0TmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0
dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21l
bnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwKKyAgICB9CisgICAgRk9SX0VBQ0hfQkxPQ0tfRElS
RUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBCTE9DS19E
SVJFQ1RPUllfQklUX0FDQ0VTU09SUworCisgICAgdW5zaWduZWQgbnVtQml0cygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtQml0czsgfQorCisgICAgdm9pZCByZXNpemUodW5zaWduZWQgbnVtQml0cykK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIG9sZE51bUJpdHMgPSBtX251bUJpdHM7CisgICAgICAg
IG1fbnVtQml0cyA9IG51bUJpdHM7CisgICAgICAgIG1fc2VnbWVudHMucmVzaXplKChudW1CaXRz
ICsgYml0c1BlclNlZ21lbnQgLSAxKSA+PiBzZWdtZW50U2hpZnQpOworICAgICAgICBpZiAobnVt
Qml0cyA8IG9sZE51bUJpdHMgJiYgbnVtQml0cykgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhl
IGxhc3Qgc2VnbWVudC4KKyAgICAgICAgICAgIGF1dG8mIHNlZ21lbnQgPSBtX3NlZ21lbnRzW251
bUJpdHMgPj4gc2VnbWVudFNoaWZ0XTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oKDFVTEwgPDwgKG51bUJpdHMgJiBpbmRleE1hc2spKSAtIDEpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZCbG9j
a0RpcmVjdG9yeUJpdEtpbmRzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIHNlZ21lbnQubV9k
YXRhW2luZGV4XSAmPSBtYXNrOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmMmIGZ1bmMpCisg
ICAgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoYXV0byYgc2Vn
bWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgICAgICBmdW5jKGluZGV4KyssIHNlZ21lbnQpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICB1
bnNpZ25lZCBtX251bUJpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKaW5k
ZXggNDFjYmI0OWMyNjQ5NTY2ZGVjZGY3ODIzODNiZWM4OGNhMjJiYTU3NS4uNjg0YjFhOGQ4NmM0
Yzc1OTcwZDQ4NjhjZmQ0MGJjNjc5NmIwMGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBC
bG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0g
ICAgbV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLmxpdmUoKS5mb3JFYWNoU2V0Qml0
KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Js
b2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2so
Y29uc3QgRnVuY3QKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJs
b2NrRGlyZWN0b3J5Ojpmb3JFYWNoTm90RW1wdHlCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewotICAgIG1fbWFya2luZ05vdEVtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLm1h
cmtpbmdOb3RFbXB0eSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4
KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRl
eCAyY2I5NTJmNjc4MmU3ZGI4MDU0NzcxNTM5ZDU5ZWRiOWE4OTQxMmJjLi42YzA0ZmNlOWIyOWMz
YTE4M2VhN2U3OGYwZTU0NDc3YTcyYzdhZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtNzksNyArNzksNyBAQCBBbGxvY2F0b3Ig
Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAo
ZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxs
b2NhdG9yIGZvciAiLCBtX25hbWUsICIsICIsIGF0dHJpYnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNz
LCAiLlxuIik7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlx
dWVEaXJlY3RvcnkgPSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwg
c2l6ZUNsYXNzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURp
cmVjdG9yeSA9IG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KHNpemVDbGFzcyk7CiAgICAgQmxv
Y2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQoKTsKICAgICBtX2Rp
cmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwogICAgIApAQCAtMTA1
LDcgKzEwNSw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93
KHNpemVfdCBzaXplKQogICAgIH0KICAgICAKICAgICBkaXJlY3RvcnktPnNldE5leHREaXJlY3Rv
cnlJblN1YnNwYWNlKG1fZmlyc3REaXJlY3RvcnkpOwotICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9j
YXRvci0+cmVnaXN0ZXJEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlB
bGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KCptX3NwYWNlLmhlYXAoKSwgZGlyZWN0b3J5KTsK
ICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIG1fZmlyc3REaXJlY3RvcnkgPSBkaXJl
Y3Rvcnk7CiAgICAgcmV0dXJuIGFsbG9jYXRvcjsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkKiBD
b21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NE
ZWZlcnJhbENvbnRleHQqCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKICAgICBp
ZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzaXplLCBBbGxvY2F0b3JGb3JN
b2RlOjpFbnN1cmVBbGxvY2F0b3IpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRl
KGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgCiAgICAgaWYgKHNpemUg
PD0gT3B0aW9uczo6cHJlY2lzZUFsbG9jYXRpb25DdXRvZmYoKQogICAgICAgICAmJiBzaXplIDw9
IE1hcmtlZFNwYWNlOjpsYXJnZUN1dG9mZikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggZWFjZTJhNmY1Yzg3Nzlh
ZmRmMDYxNjBhMzgxNzhiY2M5OTMyMmY0MC4uODcxZGYyYjI3ODhkM2FlYTE3Y2FiM2Q5YzJhZjVj
NjQ2YTUzYWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxl
dGVTdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21w
bGV0ZVN1YnNwYWNlSW5saW5lcy5oCkBAIC0zNiw3ICszNiw3IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNp
emUsIEdDCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOwog
CiAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNp
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkKLSAgICAgICAgcmV0dXJu
IGFsbG9jYXRvci5hbGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICAg
ICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIGZh
aWx1cmVNb2RlKTsKICAgICByZXR1cm4gYWxsb2NhdGVTbG93KHZtLCBzaXplLCBkZWZlcnJhbENv
bnRleHQsIGZhaWx1cmVNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29D
ZWxsU2V0LmNwcAppbmRleCBhYTYyZTExZmQ0NGY2YWJjYmJiZjQyNWI4NmZkZjExMTgwYTg0Nzlj
Li44MGE5Y2ViNmEzNzk2ZTkzZTQ2ZTM3NDE3Yzk5ZjJlYjY4ZjBhNDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8U2hh
cmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RF
bXB0eU1hcmtlZEJsb2NrUwogICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9s
b2NrKTsKLSAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVt
cHR5ICYgbV9zZXQubV9ibG9ja3NXaXRoQml0czsKKyAgICAgICAgICAgIGF1dG8gYml0cyA9IG1f
ZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJp
dHM7CiAgICAgICAgICAgICBtX2luZGV4ID0gYml0cy5maW5kQml0KG1faW5kZXgsIHRydWUpOwog
ICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3RvcnkubV9ibG9ja3Muc2l6ZSgpKSB7
CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCmluZGV4IGZjODE2OTI4N2YwNTY2YmVlYjg5ZDE5
ODQ3MTkxMWE0YTc1OWM0ZTEuLmRiN2U4YWNiNTYxYjFkMjJkNDc2MTY1Y2JjNDA4YmMzOGY2NTZj
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMu
aApAQCAtNzAsNyArNzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIEJsb2NrRGly
ZWN0b3J5JiBkaXJlY3RvcnkgPSBtX3N1YnNwYWNlLm1fZGlyZWN0b3J5OwotICAgIChkaXJlY3Rv
cnkubV9tYXJraW5nTm90RW1wdHkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0Qml0KAor
ICAgIChkaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9ibG9ja3NXaXRoQml0
cykuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgewogICAg
ICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3Nb
YmxvY2tJbmRleF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNw
cAppbmRleCA0NTNlNjAyMzNkNjExZDQ3YzMxN2JiNzNkY2I5YjI2NmU5MDk2Y2U0Li43ZjFmNTE3
ZDNhMGJhMjQ5NjA1YTM2ZDZmNWM1YTk2YWIwYWQzZDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVh
cENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplLCB1aW50OF90IG51bWJlck9mTG93
ZXJUaWVyQ2VsbHMpCiAgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwKQogICAgICwgbV9zaXplKHNp
emUpCi0gICAgLCBtX2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1h
cmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCisgICAgLCBtX2RpcmVjdG9yeShXVEY6OnJvdW5k
VXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAsIG1fbG9j
YWxBbGxvY2F0b3IoJm1fZGlyZWN0b3J5KQogICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKICAgICAsIG1fcmVt
YWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpCkBAIC01MCw3
ICs1MCw3IEBAIElzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhl
YXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzCiAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3NwYWNlLmRpcmVjdG9yeUxvY2soKSk7CiAgICAgbV9kaXJlY3Rvcnkuc2V0U3Vic3Bh
Y2UodGhpcyk7CiAgICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9yeShsb2NrZXIsICZtX2RpcmVj
dG9yeSk7Ci0gICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeSgm
bV9kaXJlY3RvcnkpOworICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJEaXJl
Y3RvcnkoaGVhcCwgJm1fZGlyZWN0b3J5KTsKICAgICBtX2ZpcnN0RGlyZWN0b3J5ID0gJm1fZGly
ZWN0b3J5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
SW5saW5lcy5oCmluZGV4IDA1MThhN2ZlMDYyZDYwOTE2OWQ3YmMzZjc1M2M1ODRkYzRlZWNmNzAu
LjA0ZTgyYzMzZjYwZmQyYTRlZWQ2ZGU0MGExNTY2Y2UzYjBlYTU4MDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCkBAIC0yNywxMSArMjcs
MTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogSXNvU3Vic3Bh
Y2U6OmFsbG9jYXRlTm9uVmlydHVhbChWTSYsIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4
dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCitB
TFdBWVNfSU5MSU5FIHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZt
LCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHNpemUg
PT0gdGhpcy0+c2l6ZSgpKTsKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9y
Tm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpNdXN0QWxyZWFkeUhhdmVBbGxvY2F0
b3IpOwotICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci5hbGxvY2F0ZShkZWZlcnJhbENvbnRl
eHQsIGZhaWx1cmVNb2RlKTsKKyAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUo
dm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxv
Y2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3Bw
CmluZGV4IDUzZTA1MDhhYjJmZjAxY2Y0ZDQ5YTdmZjA3MDE3NzFmMGYwYWM0YWQuLmY1NTU3MWM4
NmNmYjJlMGFlNGNiZDFlMGFlMjdmZGI4NTBiZDBmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKQEAgLTExMCwxMiArMTEwLDExIEBAIHZvaWQg
TG9jYWxBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nRm9yR29vZCgpCiAgICAgcmVzZXQoKTsKIH0K
IAotdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRl
eHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQor
dm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoSGVhcCYgaGVhcCwgR0NEZWZl
cnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1
cmVNb2RlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNl
KTsKLSAgICBIZWFwJiBoZWFwID0gKm1fZGlyZWN0b3J5LT5tX2hlYXA7CiAgICAgQVNTRVJUKGhl
YXAudm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBkb1Rlc3RDb2xs
ZWN0aW9uc0lmTmVlZGVkKGRlZmVycmFsQ29udGV4dCk7CisgICAgZG9UZXN0Q29sbGVjdGlvbnNJ
Zk5lZWRlZChoZWFwLCBkZWZlcnJhbENvbnRleHQpOwogCiAgICAgQVNTRVJUKCFtX2RpcmVjdG9y
eS0+bWFya2VkU3BhY2UoKS5pc0l0ZXJhdGluZygpKTsKICAgICBoZWFwLmRpZEFsbG9jYXRlKG1f
ZnJlZUxpc3Qub3JpZ2luYWxTaXplKCkpOwpAQCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQqIExvY2Fs
QWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENv
bnRleHQsIEFsbG9jCiAgICAgLy8gR29vZnkgY29ybmVyIGNhc2U6IHRoZSBHQyBjYWxsZWQgYSBj
YWxsYmFjayBhbmQgbm93IHRoaXMgZGlyZWN0b3J5IGhhcyBhIGN1cnJlbnRCbG9jay4gVGhpcyBv
bmx5CiAgICAgLy8gaGFwcGVucyB3aGVuIHJ1bm5pbmcgV2ViS2l0IHRlc3RzLCB3aGljaCBpbmpl
Y3QgYSBjYWxsYmFjayBpbnRvIHRoZSBHQydzIGZpbmFsaXphdGlvbi4KICAgICBpZiAoVU5MSUtF
TFkobV9jdXJyZW50QmxvY2spKQotICAgICAgICByZXR1cm4gYWxsb2NhdGUoZGVmZXJyYWxDb250
ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZShoZWFwLCBkZWZlcnJh
bENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICAKICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxv
Y2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCkBAIC0xNDIsNyArMTQxLDcgQEAgdm9pZCog
TG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVy
cmFsQ29udGV4dCwgQWxsb2MKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9kaXJlY3RvcnktPnRyeUFsbG9j
YXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fZGlyZWN0b3J5
LT50cnlBbGxvY2F0ZUJsb2NrKGhlYXApOwogICAgIGlmICghYmxvY2spIHsKICAgICAgICAgaWYg
KGZhaWx1cmVNb2RlID09IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KQogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI0OSwxOCArMjQ4LDE4IEBAIHZv
aWQqIExvY2FsQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVz
dENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkK
K3ZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoSGVhcCYgaGVh
cCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBpZiAoIU9wdGlv
bnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcygpKQogICAgICAgICByZXR1cm47CiAKICAgICBz
dGF0aWMgdW5zaWduZWQgYWxsb2NhdGlvbkNvdW50ID0gMDsKICAgICBpZiAoIWFsbG9jYXRpb25D
b3VudCkgewotICAgICAgICBpZiAoIW1fZGlyZWN0b3J5LT5tX2hlYXAtPmlzRGVmZXJyZWQoKSkg
eworICAgICAgICBpZiAoIWhlYXAuaXNEZWZlcnJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoZGVm
ZXJyYWxDb250ZXh0KQogICAgICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRH
QyA9IHRydWU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kaXJlY3Rvcnkt
Pm1faGVhcC0+Y29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOworICAgICAg
ICAgICAgICAgIGhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwog
ICAgICAgICB9CiAgICAgfQogICAgIGlmICgrK2FsbG9jYXRpb25Db3VudCA+PSBPcHRpb25zOjpz
bG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvci5oCmluZGV4IDQzNzI3M2YzNjY4MGU0YTgwOTY4N2NkZjhjOGU0YThjZjRl
Y2MxYWQuLjliNjUxYjA3MDM3NjgxNGYyYTM5N2JiMmExODZlZDcwMDA5OWQzODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaApAQCAtMzQsNiArMzQsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQmxvY2tEaXJlY3Rvcnk7CiBjbGFzcyBHQ0RlZmVy
cmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiAKIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTG9jYWxBbGxvY2F0b3IpOwpAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBMb2NhbEFs
bG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRvcj4gewog
ICAgIExvY2FsQWxsb2NhdG9yKEJsb2NrRGlyZWN0b3J5Kik7CiAgICAgfkxvY2FsQWxsb2NhdG9y
KCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGUpOworICAgIHZvaWQqIGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29u
dGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNp
emUoKSBjb25zdCB7IHJldHVybiBtX2ZyZWVMaXN0LmNlbGxTaXplKCk7IH0KIApAQCAtNjAsMTIg
KzYxLDEyIEBAIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxO
b2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0b3J5Owog
ICAgIAogICAgIHZvaWQgcmVzZXQoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxv
Y2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZh
aWx1cmVNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNl
KEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAg
dm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRD
b2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxl
Kik7CiAgICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7Ci0gICAgQUxX
QVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRl
eHQqKTsKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChI
ZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsKIAogICAgIEJsb2NrRGlyZWN0b3J5KiBtX2RpcmVj
dG9yeTsKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAppbmRleCAwMGQ1NTc0NzQyNjlkNTcy
NDI3ZmQ3ZDk1NzlhMWYwY2E0YWQ1YWYxLi5jM2M4Njk1ZTg1ODhjNzkwMzUwOGVhZTlmNTFhMmY3
OTlmOTgzZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFs
bG9jYXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFs
bG9jYXRvcklubGluZXMuaApAQCAtMzAsMTQgKzMwLDE0IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1BTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZShHQ0RlZmVycmFs
Q29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1v
ZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZShIZWFwJiBo
ZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtX2RpcmVjdG9yeS0+aGVhcCgpLT5leHBlY3REb2VzR0MoKSk7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAuZXhwZWN0RG9lc0dDKCkpOwogICAgIHJldHVybiBt
X2ZyZWVMaXN0LmFsbG9jYXRlKAogICAgICAgICBbJl0gKCkgLT4gSGVhcENlbGwqIHsKLSAgICAg
ICAgICAgIHNhbml0aXplU3RhY2tGb3JWTShtX2RpcmVjdG9yeS0+aGVhcCgpLT52bSgpKTsKLSAg
ICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xvd0Nhc2Uo
ZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSkpOworICAgICAgICAgICAgc2FuaXRpemVTdGFj
a0ZvclZNKGhlYXAudm0oKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SGVhcENl
bGwqPihhbGxvY2F0ZVNsb3dDYXNlKGhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUp
KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcAppbmRleCBjNmUxZjZjZGY1MDI3ZmUxNDBmNjQ0ZWNhNDkxOTBmNDg0OGIyNWEzLi45
NzllM2NhZTY4YzUxMGFjNDU3ZmNkMjZiZWE0Njc3NDE4N2JmYmNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCBN
YXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICBDb21t
YVByaW50ZXIgY29tbWE7CiAgICAgZGlyZWN0b3J5KCktPmZvckVhY2hCaXRWZWN0b3JXaXRoTmFt
ZSgKICAgICAgICAgaG9sZExvY2soZGlyZWN0b3J5KCktPmJpdHZlY3RvckxvY2soKSksCi0gICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgYml0dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7Cisg
ICAgICAgIFsmXSAoYXV0byBiaXR2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAg
ICAgIG91dC5wcmludChjb21tYSwgbmFtZSwgIjoiLCBiaXR2ZWN0b3JbaW5kZXgoKV0gPyAiWUVT
IiA6ICJubyIpOwogICAgICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zh
c3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCBhOGVk
NmI4Mjg5MDBmZTAyMTNiZGVkOWM2Mzc1Yzk3YjBhMzZjODU5Li40OTRlNjQ4OWZlNGExZGIyMmRi
Mjc0NjdlNjkxNzJhYTM3MjAyZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0
VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC00MjEsNiAr
NDIxLDkgQEAgY2xhc3MgRmFzdEJpdFZlY3RvckltcGwgewogICAgIH0KICAgICAKICAgICB0eXBl
bmFtZSBXb3Jkczo6Vmlld1R5cGUgd29yZFZpZXcoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzLnZp
ZXcoKTsgfQorCisgICAgV29yZHMmIHVuc2FmZVdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQor
ICAgIGNvbnN0IFdvcmRzJiB1bnNhZmVXb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHM7IH0K
ICAgICAKIHByaXZhdGU6CiAgICAgLy8gWW91J2QgdGhpbmsgdGhhdCB3ZSBjb3VsZCByZW1vdmUg
dGhpcyBmcmllbmQgaWYgd2UgdXNlZCBwcm90ZWN0ZWQsIGJ1dCB5b3UnZCBiZSB3cm9uZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383495</attachid>
            <date>2019-11-13 14:12:05 -0800</date>
            <delta_ts>2019-11-13 14:52:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113141204.patch</filename>
            <type>text/plain</type>
            <size>52002</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li4yY2MxMjk1MDYyOGVmOTUy
NGU3MmY0NWU0MzViZTVjODU3NGVjNGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGhlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFwL0Fs
bG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpBbGxvY2F0b3I6OmFsbG9jYXRlIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0Rp
cmVjdG9yeTo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6cHJl
cGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YmVnaW5N
YXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dl
cHRGb3JFZGVuQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFw
c2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0
b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnN3
ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNocmluayk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrU291cmNlKToKKyAgICAgICAgKEpTQzo6
QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5
Lmg6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpjZWxsS2luZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpoZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0Jsb2Nr
RGlyZWN0b3J5Qml0cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
cldvcmRWaWV3KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvcldvcmRWaWV3OjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp3b3JkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3Ojp3b3JkKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpjbGVhckFsbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzo6
dmlldyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6bnVtQml0cyBj
b25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6cmVzaXplKToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpmb3JFYWNoU2VnbWVudCk6CisgICAgICAgICog
aGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNo
Tm90RW1wdHlCbG9jayk6CisgICAgICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyk6CisgICAgICAg
IChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyk6CisgICAgICAgICogaGVh
cC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNw
YWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldC5jcHA6
CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjpJc29TdWJzcGFjZSk6CisgICAg
ICAgIChKU0M6Oklzb1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIpOgorICAgICAg
ICAqIGhlYXAvSXNvU3Vic3BhY2UuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmNlbGxT
aXplKToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5vblZpcnR1YWwp
OgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3Bh
Y2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Mb2NhbEFsbG9jYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQpOgor
ICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFwL0xvY2FsQWxs
b2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUp
OgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorCiAyMDE5LTExLTEzICBSb2JpbiBNb3Jpc3NldCAg
PHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8g
YSBVbmFyeSBhbmQgYSBCaW5hcnkgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA1NWU3OTUxNWEyYmQxOWIzNDM1MGZh
NjlkZTk5MzhlZmE2OGUzZTFiLi5lMWQ3OGQzZGIxZmY1MDhkM2NjNjk1YTYxMjZhMTU1ZjBjNmUx
MjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQmxvY2tEaXJlY3RvcnkncyBiaXRzIHNo
b3VsZCBiZSBjb21wYWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDQxNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsOjp1bnNhZmVXb3Jkcyk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1
bnNhZmVXb3JkcyBjb25zdCk6CisKIDIwMTktMTEtMTEgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtp
cnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFVUQyBvZmZzZXQgZm9yIFNhbW9hIGlzIG1pc2Nh
bGN1bGF0ZWQgd2hlbiAhSEFWRShUSU1FR00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggZGNlYjNmYzA5OTA3MmFjMzY2MTZlMTYzNjk2NmI1M2JiNTM3NWJjMi4uYjZmMGFl
ZDMwZTI0ZDNhZjVlM2RhYTFlOTI3MjVlNDJlZTE0M2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtNTY5LDYgKzU2OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKICAgICBo
ZWFwL0FsbG9jYXRvckZvck1vZGUuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnkuaAorICAgIGhl
YXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5o
CiAgICAgaGVhcC9DZWxsQXR0cmlidXRlcy5oCiAgICAgaGVhcC9DZWxsQ29udGFpbmVyLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGQyN2Q5ODEwMTQzNzg5NDRhM2ExNjI4NzVh
ODU1MzJhOTE2Y2JkNi4uMzYzYmVmNDE4MTg1NGZjOWZlMmU1OGQyOTJjYTI3ODljYmI4ODM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw3IEBACiAJCUUz
NkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZG
RDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0MTAwOUFC
RjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZp
ZWRJRElubGluZXMuaCAqLzsgfTsKKwkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8qIEJsb2Nr
RGlyZWN0b3J5Qml0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODkzQTFE
MjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg5M0ExQzIy
MDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICov
OyB9OwogCQlFMzhEOTk5QzIyMUI3OEJCMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGlibGVQcm94
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDk5
OUEyMjFCNzg5RjAwRDUwNDc0IC8qIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzkwMDYyMTIyMDhCRkM0
MDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTAwNjIwMjIwOEJGQzMwMDEwMTlDRiAvKiBTdWJzcGFjZUFj
Y2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00OTQ3LDYgKzQ5NDgsNyBAQAogCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9B
c3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3Jv
QXNzZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgwRDY2
QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElESW5saW5lcy5oOyBwYXRoID0gZGZnL0RG
R01pbmlmaWVkSURJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODY1
MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tEaXJlY3RvcnlCaXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQYXJh
bWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0RmV0Y2hQ
YXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjBDMUY4RTgx
NDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02MTAyLDYgKzYxMDQsNyBAQAogCQkJCTBGQjQ2NzdFMUZEREE2RTUwMDNG
Q0IwOSAvKiBBdG9tSW5kaWNlcy5oICovLAogCQkJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAv
KiBCbG9ja0RpcmVjdG9yeS5jcHAgKi8sCiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8q
IEJsb2NrRGlyZWN0b3J5LmggKi8sCisJCQkJRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJs
b2NrRGlyZWN0b3J5Qml0cy5oICovLAogCQkJCTBGN0RGMTQ1MUUyQkVGNjgwMDk1OTUxQiAvKiBC
bG9ja0RpcmVjdG9yeUlubGluZXMuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkg
LyogQ2VsbEF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAv
KiBDZWxsQXR0cmlidXRlcy5oICovLApAQCAtOTAwOCw2ICs5MDExLDcgQEAKIAkJCQk4Njk3NkU1
RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3RvcnkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9y
eUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUxQiAvKiBC
bG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1
Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ2OTQz
OTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0
b3IuY3BwCmluZGV4IGU3YzkzYzI2MzY3OTc3MGIyZDAxZGYyZGUwYmZlY2ZmODZmMWNjMDguLmVh
MzJkZjNjMGJjYzFkZTE3NmVjZmE4ZjZmMjdlMDI0YTAyOTU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCkBAIC00
MCwxMiArNDAsMTIgQEAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6fkFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IoKQogewogfQogCi12b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGly
ZWN0b3J5KEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkpCit2b2lkIEFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEhlYXAmIGhlYXAsIEJsb2NrRGlyZWN0b3J5KiBkaXJl
Y3RvcnkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWRpcmVjdG9yeS0+bmV4dERpcmVjdG9yeUlu
QWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICAKICAgICBpZiAobV9kaXJlY3Rvcmllcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBk
aXJlY3RvcnktPmhlYXAoKS0+d29ybGRJc1N0b3BwZWQoKSk7CisgICAgICAgIEFTU0VSVF9VTlVT
RUQoaGVhcCwgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAud29ybGRJc1N0b3BwZWQo
KSk7CiAgICAgICAgIGZvciAoU3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJzcGFjZXMuZmlyc3Qo
KTsgc3Vic3BhY2U7IHN1YnNwYWNlID0gc3Vic3BhY2UtPm5leHRTdWJzcGFjZUluQWxpZ25lZE1l
bW9yeUFsbG9jYXRvcigpKQogICAgICAgICAgICAgc3Vic3BhY2UtPmRpZENyZWF0ZUZpcnN0RGly
ZWN0b3J5KGRpcmVjdG9yeSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCmluZGV4IDY2NDQyYWRmMzE4YTU2N2Q4MmFj
YzBkZjgyMjJlMzVjYTFiNTRhZGMuLjk1NjY5NjM1ZDhkZDUxMzFkOGVmYmFiY2FlYWU2YjBmZTdl
ZDFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1v
cnlBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBCbG9ja0RpcmVjdG9yeTsKK2NsYXNzIEhlYXA7CiBjbGFzcyBTdWJzcGFjZTsKIAogY2xhc3Mg
QWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFsaWduZWRN
ZW1vcnlBbGxvY2F0b3IgewogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3QgPSAwOwogCi0gICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShCbG9ja0RpcmVjdG9y
eSopOworICAgIHZvaWQgcmVnaXN0ZXJEaXJlY3RvcnkoSGVhcCYsIEJsb2NrRGlyZWN0b3J5Kik7
CiAgICAgQmxvY2tEaXJlY3RvcnkqIGZpcnN0RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9k
aXJlY3Rvcmllcy5maXJzdCgpOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3Vic3BhY2UoU3Vic3Bh
Y2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKaW5kZXggMjI5MTU4ZmNl
NDIwZjFlNzk5MjA5ZGMxNDQ4YjgzMjE4MGEyZjc5YS4uNzIzOWQyMjlmY2U5MmJiYTA0NTQwMDNl
NDlkNTI4ZjA3ZTMyN2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgK
QEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBHQ0RlZmVycmFsQ29u
dGV4dDsKK2NsYXNzIEhlYXA7CiBjbGFzcyBMb2NhbEFsbG9jYXRvcjsKIAogLy8gVGhpcyBhYnN0
cmFjdHMgaG93IHdlIHJlZmVyIHRvIExvY2FsQWxsb2NhdG9yIHNvIHRoYXQgd2UgY291bGQgZXZl
bnR1YWxseSBzdXBwb3J0IHRocmVhZC1sb2NhbApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBBbGxv
Y2F0b3IgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZlcnJh
bENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpIGNvbnN0OworICAgIHZvaWQqIGFsbG9j
YXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSkgY29u
c3Q7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaAppbmRleCAxNzU3MzI3M2M0
OTlmYmM1OGE3YjRmZWJmZjdhMGQ5YmM5ZGQ0MmVmLi42OTViMDg5ZDhjNTcxYTdiYjA4MGM3ZDlj
MWVhNmZjODlkOGU4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2Nh
dG9ySW5saW5lcy5oCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdB
WVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqIGNv
bnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBtb2RlKSBjb25zdAorQUxXQVlTX0lOTElORSB2
b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBj
b250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9sb2NhbEFsbG9jYXRvci0+YWxsb2NhdGUoY29udGV4dCwgbW9kZSk7CisgICAgcmV0dXJuIG1f
bG9jYWxBbGxvY2F0b3ItPmFsbG9jYXRlKGhlYXAsIGNvbnRleHQsIG1vZGUpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0
b3J5LmNwcAppbmRleCA3ZWVlNGE4NzQ2YjZiZDE4ODUyYTdhYjYyODc0YmJhZjU3YWJlMjg5Li5l
ZjYwMGZkOTIxNmQ1NmM5ZTdhZGE3OWE4MTVjYjg0Yzk3YmNkODQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCkBAIC0zOCw5ICszOCw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1CbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkoSGVhcCog
aGVhcCwgc2l6ZV90IGNlbGxTaXplKQorQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5KHNp
emVfdCBjZWxsU2l6ZSkKICAgICA6IG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNl
bGxTaXplKSkKLSAgICAsIG1faGVhcChoZWFwKQogewogfQogCkBAIC03Niw3ICs3NSw3IEBAIGJv
b2wgQmxvY2tEaXJlY3Rvcnk6OmlzUGFnZWRPdXQoTW9ub3RvbmljVGltZSBkZWFkbGluZSkKIAog
TWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVh
bCgpCiB7Ci0gICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29y
LCB0cnVlKTsKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJpdChtX2Vt
cHR5Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5
Q3Vyc29yXTsKQEAgLTg1LDcgKzg0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJl
Y3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9j
a0RpcmVjdG9yeTo6ZmluZEJsb2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYgYWxsb2Nh
dG9yKQogewogICAgIGZvciAoOzspIHsKLSAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1
cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KGFsbG9j
YXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBhbGxvY2F0b3IubV9hbGxv
Y2F0aW9uQ3Vyc29yID0gKG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgfCBtX2JpdHMu
ZW1wdHkoKSkuZmluZEJpdChhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKICAg
ICAgICAgaWYgKGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAtOTYsMTEgKzk1LDEx
IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxv
Y2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvCiAgICAgfQogfQogCi1NYXJrZWRCbG9jazo6SGFu
ZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jaygpCitNYXJrZWRCbG9jazo6SGFu
ZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayhIZWFwJiBoZWFwKQogewogICAg
IFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBN
YXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hl
YXAsIHN1YnNwYWNlKCktPmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CisgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShoZWFwLCBzdWJzcGFj
ZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIGlmICghaGFuZGxlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKQEAgLTExOCwyMSArMTE3LDEyIEBAIHZvaWQgQmxvY2tE
aXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgICAgICBz
aXplX3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOwogICAgICAgICBtX2Jsb2Nr
cy5hcHBlbmQoYmxvY2spOwogICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRD
YXBhY2l0eSkgewotICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAgICAgICAgICAg
ICBOb0xvY2tpbmdOZWNlc3NhcnksCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9y
JiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsIHZl
Y3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBvbGRDYXBh
Y2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENhcGFj
aXR5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9iaXR2
ZWN0b3JMb2NrKTsKICAgICAgICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJpdHMobV9ibG9j
a3MuY2FwYWNpdHkoKSk7Ci0gICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAgICAgICAg
ICAgICAgIGxvY2tlciwKLSAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgewotICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5
KCkpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbV9iaXRzLnJlc2l6ZShtX2Js
b2Nrcy5jYXBhY2l0eSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGluZGV4
ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CkBAIC0xNDIsNyArMTMyLDcgQEAgdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAg
ICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigKICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAot
ICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgeworICAgICAgICBbJl0gKGF1dG8g
dmVjdG9yKSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvciwgIXZlY3RvcltpbmRl
eF0pOwogICAgICAgICB9KTsKIApAQCAtMTY1LDcgKzE1NSw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rv
cnk6OnJlbW92ZUJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgIAogICAgIGZv
ckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIGhvbGRMb2NrKG1fYml0dmVjdG9yTG9jayksCi0gICAg
ICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgIFsmXSAoYXV0byB2ZWN0
b3IpIHsKICAgICAgICAgICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKICAgICAg
ICAgfSk7CiAgICAgCkBAIC0xOTIsNyArMTgyLDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6cHJl
cGFyZUZvckFsbG9jYXRpb24oKQogICAgIG1fdW5zd2VwdEN1cnNvciA9IDA7CiAgICAgbV9lbXB0
eUN1cnNvciA9IDA7CiAgICAgCi0gICAgbV9lZGVuLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLmVk
ZW4oKS5jbGVhckFsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OnVzZUltbW9ydGFs
T2JqZWN0cygpKSkgewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgYWdhaW4uCkBA
IC0yMzcsMjAgKzIyNywyMCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtpbmdGb3JG
dWxsQ29sbGVjdGlvbigpCiAgICAgLy8gTWFyayBiaXRzIGFyZSBzdGlja3kgYW5kIHNvIGlzIG91
ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0aGVzZSBkdXJpbmcgZnVsbAog
ICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhlIGxhc3QgY29sbGVjdGlv
biB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25nCiAgICAgLy8gYXMgdGhlIG5l
eHQgb25lIGlzIGVkZW4uCi0gICAgbV9tYXJraW5nTm90RW1wdHkuY2xlYXJBbGwoKTsKLSAgICBt
X21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgp
LmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtpbmdSZXRpcmVkKCkuY2xlYXJBbGwoKTsKIH0K
IAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiB7Ci0gICAgbV9hbGxvY2F0ZWQu
Y2xlYXJBbGwoKTsKKyAgICBtX2JpdHMuYWxsb2NhdGVkKCkuY2xlYXJBbGwoKTsKICAgICAKICAg
ICAvLyBJdCdzIHN1cnByaXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXByZWhlbmQsIGJ1dCB0
aGUgZW5kLW9mLW1hcmtpbmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCiAgICAgLy8ga25vdyB3aGF0
IGtpbmQgb2YgY29sbGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMgYWxyZWFkeSBlbmNv
ZGVkIGluIHRoZSBtX21hcmtpbmdYWVoKICAgICAvLyB2ZWN0b3JzLgogICAgIAotICAgIG1fZW1w
dHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7Ci0gICAgbV9jYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5ID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJraW5nUmV0aXJlZDsK
KyAgICBtX2JpdHMuZW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiB+bV9iaXRzLm1hcmtpbmdOb3RF
bXB0eSgpOworICAgIG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgPSBtX2JpdHMubGl2
ZSgpICYgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgfm1fYml0cy5tYXJraW5nUmV0aXJlZCgp
OwogCiAgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgewogICAgICAgICAvLyBUaGVyZSBhcmUg
c29tZSBibG9ja3MgdGhhdCB3ZSBkaWRuJ3QgYWxsb2NhdGUgb3V0IG9mIGluIHRoZSBsYXN0IGN5
Y2xlLCBidXQgd2Ugc3dlcHQgdGhlbS4gVGhpcwpAQCAtMjU4LDcgKzI0OCw3IEBAIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogICAgICAgICAvLyBkZXN0cnVjdG9ycyBhZ2Fpbi4g
VGhhdCdzIGZpbmUgYmVjYXVzZSBvZiB6YXBwaW5nLiBUaGUgb25seSB0aW1lIHdoZW4gd2UgY2Fu
bm90IGZvcmdldCBpcyB3aGVuCiAgICAgICAgIC8vIHdlIGp1c3QgYWxsb2NhdGUgYSBibG9jayBv
ciB3aGVuIHdlIG1vdmUgYSBibG9jayBmcm9tIG9uZSBzaXplIGNsYXNzIHRvIGFub3RoZXIuIFRo
YXQgZG9lc24ndAogICAgICAgICAvLyBoYXBwZW4gaGVyZS4KLSAgICAgICAgbV9kZXN0cnVjdGli
bGUgPSBtX2xpdmU7CisgICAgICAgIG1fYml0cy5kZXN0cnVjdGlibGUoKSA9IG1fYml0cy5saXZl
KCk7CiAgICAgfQogICAgIAogICAgIGlmIChmYWxzZSkgewpAQCAtMjY5LDE3ICsyNTksMTcgQEAg
dm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6
OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKIHsKLSAgICBtX3Vuc3dlcHQgfD0g
bV9lZGVuOworICAgIG1fYml0cy51bnN3ZXB0KCkgfD0gbV9iaXRzLmVkZW4oKTsKIH0KIAogdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxlY3Rpb24oKQogewot
ICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKKyAgICBtX2JpdHMudW5zd2VwdCgpID0gbV9iaXRzLmxp
dmUoKTsKIH0KIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9j
a1RvU3dlZXAoKQogewotICAgIG1fdW5zd2VwdEN1cnNvciA9IG1fdW5zd2VwdC5maW5kQml0KG1f
dW5zd2VwdEN1cnNvciwgdHJ1ZSk7CisgICAgbV91bnN3ZXB0Q3Vyc29yID0gbV9iaXRzLnVuc3dl
cHQoKS5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CiAgICAgaWYgKG1fdW5zd2VwdEN1
cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBtX2Jsb2Nrc1ttX3Vuc3dlcHRDdXJzb3JdOwpAQCAtMjg3LDcgKzI3Nyw3IEBAIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKCkKIAogdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogewotICAgIG1fdW5zd2VwdC5mb3JFYWNoU2V0Qml0
KAorICAgIG1fYml0cy51bnN3ZXB0KCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXpl
X3QgaW5kZXgpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9i
bG9ja3NbaW5kZXhdOwogICAgICAgICAgICAgYmxvY2stPnN3ZWVwKG51bGxwdHIpOwpAQCAtMjk2
LDcgKzI4Niw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIAogdm9pZCBCbG9ja0Rp
cmVjdG9yeTo6c2hyaW5rKCkKIHsKLSAgICAobV9lbXB0eSAmIH5tX2Rlc3RydWN0aWJsZSkuZm9y
RWFjaFNldEJpdCgKKyAgICAobV9iaXRzLmVtcHR5KCkgJiB+bV9iaXRzLmRlc3RydWN0aWJsZSgp
KS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAg
ICAgbWFya2VkU3BhY2UoKS5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7
CkBAIC0zMDcsNyArMjk3LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YXNzZXJ0Tm9VbnN3ZXB0
KCkKICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
aWYgKG1fdW5zd2VwdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fYml0cy51bnN3ZXB0KCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZGF0YUxvZygiQXNzZXJ0aW9uIGZhaWxl
ZDogdW5zd2VwdCBub3QgZW1wdHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKQEAgLTMyOSw3ICszMTks
NyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gQmxvY2tEaXJl
Y3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9jawogICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tX21h
cmtpbmdOb3RFbXB0eS5maW5kQml0KG1faW5kZXgsIHRydWUpOworICAgICAgICAgICAgbV9pbmRl
eCA9IG1fZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5maW5kQml0KG1faW5kZXgs
IHRydWUpOwogICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3RvcnkubV9ibG9ja3Mu
c2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1NywxNCArMzQ3LDE0IEBAIHZvaWQgQmxvY2tEaXJlY3Rv
cnk6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCiAgICAgdW5zaWduZWQgbWF4TmFtZUxlbmd0
aCA9IDA7CiAgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAgICBOb0xvY2tpbmdO
ZWNlc3NhcnksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0IGNoYXIqIG5hbWUp
IHsKKyAgICAgICAgWyZdIChhdXRvLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CiAgICAgICAgICAgICBtYXhOYW1lTGVuZ3Ro
ID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgCiAg
ICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAgICBOb0xvY2tpbmdOZWNlc3Nhcnks
Ci0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7
CisgICAgICAgIFsmXSAoYXV0byB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAg
ICAgIG91dC5wcmludCgiICAgICIsIG5hbWUsICI6ICIpOwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbWF4TmFtZUxlbmd0aCAtIHN0cmxlbihuYW1lKTsgaS0tOykKICAgICAgICAgICAg
ICAgICBvdXQucHJpbnQoIiAiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Jsb2NrRGlyZWN0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oCmluZGV4IGE3YmNhYTZiOWViZDRiYWQ2M2Q3ZTc4MTEwOTE4ZTNlNDM2Mzg3ZDEu
LjAyODg4MGIyN2RjZDUyYzg1MDRkNjYxY2ExYzc0MDBkYzJiYzI1YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaApAQCAtMjYsNiArMjYsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCIKKyNpbmNsdWRl
ICJCbG9ja0RpcmVjdG9yeUJpdHMuaCIKICNpbmNsdWRlICJDZWxsQXR0cmlidXRlcy5oIgogI2lu
Y2x1ZGUgIkZyZWVMaXN0LmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxvY2F0b3IuaCIKQEAgLTQ0LDE5
ICs0NSw2IEBAIGNsYXNzIElzb0NlbGxTZXQ7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotI2RlZmluZSBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllf
QklUKG1hY3JvKSBcCi0gICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBp
bmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKLSAgICBtYWNybyhlbXB0eSwgRW1w
dHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzLiAq
LyBcCi0gICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCi0gICAgbWFjcm8oY2FuQWxs
b2NhdGVCdXROb3RFbXB0eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIGFyZSBuZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBtb3JlIHRo
YW4gbWluTWFya2VkQmxvY2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAotICAgIG1hY3JvKGRlc3Ry
dWN0aWJsZSwgRGVzdHJ1Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBtYXkg
aGF2ZSBkZXN0cnVjdG9ycyB0byBydW4uICovXAotICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRo
ZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxhc3Qg
R0MuICovXAotICAgIG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wK
LSAgICBcCi0gICAgLyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKLSAg
ICBtYWNybyhtYXJraW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBlbXB0eS4gKi8gXAotICAgIG1hY3JvKG1hcmtpbmdSZXRp
cmVkLCBNYXJraW5nUmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJl
dGlyZWQuICovCi0KIC8vIEZJWE1FOiBXZSBkZWZpbmVkIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkg
YW5kIGVtcHR5IHRvIGJlIGV4Y2x1c2l2ZToKIC8vCiAvLyAgICAgY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSAmIGVtcHR5ID09IDAKQEAgLTc4LDcgKzY2LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3Rvcnkg
ewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1YmxpYzoKLSAg
ICBCbG9ja0RpcmVjdG9yeShIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICBCbG9ja0RpcmVj
dG9yeShzaXplX3QgY2VsbFNpemUpOwogICAgIH5CbG9ja0RpcmVjdG9yeSgpOwogICAgIHZvaWQg
c2V0U3Vic3BhY2UoU3Vic3BhY2UqKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7
CkBAIC05OCw3ICs4Niw2IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBib29sIG5lZWRz
RGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0g
TmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQogICAgIEhlYXBDZWxsOjpL
aW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOyB9Ci0g
ICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogCiAgICAgYm9vbCBpc0ZyZWVMaXN0
ZWRDZWxsKGNvbnN0IHZvaWQqIHRhcmdldCk7CiAKQEAgLTExNSw5ICsxMDIsOSBAQCBjbGFzcyBC
bG9ja0RpcmVjdG9yeSB7CiAgICAgTG9jayYgYml0dmVjdG9yTG9jaygpIHsgcmV0dXJuIG1fYml0
dmVjdG9yTG9jazsgfQogCiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxv
d2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpICAgICBcCi0gICAgYm9vbCBpcyAjIyBjYXBpdGFs
Qml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV8gIyMgbG93ZXJCaXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFs
Qml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzLmlzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4KTsgfSBcCiAgICAgYm9vbCBpcyAj
IyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jaykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUobG9j
a2VyLCBibG9jay0+aW5kZXgoKSk7IH0gXAotICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8g
IyMgbG93ZXJCaXROYW1lW2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNh
cGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZh
bHVlKSB7IG1fYml0cy5zZXRJcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCwgdmFsdWUpOyB9IFwK
ICAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBs
b2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMj
IGNhcGl0YWxCaXROYW1lKGxvY2tlciwgYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQogICAgIEZP
Ul9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMp
CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKQEAgLTEyNiw3ICsxMTMsNyBA
QCBjbGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NL
X0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAot
ICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxv
d2VyQml0TmFtZSgpKTsKICAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9D
S19ESVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0NB
TExCQUNLCiAgICAgfQpAQCAtMTM1LDcgKzEyMiw3IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsK
ICAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYs
IGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0NB
TExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICAgICAgZnVuYyhtXyAj
IyBsb3dlckJpdE5hbWUsICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxv
d2VyQml0TmFtZSgpLCAjY2FwaXRhbEJpdE5hbWUpOwogICAgICAgICBGT1JfRUFDSF9CTE9DS19E
SVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NL
X0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sKICAgICB9CkBAIC0xNjYsMTcgKzE1MywxNCBAQCBjbGFz
cyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJs
b2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYpOwogICAgIAotICAgIE1hcmtlZEJsb2Nr
OjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0
cnlBbGxvY2F0ZUJsb2NrKEhlYXAmKTsKICAgICAKICAgICBWZWN0b3I8TWFya2VkQmxvY2s6Okhh
bmRsZSo+IG1fYmxvY2tzOwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxvY2tJbmRpY2Vz
OwogCiAgICAgLy8gTXV0YXRvciB1c2VzIHRoaXMgdG8gZ3VhcmQgcmVzaXppbmcgdGhlIGJpdHZl
Y3RvcnMuIFRob3NlIHRoaW5ncyBpbiB0aGUgR0MgdGhhdCBtYXkgcnVuCiAgICAgLy8gY29uY3Vy
cmVudGx5IHRvIHRoZSBtdXRhdG9yIG11c3QgbG9jayB0aGlzIHdoZW4gYWNjZXNzaW5nIHRoZSBi
aXR2ZWN0b3JzLgotI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKGxvd2Vy
Qml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2Vy
Qml0TmFtZTsKLSAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9S
WV9CSVRfREVDTEFSQVRJT04pCi0jdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElP
TgorICAgIEJsb2NrRGlyZWN0b3J5Qml0cyBtX2JpdHM7CiAgICAgTG9jayBtX2JpdHZlY3Rvckxv
Y2s7CiAgICAgTG9jayBtX2xvY2FsQWxsb2NhdG9yc0xvY2s7CiAgICAgQ2VsbEF0dHJpYnV0ZXMg
bV9hdHRyaWJ1dGVzOwpAQCAtMTkwLDcgKzE3NCw2IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsK
ICAgICAKICAgICAvLyBGSVhNRTogQWxsIG9mIHRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSByZWZl
cmVuY2VzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjY5ODgKLSAgICBIZWFwKiBtX2hlYXAgeyBudWxscHRyIH07CiAgICAgU3Vic3BhY2UqIG1fc3Vi
c3BhY2UgeyBudWxscHRyIH07CiAgICAgQmxvY2tEaXJlY3RvcnkqIG1fbmV4dERpcmVjdG9yeSB7
IG51bGxwdHIgfTsKICAgICBCbG9ja0RpcmVjdG9yeSogbV9uZXh0RGlyZWN0b3J5SW5TdWJzcGFj
ZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5Qml0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnlCaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc2YTU4NjE3NjFlZTFiMGE2Nzk0MjJhZTNlYTgwNjhi
NWQzYjVlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Js
b2NrRGlyZWN0b3J5Qml0cy5oCkBAIC0wLDAgKzEsMjQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxhcnJh
eT4KKyNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZ
X0JJVChtYWNybykgXAorICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sg
aW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVt
cHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cy4g
Ki8gXAorICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFs
bG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0
aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBtYWNybyhkZXN0
cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgbWF5
IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBU
aGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0
IEdDLiAqL1wKKyAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9c
CisgICAgXAorICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisg
ICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0
aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBy
ZXRpcmVkLiAqLworCitjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0
c1BlclNlZ21lbnQgPSAzMjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNlZ21lbnRT
aGlmdCA9IDU7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleE1hc2sgPSAoMVUg
PDwgc2VnbWVudFNoaWZ0KSAtIDE7CisgICAgc3RhdGljX2Fzc2VydCgoMSA8PCBzZWdtZW50U2hp
ZnQpID09IGJpdHNQZXJTZWdtZW50KTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0tJ
TkRfQ09VTlQobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgKyAxCisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHMgPSAwIEZPUl9F
QUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5UKTsK
KyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQKKworICAgIGVudW0gY2xhc3Mg
S2luZCB7CisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTihsb3dl
ckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCisgICAgICAgIGNhcGl0YWxCaXROYW1lLAorICAg
ICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lO
RF9ERUNMQVJBVElPTikKKyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfREVDTEFSQVRJ
T04KKyAgICB9OworCisgICAgY2xhc3MgU2VnbWVudCB7CisgICAgcHVibGljOgorICAgICAgICBT
ZWdtZW50KCkgPSBkZWZhdWx0OworICAgICAgICBzdGQ6OmFycmF5PHVpbnQzMl90LCBudW1iZXJP
ZkJsb2NrRGlyZWN0b3J5Qml0S2luZHM+IG1fZGF0YSB7IH07CisgICAgfTsKKworICAgIHRlbXBs
YXRlPEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAg
ICB1c2luZyBWaWV3VHlwZSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc7CisKKyAg
ICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldygpID0gZGVmYXVsdDsKKworICAg
ICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KGNvbnN0IFNlZ21lbnQqIHNlZ21l
bnRzLCBzaXplX3QgbnVtQml0cykKKyAgICAgICAgICAgIDogbV9zZWdtZW50cyhzZWdtZW50cykK
KyAgICAgICAgICAgICwgbV9udW1CaXRzKG51bUJpdHMpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIHNpemVfdCBudW1CaXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fbnVtQml0czsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHdvcmQoc2l6
ZV90IGluZGV4KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBX
VEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX3NlZ21lbnRzW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQp
XTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90JiB3b3JkKHNpemVfdCBpbmRleCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgV1RGOjpmYXN0Qml0VmVjdG9yQXJy
YXlMZW5ndGgobnVtQml0cygpKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxTZWdt
ZW50Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2lu
ZCldOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0
b3JBcnJheUxlbmd0aChudW1CaXRzKCkpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIGNvbnN0
X2Nhc3Q8U2VnbWVudCo+KG1fc2VnbWVudHMpW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGtpbmQpXSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3IHZpZXcoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgY29uc3QgU2VnbWVudCogbV9zZWdtZW50cyB7IG51bGxwdHIgfTsKKyAg
ICAgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8S2lu
ZCBraW5kPgorICAgIHVzaW5nIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldyA9IFdURjo6RmFz
dEJpdFZlY3RvckltcGw8QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPj47CisK
KyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAgY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JSZWYgZmluYWwgOiBwdWJsaWMgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+IHsK
KyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVm
KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8a2luZD4gdmlldykKKyAgICAgICAgICAg
IDogQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+KHZpZXcpCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CisgICAgICAg
IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpGYXN0Qml0
VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMoKSA9PSBvdGhl
ci5udW1CaXRzKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjphcnJheUxlbmd0aCgpOyBpLS07KQorICAgICAgICAgICAg
ICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS53b3Jk
KGkpID0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAgICAgcmV0dXJuICp0
aGlzOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4K
KyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yfD0oY29uc3QgV1RG
OjpGYXN0Qml0VmVjdG9ySW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVChCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMo
KSA9PSBvdGhlci5udW1CaXRzKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmxv
Y2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjphcnJheUxlbmd0aCgpOyBpLS07KQorICAg
ICAgICAgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29y
ZHMoKS53b3JkKGkpIHw9IG90aGVyLnVuc2FmZVdvcmRzKCkud29yZChpKTsKKyAgICAgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2xlYXJBbGwoKQorICAg
ICAgICB7CisgICAgICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVu
c2FmZVdvcmRzKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNsYXNzIEJpdFJl
ZmVyZW5jZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSgpIHsg
fQorCisgICAgICAgICAgICBCaXRSZWZlcmVuY2UodWludDMyX3QqIHdvcmQsIHVpbnQzMl90IG1h
c2spCisgICAgICAgICAgICAgICAgOiBtX3dvcmQod29yZCkKKyAgICAgICAgICAgICAgICAsIG1f
bWFzayhtYXNrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gISEoKm1fd29yZCAmIG1fbWFzayk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIEJpdFJlZmVyZW5jZSYgb3BlcmF0b3I9KGJvb2wgdmFsdWUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAqbV93b3Jk
IHw9IG1fbWFzazsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICpt
X3dvcmQgJj0gfm1fbWFzazsKKyAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIHVpbnQzMl90KiBtX3dvcmQg
eyBudWxscHRyIH07CisgICAgICAgICAgICB1aW50MzJfdCBtX21hc2sgeyAwIH07CisgICAgICAg
IH07CisKKyAgICAgICAgQml0UmVmZXJlbmNlIGF0KHNpemVfdCBpbmRleCkKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKGluZGV4IDwgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtp
bmQ+OjpudW1CaXRzKCkpOworICAgICAgICAgICAgcmV0dXJuIEJpdFJlZmVyZW5jZSgmQmxvY2tE
aXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaW5kZXggPj4g
NSksIDEgPDwgKGluZGV4ICYgMzEpKTsKKyAgICAgICAgfQorCisgICAgICAgIEJpdFJlZmVyZW5j
ZSBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGF0KGluZGV4KTsKKyAgICAgICAgfQorICAgIH07CisKKyNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZ
X0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKKyAgICBi
b29sIGlzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCkgY29uc3QgXAorICAgIHsgXAor
ICAgICAgICByZXR1cm4gbG93ZXJCaXROYW1lKClbaW5kZXhdOyBcCisgICAgfSBcCisgICAgdm9p
ZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIFwKKyAg
ICB7IFwKKyAgICAgICAgbG93ZXJCaXROYW1lKClbaW5kZXhdID0gdmFsdWU7IFwKKyAgICB9IFwK
KyAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+IGxv
d2VyQml0TmFtZSgpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRW
ZWN0b3JXb3JkVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4obV9zZWdtZW50cy5kYXRhKCksIG1f
bnVtQml0cykpOyBcCisgICAgfSBcCisgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2lu
ZDo6Y2FwaXRhbEJpdE5hbWU+IGxvd2VyQml0TmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0
dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21l
bnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwKKyAgICB9CisgICAgRk9SX0VBQ0hfQkxPQ0tfRElS
RUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBCTE9DS19E
SVJFQ1RPUllfQklUX0FDQ0VTU09SUworCisgICAgdW5zaWduZWQgbnVtQml0cygpIGNvbnN0IHsg
cmV0dXJuIG1fbnVtQml0czsgfQorCisgICAgdm9pZCByZXNpemUodW5zaWduZWQgbnVtQml0cykK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIG9sZE51bUJpdHMgPSBtX251bUJpdHM7CisgICAgICAg
IG1fbnVtQml0cyA9IG51bUJpdHM7CisgICAgICAgIG1fc2VnbWVudHMucmVzaXplKChudW1CaXRz
ICsgYml0c1BlclNlZ21lbnQgLSAxKSA+PiBzZWdtZW50U2hpZnQpOworICAgICAgICBpZiAobnVt
Qml0cyA8IG9sZE51bUJpdHMgJiYgbnVtQml0cykgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhl
IGxhc3Qgc2VnbWVudC4KKyAgICAgICAgICAgIGF1dG8mIHNlZ21lbnQgPSBtX3NlZ21lbnRzW251
bUJpdHMgPj4gc2VnbWVudFNoaWZ0XTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oKDFVTEwgPDwgKG51bUJpdHMgJiBpbmRleE1hc2spKSAtIDEpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZCbG9j
a0RpcmVjdG9yeUJpdEtpbmRzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIHNlZ21lbnQubV9k
YXRhW2luZGV4XSAmPSBtYXNrOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmMmIGZ1bmMpCisg
ICAgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoYXV0byYgc2Vn
bWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgICAgICBmdW5jKGluZGV4KyssIHNlZ21lbnQpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICB1
bnNpZ25lZCBtX251bUJpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKaW5k
ZXggNDFjYmI0OWMyNjQ5NTY2ZGVjZGY3ODIzODNiZWM4OGNhMjJiYTU3NS4uNjg0YjFhOGQ4NmM0
Yzc1OTcwZDQ4NjhjZmQ0MGJjNjc5NmIwMGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBC
bG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0g
ICAgbV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLmxpdmUoKS5mb3JFYWNoU2V0Qml0
KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Js
b2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2so
Y29uc3QgRnVuY3QKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJs
b2NrRGlyZWN0b3J5Ojpmb3JFYWNoTm90RW1wdHlCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewotICAgIG1fbWFya2luZ05vdEVtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLm1h
cmtpbmdOb3RFbXB0eSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4
KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRl
eCAyY2I5NTJmNjc4MmU3ZGI4MDU0NzcxNTM5ZDU5ZWRiOWE4OTQxMmJjLi42YzA0ZmNlOWIyOWMz
YTE4M2VhN2U3OGYwZTU0NDc3YTcyYzdhZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtNzksNyArNzksNyBAQCBBbGxvY2F0b3Ig
Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAo
ZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxs
b2NhdG9yIGZvciAiLCBtX25hbWUsICIsICIsIGF0dHJpYnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNz
LCAiLlxuIik7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlx
dWVEaXJlY3RvcnkgPSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwg
c2l6ZUNsYXNzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURp
cmVjdG9yeSA9IG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KHNpemVDbGFzcyk7CiAgICAgQmxv
Y2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQoKTsKICAgICBtX2Rp
cmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwogICAgIApAQCAtMTA1
LDcgKzEwNSw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93
KHNpemVfdCBzaXplKQogICAgIH0KICAgICAKICAgICBkaXJlY3RvcnktPnNldE5leHREaXJlY3Rv
cnlJblN1YnNwYWNlKG1fZmlyc3REaXJlY3RvcnkpOwotICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9j
YXRvci0+cmVnaXN0ZXJEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlB
bGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KCptX3NwYWNlLmhlYXAoKSwgZGlyZWN0b3J5KTsK
ICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIG1fZmlyc3REaXJlY3RvcnkgPSBkaXJl
Y3Rvcnk7CiAgICAgcmV0dXJuIGFsbG9jYXRvcjsKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkKiBD
b21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NE
ZWZlcnJhbENvbnRleHQqCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKICAgICBp
ZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzaXplLCBBbGxvY2F0b3JGb3JN
b2RlOjpFbnN1cmVBbGxvY2F0b3IpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRl
KGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAg
ICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQs
IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgCiAgICAgaWYgKHNpemUg
PD0gT3B0aW9uczo6cHJlY2lzZUFsbG9jYXRpb25DdXRvZmYoKQogICAgICAgICAmJiBzaXplIDw9
IE1hcmtlZFNwYWNlOjpsYXJnZUN1dG9mZikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggZWFjZTJhNmY1Yzg3Nzlh
ZmRmMDYxNjBhMzgxNzhiY2M5OTMyMmY0MC4uODcxZGYyYjI3ODhkM2FlYTE3Y2FiM2Q5YzJhZjVj
NjQ2YTUzYWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxl
dGVTdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21w
bGV0ZVN1YnNwYWNlSW5saW5lcy5oCkBAIC0zNiw3ICszNiw3IEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNp
emUsIEdDCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOwog
CiAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNp
emUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkKLSAgICAgICAgcmV0dXJu
IGFsbG9jYXRvci5hbGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICAg
ICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIGZh
aWx1cmVNb2RlKTsKICAgICByZXR1cm4gYWxsb2NhdGVTbG93KHZtLCBzaXplLCBkZWZlcnJhbENv
bnRleHQsIGZhaWx1cmVNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29D
ZWxsU2V0LmNwcAppbmRleCBhYTYyZTExZmQ0NGY2YWJjYmJiZjQyNWI4NmZkZjExMTgwYTg0Nzlj
Li44MGE5Y2ViNmEzNzk2ZTkzZTQ2ZTM3NDE3Yzk5ZjJlYjY4ZjBhNDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8U2hh
cmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RF
bXB0eU1hcmtlZEJsb2NrUwogICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9s
b2NrKTsKLSAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVt
cHR5ICYgbV9zZXQubV9ibG9ja3NXaXRoQml0czsKKyAgICAgICAgICAgIGF1dG8gYml0cyA9IG1f
ZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJp
dHM7CiAgICAgICAgICAgICBtX2luZGV4ID0gYml0cy5maW5kQml0KG1faW5kZXgsIHRydWUpOwog
ICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3RvcnkubV9ibG9ja3Muc2l6ZSgpKSB7
CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCmluZGV4IGZjODE2OTI4N2YwNTY2YmVlYjg5ZDE5
ODQ3MTkxMWE0YTc1OWM0ZTEuLmRiN2U4YWNiNTYxYjFkMjJkNDc2MTY1Y2JjNDA4YmMzOGY2NTZj
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMu
aApAQCAtNzAsNyArNzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxs
U2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIEJsb2NrRGly
ZWN0b3J5JiBkaXJlY3RvcnkgPSBtX3N1YnNwYWNlLm1fZGlyZWN0b3J5OwotICAgIChkaXJlY3Rv
cnkubV9tYXJraW5nTm90RW1wdHkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0Qml0KAor
ICAgIChkaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9ibG9ja3NXaXRoQml0
cykuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgewogICAg
ICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3Nb
YmxvY2tJbmRleF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNw
cAppbmRleCA0NTNlNjAyMzNkNjExZDQ3YzMxN2JiNzNkY2I5YjI2NmU5MDk2Y2U0Li41NjA2NzEz
MTNlMjdjY2M3Mjk0ZmFjOWY2NWUxYzYzZWNjOGM2YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCkBAIC0zNywxMiArMzcsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIElzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAs
IEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJP
Zkxvd2VyVGllckNlbGxzKQogICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCkKLSAgICAsIG1fc2l6
ZShzaXplKQotICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQorICAgICwgbV9kaXJlY3RvcnkoV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBt
X2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKICAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+KCkpCiAgICAgLCBt
X3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudChudW1iZXJPZkxvd2VyVGllckNlbGxzKQogewor
ICAgIEFTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXpl
PihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICBBU1NFUlQobnVtYmVyT2ZMb3dlclRpZXJDZWxs
cyA8PSBNYXJrZWRCbG9jazo6bWF4TnVtYmVyT2ZMb3dlclRpZXJDZWxscyk7CiAgICAgbV9pc0lz
b1N1YnNwYWNlID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwgbV9pc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmdldCgpKTsKQEAgLTUwLDcgKzUwLDcgQEAgSXNvU3Vic3BhY2U6
Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFw
Q2VsbFR5cGUsIHMKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3BhY2UuZGlyZWN0b3J5
TG9jaygpKTsKICAgICBtX2RpcmVjdG9yeS5zZXRTdWJzcGFjZSh0aGlzKTsKICAgICBtX3NwYWNl
LmFkZEJsb2NrRGlyZWN0b3J5KGxvY2tlciwgJm1fZGlyZWN0b3J5KTsKLSAgICBtX2FsaWduZWRN
ZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KCZtX2RpcmVjdG9yeSk7CisgICAgbV9h
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeShoZWFwLCAmbV9kaXJlY3Rv
cnkpOwogICAgIG1fZmlyc3REaXJlY3RvcnkgPSAmbV9kaXJlY3Rvcnk7CiB9CiAKQEAgLTExMSw4
ICsxMTEsNyBAQCB2b2lkKiBJc29TdWJzcGFjZTo6dHJ5QWxsb2NhdGVGcm9tTG93ZXJUaWVyKCkK
ICAgICAgICAgcmV0dXJuIHJldml2ZShhbGxvY2F0aW9uKTsKICAgICB9CiAgICAgaWYgKG1fcmVt
YWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KSB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gV1RGOjpy
b3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZFNwYWNlOjpzaXplU3RlcD4obV9zaXplKTsKLSAgICAg
ICAgUHJlY2lzZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBQcmVjaXNlQWxsb2NhdGlvbjo6Y3Jl
YXRlRm9yTG93ZXJUaWVyKCptX3NwYWNlLmhlYXAoKSwgc2l6ZSwgdGhpcywgLS1tX3JlbWFpbmlu
Z0xvd2VyVGllckNlbGxDb3VudCk7CisgICAgICAgIFByZWNpc2VBbGxvY2F0aW9uKiBhbGxvY2F0
aW9uID0gUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcigqbV9zcGFjZS5oZWFw
KCksIGNlbGxTaXplKCksIHRoaXMsIC0tbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQpOwog
ICAgICAgICByZXR1cm4gcmV2aXZlKGFsbG9jYXRpb24pOwogICAgIH0KICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCmluZGV4IGNhNzc3
ZDA4YWYxZGE1ZTAwOTVjMjg4OWMxMjQ0ZjRkZTZjY2E1NjMuLjU1OTg4OWI4MDk1NzFlNzUzNjAw
ZDRmMGE1MmExMjE3ODQwNTY5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vi
c3BhY2UuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJz
cGFjZSB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBI
ZWFwJiwgSGVhcENlbGxUeXBlKiwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRp
ZXJDZWxscyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb1N1YnNwYWNlKCk7CiAKLSAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHNpemVfdCBjZWxsU2l6
ZSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5LmNlbGxTaXplKCk7IH0KIAogICAgIEFsbG9jYXRvciBh
bGxvY2F0b3JGb3Ioc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKSBvdmVycmlkZTsKICAgICBBbGxv
Y2F0b3IgYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplX3QsIEFsbG9jYXRvckZvck1vZGUpOwpA
QCAtNjMsNyArNjMsNiBAQCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiAg
ICAgdm9pZCBkaWRSZW1vdmVCbG9jayhzaXplX3QgYmxvY2tJbmRleCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKikgb3Zl
cnJpZGU7CiAgICAgCi0gICAgc2l6ZV90IG1fc2l6ZTsKICAgICBCbG9ja0RpcmVjdG9yeSBtX2Rp
cmVjdG9yeTsKICAgICBMb2NhbEFsbG9jYXRvciBtX2xvY2FsQWxsb2NhdG9yOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBtX2lzb0FsaWduZWRNZW1vcnlB
bGxvY2F0b3I7CkBAIC03NCw3ICs3Myw3IEBAIGNsYXNzIElzb1N1YnNwYWNlIDogcHVibGljIFN1
YnNwYWNlIHsKIAogQUxXQVlTX0lOTElORSBBbGxvY2F0b3IgSXNvU3Vic3BhY2U6OmFsbG9jYXRv
ckZvck5vblZpcnR1YWwoc2l6ZV90IHNpemUsIEFsbG9jYXRvckZvck1vZGUpCiB7Ci0gICAgUkVM
RUFTRV9BU1NFUlQoc2l6ZSA9PSB0aGlzLT5zaXplKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNl
bGxTaXplKCkpOwogICAgIHJldHVybiBBbGxvY2F0b3IoJm1fbG9jYWxBbGxvY2F0b3IpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCmlu
ZGV4IDA1MThhN2ZlMDYyZDYwOTE2OWQ3YmMzZjc1M2M1ODRkYzRlZWNmNzAuLjQ2NjBlNzc4M2Fh
NjcyZWM4YTI5ZjRmNGYzM2MyMzJjYjQ2ZGY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCkBAIC0yNywxMSArMjcsMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogSXNvU3Vic3BhY2U6OmFsbG9jYXRl
Tm9uVmlydHVhbChWTSYsIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxD
b250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCitBTFdBWVNfSU5MSU5F
IHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBzaXplX3Qgc2l6
ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlIGZhaWx1cmVNb2RlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gdGhpcy0+c2l6
ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2Vk
QmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICBBbGxvY2F0b3IgYWxs
b2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpN
dXN0QWxyZWFkeUhhdmVBbGxvY2F0b3IpOwotICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci5h
bGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICB2b2lkKiByZXN1bHQg
PSBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9k
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTG9jYWxBbGxvY2F0b3IuY3BwCmluZGV4IDUzZTA1MDhhYjJmZjAxY2Y0ZDQ5YTdmZjA3MDE3
NzFmMGYwYWM0YWQuLmY1NTU3MWM4NmNmYjJlMGFlNGNiZDFlMGFlMjdmZGI4NTBiZDBmYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKQEAgLTEx
MCwxMiArMTEwLDExIEBAIHZvaWQgTG9jYWxBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nRm9yR29v
ZCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xv
d0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlIGZhaWx1cmVNb2RlKQordm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nh
c2UoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1
cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBIZWFwJiBoZWFwID0gKm1fZGlyZWN0b3J5LT5t
X2hlYXA7CiAgICAgQVNTRVJUKGhlYXAudm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9j
aygpKTsKLSAgICBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKGRlZmVycmFsQ29udGV4dCk7Cisg
ICAgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChoZWFwLCBkZWZlcnJhbENvbnRleHQpOwogCiAg
ICAgQVNTRVJUKCFtX2RpcmVjdG9yeS0+bWFya2VkU3BhY2UoKS5pc0l0ZXJhdGluZygpKTsKICAg
ICBoZWFwLmRpZEFsbG9jYXRlKG1fZnJlZUxpc3Qub3JpZ2luYWxTaXplKCkpOwpAQCAtMTI5LDcg
KzEyOCw3IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJy
YWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jCiAgICAgLy8gR29vZnkgY29ybmVyIGNh
c2U6IHRoZSBHQyBjYWxsZWQgYSBjYWxsYmFjayBhbmQgbm93IHRoaXMgZGlyZWN0b3J5IGhhcyBh
IGN1cnJlbnRCbG9jay4gVGhpcyBvbmx5CiAgICAgLy8gaGFwcGVucyB3aGVuIHJ1bm5pbmcgV2Vi
S2l0IHRlc3RzLCB3aGljaCBpbmplY3QgYSBjYWxsYmFjayBpbnRvIHRoZSBHQydzIGZpbmFsaXph
dGlvbi4KICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50QmxvY2spKQotICAgICAgICByZXR1cm4g
YWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgICAgIHJldHVybiBh
bGxvY2F0ZShoZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICAKICAgICB2
b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCkBAIC0x
NDIsNyArMTQxLDcgQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NE
ZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2MKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0g
bV9kaXJlY3RvcnktPnRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBibG9jayA9IG1fZGlyZWN0b3J5LT50cnlBbGxvY2F0ZUJsb2NrKGhlYXApOwogICAgIGlmICgh
YmxvY2spIHsKICAgICAgICAgaWYgKGZhaWx1cmVNb2RlID09IEFsbG9jYXRpb25GYWlsdXJlTW9k
ZTo6QXNzZXJ0KQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTI0OSwxOCArMjQ4LDE4IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQg
TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRl
eHQqIGRlZmVycmFsQ29udGV4dCkKK3ZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rp
b25zSWZOZWVkZWQoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4
dCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcygpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBzdGF0aWMgdW5zaWduZWQgYWxsb2NhdGlvbkNvdW50ID0gMDsK
ICAgICBpZiAoIWFsbG9jYXRpb25Db3VudCkgewotICAgICAgICBpZiAoIW1fZGlyZWN0b3J5LT5t
X2hlYXAtPmlzRGVmZXJyZWQoKSkgeworICAgICAgICBpZiAoIWhlYXAuaXNEZWZlcnJlZCgpKSB7
CiAgICAgICAgICAgICBpZiAoZGVmZXJyYWxDb250ZXh0KQogICAgICAgICAgICAgICAgIGRlZmVy
cmFsQ29udGV4dC0+bV9zaG91bGRHQyA9IHRydWU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgbV9kaXJlY3RvcnktPm1faGVhcC0+Y29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9u
U2NvcGU6OkZ1bGwpOworICAgICAgICAgICAgICAgIGhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgrK2FsbG9jYXRp
b25Db3VudCA+PSBPcHRpb25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oCmluZGV4IDQzNzI3M2YzNjY4MGU0
YTgwOTY4N2NkZjhjOGU0YThjZjRlY2MxYWQuLjliNjUxYjA3MDM3NjgxNGYyYTM5N2JiMmExODZl
ZDcwMDA5OWQzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2Fs
QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0
b3IuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQmxvY2tEaXJl
Y3Rvcnk7CiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiAKIGNsYXNzIExv
Y2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9y
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxBbGxvY2F0b3IpOwpAQCAtNDIsNyAr
NDMsNyBAQCBjbGFzcyBMb2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxMb2NhbEFsbG9jYXRvcj4gewogICAgIExvY2FsQWxsb2NhdG9yKEJsb2NrRGlyZWN0b3J5Kik7
CiAgICAgfkxvY2FsQWxsb2NhdG9yKCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZl
cnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOworICAgIHZvaWQqIGFsbG9jYXRl
KEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAg
CiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyZWVMaXN0LmNlbGxT
aXplKCk7IH0KIApAQCAtNjAsMTIgKzYxLDEyIEBAIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVi
bGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgZnJpZW5kIGNs
YXNzIEJsb2NrRGlyZWN0b3J5OwogICAgIAogICAgIHZvaWQgcmVzZXQoKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRp
b25GYWlsdXJlTW9kZSk7CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsKICAgICB2b2lk
KiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVJ
bihNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9j
azo6SGFuZGxlKik7Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZO
ZWVkZWQoR0NEZWZlcnJhbENvbnRleHQqKTsKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0
Q29sbGVjdGlvbnNJZk5lZWRlZChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsKIAogICAgIEJs
b2NrRGlyZWN0b3J5KiBtX2RpcmVjdG9yeTsKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaApp
bmRleCAwMGQ1NTc0NzQyNjlkNTcyNDI3ZmQ3ZDk1NzlhMWYwY2E0YWQ1YWYxLi5jM2M4Njk1ZTg1
ODhjNzkwMzUwOGVhZTlmNTFhMmY3OTlmOTgzZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaApAQCAtMzAsMTQgKzMwLDE0IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9y
OjphbGxvY2F0ZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2Nh
dG9yOjphbGxvY2F0ZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250
ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlk
YXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2RpcmVjdG9yeS0+aGVhcCgp
LT5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAuZXhwZWN0RG9l
c0dDKCkpOwogICAgIHJldHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlKAogICAgICAgICBbJl0gKCkg
LT4gSGVhcENlbGwqIHsKLSAgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTShtX2RpcmVjdG9y
eS0+aGVhcCgpLT52bSgpKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIZWFwQ2Vs
bCo+KGFsbG9jYXRlU2xvd0Nhc2UoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSkpOworICAg
ICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKGhlYXAudm0oKSk7CisgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SGVhcENlbGwqPihhbGxvY2F0ZVNsb3dDYXNlKGhlYXAsIGRlZmVycmFs
Q29udGV4dCwgZmFpbHVyZU1vZGUpKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCBjNmUxZjZjZGY1MDI3ZmUxNDBmNjQ0
ZWNhNDkxOTBmNDg0OGIyNWEzLi45NzllM2NhZTY4YzUxMGFjNDU3ZmNkMjZiZWE0Njc3NDE4N2Jm
YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC0z
NzcsNyArMzc3LDcgQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUoUHJpbnRT
dHJlYW0mIG91dCkKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgZGlyZWN0b3J5KCktPmZv
ckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgaG9sZExvY2soZGlyZWN0b3J5KCktPmJp
dHZlY3RvckxvY2soKSksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgYml0dmVjdG9yLCBj
b25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgIFsmXSAoYXV0byBiaXR2ZWN0b3IsIGNvbnN0IGNo
YXIqIG5hbWUpIHsKICAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgbmFtZSwgIjoiLCBiaXR2
ZWN0b3JbaW5kZXgoKV0gPyAiWUVTIiA6ICJubyIpOwogICAgICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuaAppbmRleCBhOGVkNmI4Mjg5MDBmZTAyMTNiZGVkOWM2Mzc1Yzk3YjBhMzZjODU5
Li40OTRlNjQ4OWZlNGExZGIyMmRiMjc0NjdlNjkxNzJhYTM3MjAyZGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJp
dFZlY3Rvci5oCkBAIC00MjEsNiArNDIxLDkgQEAgY2xhc3MgRmFzdEJpdFZlY3RvckltcGwgewog
ICAgIH0KICAgICAKICAgICB0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUgd29yZFZpZXcoKSBjb25z
dCB7IHJldHVybiBtX3dvcmRzLnZpZXcoKTsgfQorCisgICAgV29yZHMmIHVuc2FmZVdvcmRzKCkg
eyByZXR1cm4gbV93b3JkczsgfQorICAgIGNvbnN0IFdvcmRzJiB1bnNhZmVXb3JkcygpIGNvbnN0
IHsgcmV0dXJuIG1fd29yZHM7IH0KICAgICAKIHByaXZhdGU6CiAgICAgLy8gWW91J2QgdGhpbmsg
dGhhdCB3ZSBjb3VsZCByZW1vdmUgdGhpcyBmcmllbmQgaWYgd2UgdXNlZCBwcm90ZWN0ZWQsIGJ1
dCB5b3UnZCBiZSB3cm9uZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383500</attachid>
            <date>2019-11-13 14:52:40 -0800</date>
            <delta_ts>2019-11-13 16:02:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113145239.patch</filename>
            <type>text/plain</type>
            <size>59641</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li45M2JiOWEyZGQzMDYzNjBi
OGRlNTZiNzM2ZGMzNWI4ZTk5MmY1ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGhlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFwL0Fs
bG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpBbGxvY2F0b3I6OmFsbG9jYXRlIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0Rp
cmVjdG9yeTo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6cHJl
cGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YmVnaW5N
YXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dl
cHRGb3JFZGVuQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFw
c2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0
b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnN3
ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNocmluayk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrU291cmNlKToKKyAgICAgICAgKEpTQzo6
QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5
Lmg6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpjZWxsS2luZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpoZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0Jsb2Nr
RGlyZWN0b3J5Qml0cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
cldvcmRWaWV3KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvcldvcmRWaWV3OjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp3b3JkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3Ojp3b3JkKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpjbGVhckFsbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzo6
dmlldyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6bnVtQml0cyBj
b25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6cmVzaXplKToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpmb3JFYWNoU2VnbWVudCk6CisgICAgICAgICog
aGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNo
Tm90RW1wdHlCbG9jayk6CisgICAgICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyk6CisgICAgICAg
IChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyk6CisgICAgICAgICogaGVh
cC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNw
YWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldC5jcHA6
CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjpJc29TdWJzcGFjZSk6CisgICAg
ICAgIChKU0M6Oklzb1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIpOgorICAgICAg
ICAqIGhlYXAvSXNvU3Vic3BhY2UuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmNlbGxT
aXplKToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5vblZpcnR1YWwp
OgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3Bh
Y2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZVBlclZN
LmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vi
c3BhY2U6On5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSk6CisgICAgICAgICogaGVhcC9Mb2NhbEFs
bG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dD
YXNlKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZO
ZWVkZWQpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFw
L0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFsbG9jYXRvcjo6
YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2Vk
U3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZWFwV2Vha1Nl
dHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5o
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aGVhcCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmhlYXAgY29uc3QpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgorICAgICAgICAo
SlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisKIDIwMTktMTEtMTMgIFJvYmluIE1vcmlzc2V0
ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxpdCBBcml0aFByb2ZpbGUgaW50
byBhIFVuYXJ5IGFuZCBhIEJpbmFyeSB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU1ZTc5NTE1YTJiZDE5YjM0MzUw
ZmE2OWRlOTkzOGVmYTY4ZTNlMWIuLmUxZDc4ZDNkYjFmZjUwOGQzY2M2OTVhNjEyNmExNTVmMGM2
ZTEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMg
c2hvdWxkIGJlIGNvbXBhY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNDE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZl
Y3RvckltcGw6OnVuc2FmZVdvcmRzKToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvckltcGw6
OnVuc2FmZVdvcmRzIGNvbnN0KToKKwogMjAxOS0xMS0xMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVVRDIG9mZnNldCBmb3IgU2Ftb2EgaXMgbWlz
Y2FsY3VsYXRlZCB3aGVuICFIQVZFKFRJTUVHTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBkY2ViM2ZjMDk5MDcyYWMzNjYxNmUxNjM2OTY2YjUzYmI1Mzc1YmMyLi5iNmYw
YWVkMzBlMjRkM2FmNWUzZGFhMWU5MjcyNWU0MmVlMTQzZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01NjksNiArNTY5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoZWFwL0FsbG9jYXRvcklubGluZXMuaAogICAg
IGhlYXAvQWxsb2NhdG9yRm9yTW9kZS5oCiAgICAgaGVhcC9CbG9ja0RpcmVjdG9yeS5oCisgICAg
aGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmgKICAgICBoZWFwL0NlbGxBdHRyaWJ1dGVzLmgKICAgICBoZWFwL0NlbGxDb250YWluZXIuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZDI3ZDk4MTAxNDM3ODk0NGEzYTE2Mjg3
NWE4NTUzMmE5MTZjYmQ2Li4zNjNiZWY0MTgxODU0ZmM5ZmUyZTU4ZDI5MmNhMjc4OWNiYjg4MzZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxNyw2ICsxODE3LDcgQEAKIAkJ
RTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUx
RkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFu
YWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg1MEIxNTIyNkVENjQxMDA5
QUJGOUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5p
ZmllZElESW5saW5lcy5oICovOyB9OworCQlFMzg2NTJFMzIzN0NBMEM5MDBFMUQ1RUUgLyogQmxv
Y2tEaXJlY3RvcnlCaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg2NTJFMjIzN0NBMEM4MDBFMUQ1RUUgLyogQmxvY2tEaXJlY3RvcnlCaXRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4OTNB
MUQyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODkzQTFD
MjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0Lmgg
Ki87IH07CiAJCUUzOEQ5OTlDMjIxQjc4QkIwMEQ1MDQ3NCAvKiBKU05vbkRlc3RydWN0aWJsZVBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhE
OTk5QTIyMUI3ODlGMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGlibGVQcm94eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTAwNjIxMjIwOEJG
QzQwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNl
QWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTQ5NDcsNiArNDk0OCw3IEBACiAJCUUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNy
b0Fzc2VtYmxlckhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODBE
NjZCMUYxOTI0OUQwMEE1OTA5NSAvKiBCdWlsdGluTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbk5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4NTBCMTQyMjZFRDYzRTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01pbmlmaWVkSURJbmxpbmVzLmg7IHBhdGggPSBkZmcv
REZHTWluaWZpZWRJRElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4
NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0RpcmVjdG9yeUJpdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM4OTNBMUMyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5
bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzhEMDYwQjFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRGZXRjaFBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2MEMxRjhF
ODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYxMDIsNiArNjEwNCw3IEBACiAJCQkJMEZCNDY3N0UxRkREQTZFNTAw
M0ZDQjA5IC8qIEF0b21JbmRpY2VzLmggKi8sCiAJCQkJQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2
IC8qIEJsb2NrRGlyZWN0b3J5LmNwcCAqLywKIAkJCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYg
LyogQmxvY2tEaXJlY3RvcnkuaCAqLywKKwkJCQlFMzg2NTJFMjIzN0NBMEM4MDBFMUQ1RUUgLyog
QmxvY2tEaXJlY3RvcnlCaXRzLmggKi8sCiAJCQkJMEY3REYxNDUxRTJCRUY2ODAwOTU5NTFCIC8q
IEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovLAogCQkJCTBGOTYzMDM1MUQ0MTkyQzMwMDU2MDlE
OSAvKiBDZWxsQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYwOUQ5
IC8qIENlbGxBdHRyaWJ1dGVzLmggKi8sCkBAIC05MDA4LDYgKzkwMTEsNyBAQAogCQkJCTg2OTc2
RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjRCMjcyMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8qIEJsb2NrRGlyZWN0
b3J5Qml0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3REYxNDYxRTJCRUY2QTAwOTU5NTFCIC8q
IEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2
RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNDY5
NDM5MUY5NzQzOUUwMENDQjNGOSAvKiBCb29sZWFuUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5jcHAKaW5kZXggZTdjOTNjMjYzNjc5NzcwYjJkMDFkZjJkZTBiZmVjZmY4NmYxY2MwOC4u
ZWEzMmRmM2MwYmNjMWRlMTc2ZWNmYThmNmYyN2UwMjRhMDI5NThhZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKQEAg
LTQwLDEyICs0MCwxMiBAQCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+QWxpZ25lZE1lbW9yeUFs
bG9jYXRvcigpCiB7CiB9CiAKLXZvaWQgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6cmVnaXN0ZXJE
aXJlY3RvcnkoQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSkKK3ZvaWQgQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjo6cmVnaXN0ZXJEaXJlY3RvcnkoSGVhcCYgaGVhcCwgQmxvY2tEaXJlY3RvcnkqIGRp
cmVjdG9yeSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghZGlyZWN0b3J5LT5uZXh0RGlyZWN0b3J5
SW5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIAogICAgIGlmIChtX2RpcmVjdG9yaWVz
LmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8
IGRpcmVjdG9yeS0+aGVhcCgpLT53b3JsZElzU3RvcHBlZCgpKTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChoZWFwLCAhVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkgfHwgaGVhcC53b3JsZElzU3RvcHBl
ZCgpKTsKICAgICAgICAgZm9yIChTdWJzcGFjZSogc3Vic3BhY2UgPSBtX3N1YnNwYWNlcy5maXJz
dCgpOyBzdWJzcGFjZTsgc3Vic3BhY2UgPSBzdWJzcGFjZS0+bmV4dFN1YnNwYWNlSW5BbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKCkpCiAgICAgICAgICAgICBzdWJzcGFjZS0+ZGlkQ3JlYXRlRmlyc3RE
aXJlY3RvcnkoZGlyZWN0b3J5KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKaW5kZXggNjY0NDJhZGYzMThhNTY3ZDgy
YWNjMGRmODIyMmUzNWNhMWI1NGFkYy4uOTU2Njk2MzVkOGRkNTEzMWQ4ZWZiYWJjYWVhZTZiMGZl
N2VkMWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEJsb2NrRGlyZWN0b3J5OworY2xhc3MgSGVhcDsKIGNsYXNzIFN1YnNwYWNlOwogCiBjbGFz
cyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvciB7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5Kik7CisgICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShIZWFwJiwgQmxvY2tEaXJlY3Rvcnkq
KTsKICAgICBCbG9ja0RpcmVjdG9yeSogZmlyc3REaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X2RpcmVjdG9yaWVzLmZpcnN0KCk7IH0KIAogICAgIHZvaWQgcmVnaXN0ZXJTdWJzcGFjZShTdWJz
cGFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3IuaAppbmRleCAyMjkxNThm
Y2U0MjBmMWU3OTkyMDlkYzE0NDhiODMyMTgwYTJmNzlhLi43MjM5ZDIyOWZjZTkyYmJhMDQ1NDAw
M2U0OWQ1MjhmMDdlMzI3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3Iu
aApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEdDRGVmZXJyYWxD
b250ZXh0OworY2xhc3MgSGVhcDsKIGNsYXNzIExvY2FsQWxsb2NhdG9yOwogCiAvLyBUaGlzIGFi
c3RyYWN0cyBob3cgd2UgcmVmZXIgdG8gTG9jYWxBbGxvY2F0b3Igc28gdGhhdCB3ZSBjb3VsZCBl
dmVudHVhbGx5IHN1cHBvcnQgdGhyZWFkLWxvY2FsCkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFs
bG9jYXRvciB7CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkKiBhbGxvY2F0ZShHQ0RlZmVy
cmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSkgY29uc3Q7CisgICAgdm9pZCogYWxs
b2NhdGUoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKSBj
b25zdDsKICAgICAKICAgICB1bnNpZ25lZCBjZWxsU2l6ZSgpIGNvbnN0OwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9ySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDE3NTczMjcz
YzQ5OWZiYzU4YTdiNGZlYmZmN2EwZDliYzlkZDQyZWYuLjY5NWIwODlkOGM1NzFhN2JiMDgwYzdk
OWMxZWE2ZmM4OWQ4ZTgzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0FsbG9jYXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0b3JJbmxpbmVzLmgKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFM
V0FZU19JTkxJTkUgdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZShHQ0RlZmVycmFsQ29udGV4dCog
Y29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIG1vZGUpIGNvbnN0CitBTFdBWVNfSU5MSU5F
IHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQq
IGNvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBtb2RlKSBjb25zdAogewotICAgIHJldHVy
biBtX2xvY2FsQWxsb2NhdG9yLT5hbGxvY2F0ZShjb250ZXh0LCBtb2RlKTsKKyAgICByZXR1cm4g
bV9sb2NhbEFsbG9jYXRvci0+YWxsb2NhdGUoaGVhcCwgY29udGV4dCwgbW9kZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnkuY3BwCmluZGV4IDdlZWU0YTg3NDZiNmJkMTg4NTJhN2FiNjI4NzRiYmFmNTdhYmUyODku
LmVmNjAwZmQ5MjE2ZDU2YzllN2FkYTc5YTgxNWNiODRjOTdiY2Q4NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKQEAgLTM4LDkgKzM4LDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUJsb2NrRGlyZWN0b3J5OjpCbG9ja0RpcmVjdG9yeShIZWFw
KiBoZWFwLCBzaXplX3QgY2VsbFNpemUpCitCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3Rvcnko
c2l6ZV90IGNlbGxTaXplKQogICAgIDogbV9jZWxsU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y2VsbFNpemUpKQotICAgICwgbV9oZWFwKGhlYXApCiB7CiB9CiAKQEAgLTc2LDcgKzc1LDcgQEAg
Ym9vbCBCbG9ja0RpcmVjdG9yeTo6aXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKQog
CiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0
ZWFsKCkKIHsKLSAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJz
b3IsIHRydWUpOworICAgIG1fZW1wdHlDdXJzb3IgPSBtX2JpdHMuZW1wdHkoKS5maW5kQml0KG1f
ZW1wdHlDdXJzb3IsIHRydWUpOwogICAgIGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1w
dHlDdXJzb3JdOwpAQCAtODUsNyArODQsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0Rp
cmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJs
b2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxv
Y2F0b3IpCiB7CiAgICAgZm9yICg7OykgewotICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9u
Q3Vyc29yID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQoYWxs
b2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGFsbG9jYXRvci5tX2Fs
bG9jYXRpb25DdXJzb3IgPSAobV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSB8IG1fYml0
cy5lbXB0eSgpKS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwog
ICAgICAgICBpZiAoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nrcy5zaXpl
KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCkBAIC05NiwxMSArOTUs
MTEgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFs
bG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImIGFsbG8KICAgICB9CiB9CiAKLU1hcmtlZEJsb2NrOjpI
YW5kbGUqIEJsb2NrRGlyZWN0b3J5Ojp0cnlBbGxvY2F0ZUJsb2NrKCkKK01hcmtlZEJsb2NrOjpI
YW5kbGUqIEJsb2NrRGlyZWN0b3J5Ojp0cnlBbGxvY2F0ZUJsb2NrKEhlYXAmIGhlYXApCiB7CiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1f
aGVhcCwgc3Vic3BhY2UoKS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKKyAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKGhlYXAsIHN1YnNw
YWNlKCktPmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIApAQCAtMTE4LDIxICsxMTcsMTIgQEAgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgICAg
IHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CiAgICAgICAgIG1fYmxv
Y2tzLmFwcGVuZChibG9jayk7CiAgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9s
ZENhcGFjaXR5KSB7Ci0gICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAgICAgICAgICAg
ICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwKLSAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0
b3ImIHZlY3RvcikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3Rvciwg
dmVjdG9yLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChtX2JpdHMubnVtQml0cygpID09IG9sZENh
cGFjaXR5KTsKICAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2Fw
YWNpdHkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Jp
dHZlY3RvckxvY2spOwogICAgICAgICAgICAgc3Vic3BhY2UoKS0+ZGlkUmVzaXplQml0cyhtX2Js
b2Nrcy5jYXBhY2l0eSgpKTsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCi0gICAgICAg
ICAgICAgICAgbG9ja2VyLAotICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVj
dG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNp
dHkoKSk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBtX2JpdHMucmVzaXplKG1f
YmxvY2tzLmNhcGFjaXR5KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW5k
ZXggPSBtX2ZyZWVCbG9ja0luZGljZXMudGFrZUxhc3QoKTsKQEAgLTE0Miw3ICsxMzIsNyBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykK
ICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBOb0xvY2tpbmdOZWNlc3Nhcnks
Ci0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7CisgICAgICAgIFsmXSAoYXV0
byB2ZWN0b3IpIHsKICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yLCAhdmVjdG9yW2lu
ZGV4XSk7CiAgICAgICAgIH0pOwogCkBAIC0xNjUsNyArMTU1LDcgQEAgdm9pZCBCbG9ja0RpcmVj
dG9yeTo6cmVtb3ZlQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgCiAgICAg
Zm9yRWFjaEJpdFZlY3RvcigKICAgICAgICAgaG9sZExvY2sobV9iaXR2ZWN0b3JMb2NrKSwKLSAg
ICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKKyAgICAgICAgWyZdIChhdXRvIHZl
Y3RvcikgewogICAgICAgICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOwogICAg
ICAgICB9KTsKICAgICAKQEAgLTE5Miw3ICsxODIsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpw
cmVwYXJlRm9yQWxsb2NhdGlvbigpCiAgICAgbV91bnN3ZXB0Q3Vyc29yID0gMDsKICAgICBtX2Vt
cHR5Q3Vyc29yID0gMDsKICAgICAKLSAgICBtX2VkZW4uY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMu
ZWRlbigpLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0
YWxPYmplY3RzKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBhZ2Fpbi4K
QEAgLTIzNywyMCArMjI3LDIwIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2luZ0Zv
ckZ1bGxDb2xsZWN0aW9uKCkKICAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMg
b3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxs
CiAgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0
aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKICAgICAvLyBhcyB0aGUg
bmV4dCBvbmUgaXMgZWRlbi4KLSAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOwotICAg
IG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFya2luZ05vdEVtcHR5
KCkuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFya2luZ1JldGlyZWQoKS5jbGVhckFsbCgpOwog
fQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIHsKLSAgICBtX2FsbG9jYXRl
ZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5hbGxvY2F0ZWQoKS5jbGVhckFsbCgpOwogICAgIAog
ICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29tcHJlaGVuZCwgYnV0
IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KICAgICAvLyBrbm93IHdo
YXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBpcyBhbHJlYWR5IGVu
Y29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgogICAgIC8vIHZlY3RvcnMuCiAgICAgCi0gICAgbV9l
bXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKLSAgICBtX2NhbkFsbG9jYXRlQnV0
Tm90RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVk
OworICAgIG1fYml0cy5lbXB0eSgpID0gbV9iaXRzLmxpdmUoKSAmIH5tX2JpdHMubWFya2luZ05v
dEVtcHR5KCk7CisgICAgbV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSA9IG1fYml0cy5s
aXZlKCkgJiBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiB+bV9iaXRzLm1hcmtpbmdSZXRpcmVk
KCk7CiAKICAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CiAgICAgICAgIC8vIFRoZXJlIGFy
ZSBzb21lIGJsb2NrcyB0aGF0IHdlIGRpZG4ndCBhbGxvY2F0ZSBvdXQgb2YgaW4gdGhlIGxhc3Qg
Y3ljbGUsIGJ1dCB3ZSBzd2VwdCB0aGVtLiBUaGlzCkBAIC0yNTgsNyArMjQ4LDcgQEAgdm9pZCBC
bG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAgICAgICAgIC8vIGRlc3RydWN0b3JzIGFnYWlu
LiBUaGF0J3MgZmluZSBiZWNhdXNlIG9mIHphcHBpbmcuIFRoZSBvbmx5IHRpbWUgd2hlbiB3ZSBj
YW5ub3QgZm9yZ2V0IGlzIHdoZW4KICAgICAgICAgLy8gd2UganVzdCBhbGxvY2F0ZSBhIGJsb2Nr
IG9yIHdoZW4gd2UgbW92ZSBhIGJsb2NrIGZyb20gb25lIHNpemUgY2xhc3MgdG8gYW5vdGhlci4g
VGhhdCBkb2Vzbid0CiAgICAgICAgIC8vIGhhcHBlbiBoZXJlLgotICAgICAgICBtX2Rlc3RydWN0
aWJsZSA9IG1fbGl2ZTsKKyAgICAgICAgbV9iaXRzLmRlc3RydWN0aWJsZSgpID0gbV9iaXRzLmxp
dmUoKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGZhbHNlKSB7CkBAIC0yNjksMTcgKzI1OSwxNyBA
QCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9y
eTo6c25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKQogewotICAgIG1fdW5zd2VwdCB8
PSBtX2VkZW47CisgICAgbV9iaXRzLnVuc3dlcHQoKSB8PSBtX2JpdHMuZWRlbigpOwogfQogCiB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpCiB7
Ci0gICAgbV91bnN3ZXB0ID0gbV9saXZlOworICAgIG1fYml0cy51bnN3ZXB0KCkgPSBtX2JpdHMu
bGl2ZSgpOwogfQogCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJs
b2NrVG9Td2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0Q3Vyc29yID0gbV91bnN3ZXB0LmZpbmRCaXQo
bV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKKyAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX2JpdHMudW5z
d2VwdCgpLmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV91bnN3ZXB0
Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
cmV0dXJuIG1fYmxvY2tzW21fdW5zd2VwdEN1cnNvcl07CkBAIC0yODcsNyArMjc3LDcgQEAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja1RvU3dlZXAoKQogCiB2
b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0LmZvckVhY2hTZXRC
aXQoCisgICAgbV9iaXRzLnVuc3dlcHQoKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNp
emVfdCBpbmRleCkgewogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBt
X2Jsb2Nrc1tpbmRleF07CiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVsbHB0cik7CkBAIC0y
OTYsNyArMjg2LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogCiB2b2lkIEJsb2Nr
RGlyZWN0b3J5OjpzaHJpbmsoKQogewotICAgIChtX2VtcHR5ICYgfm1fZGVzdHJ1Y3RpYmxlKS5m
b3JFYWNoU2V0Qml0KAorICAgIChtX2JpdHMuZW1wdHkoKSAmIH5tX2JpdHMuZGVzdHJ1Y3RpYmxl
KCkpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAg
ICAgICBtYXJrZWRTcGFjZSgpLmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9
KTsKQEAgLTMwNyw3ICsyOTcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dl
cHQoKQogICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBpZiAobV91bnN3ZXB0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9iaXRzLnVuc3dlcHQoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBkYXRhTG9nKCJBc3NlcnRpb24gZmFp
bGVkOiB1bnN3ZXB0IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOwpAQCAtMzI5LDcgKzMx
OSw3IEBAIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBCbG9ja0Rp
cmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrCiAgICAgICAgICAgICBpZiAobV9kb25lKQog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgbV9pbmRleCA9IG1fZGlyZWN0b3J5Lm1f
bWFya2luZ05vdEVtcHR5LmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CisgICAgICAgICAgICBtX2lu
ZGV4ID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZpbmRCaXQobV9pbmRl
eCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nr
cy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3LDE0ICszNDcsMTQgQEAgdm9pZCBCbG9ja0RpcmVj
dG9yeTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKICAgICB1bnNpZ25lZCBtYXhOYW1lTGVu
Z3RoID0gMDsKICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2lu
Z05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiwgY29uc3QgY2hhciogbmFt
ZSkgeworICAgICAgICBbJl0gKGF1dG8sIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKICAgICAgICAgICAgIG1heE5hbWVMZW5n
dGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOwogICAgICAgICB9KTsKICAgICAK
ICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2Fy
eSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUp
IHsKKyAgICAgICAgWyZdIChhdXRvIHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgewogICAgICAg
ICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFtZSwgIjogIik7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0gc3RybGVuKG5hbWUpOyBpLS07KQogICAgICAgICAg
ICAgICAgIG91dC5wcmludCgiICIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQmxvY2tEaXJlY3RvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5LmgKaW5kZXggYTdiY2FhNmI5ZWJkNGJhZDYzZDdlNzgxMTA5MThlM2U0MzYzODdk
MS4uMDI4ODgwYjI3ZGNkNTJjODUwNGQ2NjFjYTFjNzQwMGRjMmJjMjVhMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIgorI2luY2x1
ZGUgIkJsb2NrRGlyZWN0b3J5Qml0cy5oIgogI2luY2x1ZGUgIkNlbGxBdHRyaWJ1dGVzLmgiCiAj
aW5jbHVkZSAiRnJlZUxpc3QuaCIKICNpbmNsdWRlICJMb2NhbEFsbG9jYXRvci5oIgpAQCAtNDQs
MTkgKzQ1LDYgQEAgY2xhc3MgSXNvQ2VsbFNldDsKIGNsYXNzIE1hcmtlZFNwYWNlOwogY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0jZGVmaW5lIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9S
WV9CSVQobWFjcm8pIFwKLSAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2Nr
IGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAotICAgIG1hY3JvKGVtcHR5LCBF
bXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMu
ICovIFwKLSAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGwg
YmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKLSAgICBtYWNybyhjYW5B
bGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1vcmUg
dGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCi0gICAgbWFjcm8oZGVz
dHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IG1h
eSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCi0gICAgbWFjcm8oZWRlbiwgRWRlbikgLyog
VGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFz
dCBHQy4gKi9cCi0gICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBhbGwg
YmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuICov
XAotICAgIFwKLSAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICovXAot
ICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCi0gICAgbWFjcm8obWFya2luZ1Jl
dGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUg
cmV0aXJlZC4gKi8KLQogLy8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXROb3RFbXB0
eSBhbmQgZW1wdHkgdG8gYmUgZXhjbHVzaXZlOgogLy8KIC8vICAgICBjYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5ICYgZW1wdHkgPT0gMApAQCAtNzgsNyArNjYsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogcHVibGljOgot
ICAgIEJsb2NrRGlyZWN0b3J5KEhlYXAqLCBzaXplX3QgY2VsbFNpemUpOworICAgIEJsb2NrRGly
ZWN0b3J5KHNpemVfdCBjZWxsU2l6ZSk7CiAgICAgfkJsb2NrRGlyZWN0b3J5KCk7CiAgICAgdm9p
ZCBzZXRTdWJzcGFjZShTdWJzcGFjZSopOwogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUo
KTsKQEAgLTk4LDcgKzg2LDYgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIGJvb2wgbmVl
ZHNEZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9
PSBOZWVkc0Rlc3RydWN0aW9uOyB9CiAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uOyB9CiAgICAgSGVhcENlbGw6
OktpbmQgY2VsbEtpbmQoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7IH0K
LSAgICBIZWFwKiBoZWFwKCkgeyByZXR1cm4gbV9oZWFwOyB9CiAKICAgICBib29sIGlzRnJlZUxp
c3RlZENlbGwoY29uc3Qgdm9pZCogdGFyZ2V0KTsKIApAQCAtMTE1LDkgKzEwMiw5IEBAIGNsYXNz
IEJsb2NrRGlyZWN0b3J5IHsKICAgICBMb2NrJiBiaXR2ZWN0b3JMb2NrKCkgeyByZXR1cm4gbV9i
aXR2ZWN0b3JMb2NrOyB9CiAKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMo
bG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKLSAgICBib29sIGlzICMjIGNhcGl0
YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJl
dHVybiBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0
YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2JpdHMuaXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKICAgICBib29sIGlz
ICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShs
b2NrZXIsIGJsb2NrLT5pbmRleCgpKTsgfSBcCi0gICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0
TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBt
XyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMg
Y2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wg
dmFsdWUpIHsgbV9iaXRzLnNldElzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7IH0g
XAogICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXIm
IGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMg
IyMgY2FwaXRhbEJpdE5hbWUobG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CiAgICAg
Rk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09S
UykKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUwpAQCAtMTI2LDcgKzExMyw3
IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29u
c3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxP
Q0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBc
Ci0gICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMu
bG93ZXJCaXROYW1lKCkpOwogICAgICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJM
T0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRf
Q0FMTEJBQ0sKICAgICB9CkBAIC0xMzUsNyArMTIyLDcgQEAgY2xhc3MgQmxvY2tEaXJlY3Rvcnkg
ewogICAgIHZvaWQgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRf
Q0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgICAgICBmdW5jKG1f
ICMjIGxvd2VyQml0TmFtZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMu
bG93ZXJCaXROYW1lKCksICNjYXBpdGFsQml0TmFtZSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NL
X0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxP
Q0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSwogICAgIH0KQEAgLTE2NiwxNyArMTUzLDE0IEBAIGNs
YXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5k
QmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJik7CiAgICAgCi0gICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jaygpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IHRyeUFsbG9jYXRlQmxvY2soSGVhcCYpOwogICAgIAogICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6
SGFuZGxlKj4gbV9ibG9ja3M7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGlj
ZXM7CiAKICAgICAvLyBNdXRhdG9yIHVzZXMgdGhpcyB0byBndWFyZCByZXNpemluZyB0aGUgYml0
dmVjdG9ycy4gVGhvc2UgdGhpbmdzIGluIHRoZSBHQyB0aGF0IG1heSBydW4KICAgICAvLyBjb25j
dXJyZW50bHkgdG8gdGhlIG11dGF0b3IgbXVzdCBsb2NrIHRoaXMgd2hlbiBhY2Nlc3NpbmcgdGhl
IGJpdHZlY3RvcnMuCi0jZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfREVDTEFSQVRJT04obG93
ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93
ZXJCaXROYW1lOwotICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNU
T1JZX0JJVF9ERUNMQVJBVElPTikKLSN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFU
SU9OCisgICAgQmxvY2tEaXJlY3RvcnlCaXRzIG1fYml0czsKICAgICBMb2NrIG1fYml0dmVjdG9y
TG9jazsKICAgICBMb2NrIG1fbG9jYWxBbGxvY2F0b3JzTG9jazsKICAgICBDZWxsQXR0cmlidXRl
cyBtX2F0dHJpYnV0ZXM7CkBAIC0xOTAsNyArMTc0LDYgQEAgY2xhc3MgQmxvY2tEaXJlY3Rvcnkg
ewogICAgIAogICAgIC8vIEZJWE1FOiBBbGwgb2YgdGhlc2Ugc2hvdWxkIHByb2JhYmx5IGJlIHJl
ZmVyZW5jZXMuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Njk4OAotICAgIEhlYXAqIG1faGVhcCB7IG51bGxwdHIgfTsKICAgICBTdWJzcGFjZSogbV9z
dWJzcGFjZSB7IG51bGxwdHIgfTsKICAgICBCbG9ja0RpcmVjdG9yeSogbV9uZXh0RGlyZWN0b3J5
IHsgbnVsbHB0ciB9OwogICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3RvcnlJblN1YnNw
YWNlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnlCaXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeUJpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzZhNTg2MTc2MWVlMWIwYTY3OTQyMmFlM2VhODA2
OGI1ZDNiNWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnlCaXRzLmgKQEAgLTAsMCArMSwyNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGFy
cmF5PgorI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBGT1JfRUFDSF9CTE9DS19ESVJFQ1RP
UllfQklUKG1hY3JvKSBcCisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9j
ayBpbmRpY2VzIHRoYXQgaGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhlbXB0eSwg
RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3Rz
LiAqLyBcCisgICAgbWFjcm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxs
IGJsb2NrcyB0aGF0IGFyZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8oY2Fu
QWxsb2NhdGVCdXROb3RFbXB0eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIGFyZSBuZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBtb3Jl
IHRoYW4gbWluTWFya2VkQmxvY2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAorICAgIG1hY3JvKGRl
c3RydWN0aWJsZSwgRGVzdHJ1Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBt
YXkgaGF2ZSBkZXN0cnVjdG9ycyB0byBydW4uICovXAorICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8q
IFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxh
c3QgR0MuICovXAorICAgIG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2YgYWxs
IGJsb2NrcyB0aGF0IGNvdWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAq
L1wKKyAgICBcCisgICAgLyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wK
KyAgICBtYWNybyhtYXJraW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIHRoYXQgYXJlIG5vdCBlbXB0eS4gKi8gXAorICAgIG1hY3JvKG1hcmtpbmdS
ZXRpcmVkLCBNYXJraW5nUmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJl
IHJldGlyZWQuICovCisKK2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBi
aXRzUGVyU2VnbWVudCA9IDMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2VnbWVu
dFNoaWZ0ID0gNTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4TWFzayA9ICgx
VSA8PCBzZWdtZW50U2hpZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8IHNlZ21lbnRT
aGlmdCkgPT0gYml0c1BlclNlZ21lbnQpOworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRf
S0lORF9DT1VOVChsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSArIDEKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcyA9IDAgRk9S
X0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQp
OworI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVAorCisgICAgZW51bSBjbGFz
cyBLaW5kIHsKKyNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OKGxv
d2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgY2FwaXRhbEJpdE5hbWUsCisg
ICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9L
SU5EX0RFQ0xBUkFUSU9OKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJB
VElPTgorICAgIH07CisKKyAgICBjbGFzcyBTZWdtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IFNlZ21lbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHN0ZDo6YXJyYXk8dWludDMyX3QsIG51bWJl
ck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsKKyAgICB9OworCisgICAgdGVt
cGxhdGU8S2luZCBraW5kPgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXcgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAg
ICAgIHVzaW5nIFZpZXdUeXBlID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzsKKwor
ICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KCkgPSBkZWZhdWx0OworCisg
ICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgU2VnbWVudCogc2Vn
bWVudHMsIHNpemVfdCBudW1CaXRzKQorICAgICAgICAgICAgOiBtX3NlZ21lbnRzKHNlZ21lbnRz
KQorICAgICAgICAgICAgLCBtX251bUJpdHMobnVtQml0cykKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gbV9udW1CaXRzOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgd29yZChz
aXplX3QgaW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8
IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAgICAg
cmV0dXJuIG1fc2VnbWVudHNbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2lu
ZCldOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3QmIHdvcmQoc2l6ZV90IGluZGV4KQor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0b3JB
cnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNl
Z21lbnQqPihtX3NlZ21lbnRzKVtpbmRleF0ubV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVkPihr
aW5kKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IFdURjo6ZmFzdEJpdFZl
Y3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgY29u
c3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oa2luZCldID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0b3J5
Qml0VmVjdG9yV29yZFZpZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9Owor
ICAgICAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxL
aW5kIGtpbmQ+CisgICAgdXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RGOjpG
YXN0Qml0VmVjdG9ySW1wbDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+PjsK
KworICAgIHRlbXBsYXRlPEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvclJlZiBmaW5hbCA6IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4g
eworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JS
ZWYoQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPiB2aWV3KQorICAgICAgICAg
ICAgOiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4odmlldykKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAgICAg
ICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShjb25zdCBXVEY6OkZhc3RC
aXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90
aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAg
ICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndv
cmQoaSkgPSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRz
PgorICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25zdCBX
VEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0
cygpID09IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVX
b3JkcygpLndvcmQoaSkgfD0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6
dW5zYWZlV29yZHMoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgY2xhc3MgQml0
UmVmZXJlbmNlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgQml0UmVmZXJlbmNlKCkg
eyB9CisKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSh1aW50MzJfdCogd29yZCwgdWludDMyX3Qg
bWFzaykKKyAgICAgICAgICAgICAgICA6IG1fd29yZCh3b3JkKQorICAgICAgICAgICAgICAgICwg
bV9tYXNrKG1hc2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiAhISgqbV93b3JkICYgbV9tYXNrKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgQml0UmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2YWx1ZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICptX3dv
cmQgfD0gbV9tYXNrOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
Km1fd29yZCAmPSB+bV9tYXNrOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgdWludDMyX3QqIG1fd29y
ZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1fbWFzayB7IDAgfTsKKyAgICAg
ICAgfTsKKworICAgICAgICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4KQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8
a2luZD46Om51bUJpdHMoKSk7CisgICAgICAgICAgICByZXR1cm4gQml0UmVmZXJlbmNlKCZCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCkud29yZChpbmRleCA+
PiA1KSwgMSA8PCAoaW5kZXggJiAzMSkpOworICAgICAgICB9CisKKyAgICAgICAgQml0UmVmZXJl
bmNlIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gYXQoaW5kZXgpOworICAgICAgICB9CisgICAgfTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RP
UllfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAg
IGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCBcCisgICAgeyBc
CisgICAgICAgIHJldHVybiBsb3dlckJpdE5hbWUoKVtpbmRleF07IFwKKyAgICB9IFwKKyAgICB2
b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgXAor
ICAgIHsgXAorICAgICAgICBsb3dlckJpdE5hbWUoKVtpbmRleF0gPSB2YWx1ZTsgXAorICAgIH0g
XAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4g
bG93ZXJCaXROYW1lKCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21lbnRzLmRhdGEoKSwg
bV9udW1CaXRzKSk7IFwKKyAgICB9IFwKKyAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxL
aW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgXAorICAgIHsgXAorICAgICAgICBy
ZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KEJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KG1fc2Vn
bWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9CTE9DS19E
SVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIEJMT0NL
X0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCisKKyAgICB1bnNpZ25lZCBudW1CaXRzKCkgY29uc3Qg
eyByZXR1cm4gbV9udW1CaXRzOyB9CisKKyAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBudW1CaXRz
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgb2xkTnVtQml0cyA9IG1fbnVtQml0czsKKyAgICAg
ICAgbV9udW1CaXRzID0gbnVtQml0czsKKyAgICAgICAgbV9zZWdtZW50cy5yZXNpemUoKG51bUJp
dHMgKyBiaXRzUGVyU2VnbWVudCAtIDEpID4+IHNlZ21lbnRTaGlmdCk7CisgICAgICAgIGlmIChu
dW1CaXRzIDwgb2xkTnVtQml0cyAmJiBudW1CaXRzKSB7CisgICAgICAgICAgICAvLyBDbGVhciB0
aGUgbGFzdCBzZWdtZW50LgorICAgICAgICAgICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHNb
bnVtQml0cyA+PiBzZWdtZW50U2hpZnRdOworICAgICAgICAgICAgdWludDMyX3QgbWFzayA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PigoMVVMTCA8PCAobnVtQml0cyAmIGluZGV4TWFzaykpIC0gMSk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZkJs
b2NrRGlyZWN0b3J5Qml0S2luZHM7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgc2VnbWVudC5t
X2RhdGFbaW5kZXhdICY9IG1hc2s7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuYyYgZnVuYykK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBz
ZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgICAgIGZ1bmMoaW5kZXgrKywgc2VnbWVudCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxTZWdtZW50PiBtX3NlZ21lbnRzOworICAg
IHVuc2lnbmVkIG1fbnVtQml0cyB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaApp
bmRleCA0MWNiYjQ5YzI2NDk1NjZkZWNkZjc4MjM4M2JlYzg4Y2EyMmJhNTc1Li42ODRiMWE4ZDg2
YzRjNzU5NzBkNDg2OGNmZDQwYmM2Nzk2YjAwYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaApAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lk
IEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsK
LSAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMubGl2ZSgpLmZvckVhY2hTZXRC
aXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1f
YmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0pOwpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9j
ayhjb25zdCBGdW5jdAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7Ci0gICAgbV9tYXJraW5nTm90RW1wdHkuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMu
bWFya2luZ05vdEVtcHR5KCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKICAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmlu
ZGV4IDJjYjk1MmY2NzgyZTdkYjgwNTQ3NzE1MzlkNTllZGI5YTg5NDEyYmMuLmU0ZGM2MjM2OGFh
NDgyYzk5Njk2NmQ0OGJhMzhjNzQxMDUyMzJlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9ySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJTdWJz
cGFjZUlubGluZXMuaCIKIApAQCAtNzksNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJz
cGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAoZmFsc2UpCiAgICAg
ICAgIGRhdGFMb2coIkNyZWF0aW5nIEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAi
LCBtX25hbWUsICIsICIsIGF0dHJpYnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAg
ICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3Rvcnkg
PSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9IG1h
a2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KHNpemVDbGFzcyk7CiAgICAgQmxvY2tEaXJlY3Rvcnkq
IGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQoKTsKICAgICBtX2RpcmVjdG9yaWVzLmFw
cGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwogICAgIApAQCAtMTA1LDcgKzEwNiw3IEBA
IEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXpl
KQogICAgIH0KICAgICAKICAgICBkaXJlY3RvcnktPnNldE5leHREaXJlY3RvcnlJblN1YnNwYWNl
KG1fZmlyc3REaXJlY3RvcnkpOwotICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0
ZXJEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJl
Z2lzdGVyRGlyZWN0b3J5KG1fc3BhY2UuaGVhcCgpLCBkaXJlY3RvcnkpOwogICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CiAgICAgbV9maXJzdERpcmVjdG9yeSA9IGRpcmVjdG9yeTsKICAgICBy
ZXR1cm4gYWxsb2NhdG9yOwpAQCAtMTI3LDcgKzEyOCw3IEBAIHZvaWQqIENvbXBsZXRlU3Vic3Bh
Y2U6OnRyeUFsbG9jYXRlU2xvdyhWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4
dCoKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIAogICAgIGlmIChBbGxvY2F0b3Ig
YWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkVuc3VyZUFs
bG9jYXRvcikpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUoZGVmZXJyYWxDb250
ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICByZXR1cm4g
YWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAKICAgICBpZiAoc2l6ZSA8PSBPcHRpb25zOjpw
cmVjaXNlQWxsb2NhdGlvbkN1dG9mZigpCiAgICAgICAgICYmIHNpemUgPD0gTWFya2VkU3BhY2U6
OmxhcmdlQ3V0b2ZmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29t
cGxldGVTdWJzcGFjZUlubGluZXMuaAppbmRleCBlYWNlMmE2ZjVjODc3OWFmZGYwNjE2MGEzODE3
OGJjYzk5MzIyZjQwLi44NzFkZjJiMjc4OGQzYWVhMTdjYWIzZDljMmFmNWM2NDZhNTNhY2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJ
bmxpbmVzLmgKQEAgLTM2LDcgKzM2LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkKiBDb21wbGV0ZVN1
YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0MKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CiAKICAgICBpZiAoQWxs
b2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9y
Rm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFs
bG9jYXRlKGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOworICAgICAgICByZXR1cm4gYWxs
b2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwog
ICAgIHJldHVybiBhbGxvY2F0ZVNsb3codm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVy
ZU1vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29D
ZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmlu
ZGV4IGFhNjJlMTFmZDQ0ZjZhYmNiYmJmNDI1Yjg2ZmRmMTExODBhODQ3OWMuLjgwYTljZWI2YTM3
OTZlOTNlNDZlMzc0MTdjOTlmMmViNjhmMGE0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgICAg
ICAgICAgYXV0byBiaXRzID0gbV9kaXJlY3RvcnkubV9tYXJraW5nTm90RW1wdHkgJiBtX3NldC5t
X2Jsb2Nrc1dpdGhCaXRzOworICAgICAgICAgICAgYXV0byBiaXRzID0gbV9kaXJlY3RvcnkubV9i
aXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9zZXQubV9ibG9ja3NXaXRoQml0czsKICAgICAgICAg
ICAgIG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CiAgICAgICAgICAgICBp
ZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nrcy5zaXplKCkpIHsKICAgICAgICAgICAg
ICAgICBtX2RvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXRJbmxpbmVzLmgKaW5kZXggZmM4MTY5Mjg3ZjA1NjZiZWViODlkMTk4NDcxOTExYTRhNzU5
YzRlMS4uZGI3ZThhY2I1NjFiMWQyMmQ0NzYxNjVjYmM0MDhiYzM4ZjY1NmMyZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03MCw3ICs3
MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2b2lkIElzb0NlbGxTZXQ6OmZvckVhY2hN
YXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgQmxvY2tEaXJlY3RvcnkmIGRpcmVj
dG9yeSA9IG1fc3Vic3BhY2UubV9kaXJlY3Rvcnk7Ci0gICAgKGRpcmVjdG9yeS5tX21hcmtpbmdO
b3RFbXB0eSAmIG1fYmxvY2tzV2l0aEJpdHMpLmZvckVhY2hTZXRCaXQoCisgICAgKGRpcmVjdG9y
eS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0
Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBibG9ja0luZGV4KSB7CiAgICAgICAgICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9yeS5tX2Jsb2Nrc1tibG9ja0luZGV4XTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IDQ1M2U2
MDIzM2Q2MTFkNDdjMzE3YmI3M2RjYjliMjY2ZTkwOTZjZTQuLmUxM2YwMjBmNTdiN2I3MDM5YzY3
MzgzMTJlZGY4NzBjYzhjODVjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZS5jcHAKQEAgLTMyLDE3ICszMiwxOCBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSXNvU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9jYWxB
bGxvY2F0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCiBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBI
ZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUsIHVpbnQ4
X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscykKICAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXApCi0g
ICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZGlyZWN0b3J5KCZoZWFwLCBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKKyAgICAsIG1fZGlyZWN0
b3J5KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUp
KQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3RvcnkpCiAgICAgLCBtX2lzb0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigp
KQogICAgICwgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQobnVtYmVyT2ZMb3dlclRpZXJD
ZWxscykKIHsKKyAgICBBU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2Nr
OjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7CiAgICAgQVNTRVJUKG51bWJlck9mTG93
ZXJUaWVyQ2VsbHMgPD0gTWFya2VkQmxvY2s6Om1heE51bWJlck9mTG93ZXJUaWVyQ2VsbHMpOwog
ICAgIG1faXNJc29TdWJzcGFjZSA9IHRydWU7CiAgICAgaW5pdGlhbGl6ZShoZWFwQ2VsbFR5cGUs
IG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5nZXQoKSk7CkBAIC01MCw3ICs1MSw3IEBAIElz
b1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxs
VHlwZSogaGVhcENlbGxUeXBlLCBzCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NwYWNl
LmRpcmVjdG9yeUxvY2soKSk7CiAgICAgbV9kaXJlY3Rvcnkuc2V0U3Vic3BhY2UodGhpcyk7CiAg
ICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9yeShsb2NrZXIsICZtX2RpcmVjdG9yeSk7Ci0gICAg
bV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeSgmbV9kaXJlY3Rvcnkp
OworICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJEaXJlY3RvcnkoaGVhcCwg
Jm1fZGlyZWN0b3J5KTsKICAgICBtX2ZpcnN0RGlyZWN0b3J5ID0gJm1fZGlyZWN0b3J5OwogfQog
CkBAIC0xMTEsOCArMTEyLDcgQEAgdm9pZCogSXNvU3Vic3BhY2U6OnRyeUFsbG9jYXRlRnJvbUxv
d2VyVGllcigpCiAgICAgICAgIHJldHVybiByZXZpdmUoYWxsb2NhdGlvbik7CiAgICAgfQogICAg
IGlmIChtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCkgewotICAgICAgICBzaXplX3Qgc2l6
ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRTcGFjZTo6c2l6ZVN0ZXA+KG1fc2l6
ZSk7Ci0gICAgICAgIFByZWNpc2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uID0gUHJlY2lzZUFsbG9j
YXRpb246OmNyZWF0ZUZvckxvd2VyVGllcigqbV9zcGFjZS5oZWFwKCksIHNpemUsIHRoaXMsIC0t
bV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQpOworICAgICAgICBQcmVjaXNlQWxsb2NhdGlv
biogYWxsb2NhdGlvbiA9IFByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIobV9z
cGFjZS5oZWFwKCksIGNlbGxTaXplKCksIHRoaXMsIC0tbV9yZW1haW5pbmdMb3dlclRpZXJDZWxs
Q291bnQpOwogICAgICAgICByZXR1cm4gcmV2aXZlKGFsbG9jYXRpb24pOwogICAgIH0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCmlu
ZGV4IGNhNzc3ZDA4YWYxZGE1ZTAwOTVjMjg4OWMxMjQ0ZjRkZTZjY2E1NjMuLjU1OTg4OWI4MDk1
NzFlNzUzNjAwZDRmMGE1MmExMjE3ODQwNTY5NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvU3Vic3BhY2UuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1
YmxpYyBTdWJzcGFjZSB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmlu
ZyBuYW1lLCBIZWFwJiwgSGVhcENlbGxUeXBlKiwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVy
T2ZMb3dlclRpZXJDZWxscyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb1N1YnNwYWNlKCk7
CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHNpemVf
dCBjZWxsU2l6ZSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5LmNlbGxTaXplKCk7IH0KIAogICAgIEFs
bG9jYXRvciBhbGxvY2F0b3JGb3Ioc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKSBvdmVycmlkZTsK
ICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplX3QsIEFsbG9jYXRvckZv
ck1vZGUpOwpAQCAtNjMsNyArNjMsNiBAQCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJz
cGFjZSB7CiAgICAgdm9pZCBkaWRSZW1vdmVCbG9jayhzaXplX3QgYmxvY2tJbmRleCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFu
ZGxlKikgb3ZlcnJpZGU7CiAgICAgCi0gICAgc2l6ZV90IG1fc2l6ZTsKICAgICBCbG9ja0RpcmVj
dG9yeSBtX2RpcmVjdG9yeTsKICAgICBMb2NhbEFsbG9jYXRvciBtX2xvY2FsQWxsb2NhdG9yOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBtX2lzb0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I7CkBAIC03NCw3ICs3Myw3IEBAIGNsYXNzIElzb1N1YnNwYWNlIDog
cHVibGljIFN1YnNwYWNlIHsKIAogQUxXQVlTX0lOTElORSBBbGxvY2F0b3IgSXNvU3Vic3BhY2U6
OmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZV90IHNpemUsIEFsbG9jYXRvckZvck1vZGUpCiB7
Ci0gICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSB0aGlzLT5zaXplKCkpOworICAgIFJFTEVBU0Vf
QVNTRVJUKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNp
emUpID09IGNlbGxTaXplKCkpOwogICAgIHJldHVybiBBbGxvY2F0b3IoJm1fbG9jYWxBbGxvY2F0
b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5s
aW5lcy5oCmluZGV4IDA1MThhN2ZlMDYyZDYwOTE2OWQ3YmMzZjc1M2M1ODRkYzRlZWNmNzAuLjQ2
NjBlNzc4M2FhNjcyZWM4YTI5ZjRmNGYzM2MyMzJjYjQ2ZGY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCkBAIC0yNywxMSArMjcsMTEg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogSXNvU3Vic3BhY2U6
OmFsbG9jYXRlTm9uVmlydHVhbChWTSYsIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCog
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCitBTFdB
WVNfSU5MSU5FIHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBz
aXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0g
dGhpcy0+c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICBBbGxv
Y2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpNdXN0QWxyZWFkeUhhdmVBbGxvY2F0b3IpOwotICAgIHZvaWQqIHJlc3VsdCA9IGFs
bG9jYXRvci5hbGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICB2b2lk
KiByZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBm
YWlsdXJlTW9kZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAppbmRleCBiOWUxODUwOTA0MmU3MDE3
MDdiNjc2ZTg4MjFiMGM0MWFmNWQ4ZDgyLi5iMmY2YmJkOWI5NDc4YzJhNTFjM2YxMzgxODcyZDFh
NmRjZmI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZVBlclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZVBlclZNLmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBJc29TdWJzcGFjZVBlclZNOjpBdXRv
cmVtb3ZpbmdJc29TdWJzcGFjZSA6IHB1YmxpYyBJc29TdWJzcGFjZSB7CiAgICAgfkF1dG9yZW1v
dmluZ0lzb1N1YnNwYWNlKCkKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9wZXJWTS5tX2xvY2spOwotICAgICAgICBtX3BlclZNLm1fc3Vic3BhY2VQZXJWTS5yZW1vdmUo
JnNwYWNlKCkuaGVhcCgpLT52bSgpKTsKKyAgICAgICAgbV9wZXJWTS5tX3N1YnNwYWNlUGVyVk0u
cmVtb3ZlKCZzcGFjZSgpLmhlYXAoKS52bSgpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKaW5kZXggNTNlMDUwOGFi
MmZmMDFjZjRkNDlhN2ZmMDcwMTc3MWYwZjBhYzRhZC4uZjU1NTcxYzg2Y2ZiMmUwYWU0Y2JkMWUw
YWUyN2ZkYjg1MGJkMGZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWxBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2Fs
QWxsb2NhdG9yLmNwcApAQCAtMTEwLDEyICsxMTAsMTEgQEAgdm9pZCBMb2NhbEFsbG9jYXRvcjo6
c3RvcEFsbG9jYXRpbmdGb3JHb29kKCkKICAgICByZXNldCgpOwogfQogCi12b2lkKiBMb2NhbEFs
bG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250
ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCit2b2lkKiBMb2NhbEFsbG9j
YXRvcjo6YWxsb2NhdGVTbG93Q2FzZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAg
U3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIEhlYXAmIGhl
YXAgPSAqbV9kaXJlY3RvcnktPm1faGVhcDsKICAgICBBU1NFUlQoaGVhcC52bSgpLmN1cnJlbnRU
aHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQo
ZGVmZXJyYWxDb250ZXh0KTsKKyAgICBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKGhlYXAsIGRl
ZmVycmFsQ29udGV4dCk7CiAKICAgICBBU1NFUlQoIW1fZGlyZWN0b3J5LT5tYXJrZWRTcGFjZSgp
LmlzSXRlcmF0aW5nKCkpOwogICAgIGhlYXAuZGlkQWxsb2NhdGUobV9mcmVlTGlzdC5vcmlnaW5h
bFNpemUoKSk7CkBAIC0xMjksNyArMTI4LDcgQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9j
YXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2MKICAg
ICAvLyBHb29meSBjb3JuZXIgY2FzZTogdGhlIEdDIGNhbGxlZCBhIGNhbGxiYWNrIGFuZCBub3cg
dGhpcyBkaXJlY3RvcnkgaGFzIGEgY3VycmVudEJsb2NrLiBUaGlzIG9ubHkKICAgICAvLyBoYXBw
ZW5zIHdoZW4gcnVubmluZyBXZWJLaXQgdGVzdHMsIHdoaWNoIGluamVjdCBhIGNhbGxiYWNrIGlu
dG8gdGhlIEdDJ3MgZmluYWxpemF0aW9uLgogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCbG9j
aykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2Rl
KTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKGhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVy
ZU1vZGUpOwogICAgIAogICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxl
Y3RpbmcoKTsKICAgICAKQEAgLTE0Miw3ICsxNDEsNyBAQCB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6
YWxsb2NhdGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxv
YwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2sgPSBtX2RpcmVjdG9yeS0+dHJ5QWxsb2NhdGVCbG9jaygpOworICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9kaXJlY3RvcnktPnRyeUFsbG9jYXRlQmxv
Y2soaGVhcCk7CiAgICAgaWYgKCFibG9jaykgewogICAgICAgICBpZiAoZmFpbHVyZU1vZGUgPT0g
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjQ5LDE4ICsyNDgsMTggQEAgdm9pZCogTG9jYWxBbGxvY2F0
b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotdm9pZCBMb2NhbEFsbG9jYXRvcjo6ZG9UZXN0Q29sbGVjdGlvbnNJZk5l
ZWRlZChHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0KQordm9pZCBMb2NhbEFsbG9j
YXRvcjo6ZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29u
dGV4dCogZGVmZXJyYWxDb250ZXh0KQogewogICAgIGlmICghT3B0aW9uczo6c2xvd1BhdGhBbGxv
Y3NCZXR3ZWVuR0NzKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBh
bGxvY2F0aW9uQ291bnQgPSAwOwogICAgIGlmICghYWxsb2NhdGlvbkNvdW50KSB7Ci0gICAgICAg
IGlmICghbV9kaXJlY3RvcnktPm1faGVhcC0+aXNEZWZlcnJlZCgpKSB7CisgICAgICAgIGlmICgh
aGVhcC5pc0RlZmVycmVkKCkpIHsKICAgICAgICAgICAgIGlmIChkZWZlcnJhbENvbnRleHQpCiAg
ICAgICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LT5tX3Nob3VsZEdDID0gdHJ1ZTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2RpcmVjdG9yeS0+bV9oZWFwLT5jb2xsZWN0
Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CisgICAgICAgICAgICAgICAgaGVhcC5j
b2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiAgICAgICAgIH0KICAgICB9
CiAgICAgaWYgKCsrYWxsb2NhdGlvbkNvdW50ID49IE9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0
d2VlbkdDcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxB
bGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgK
aW5kZXggNDM3MjczZjM2NjgwZTRhODA5Njg3Y2RmOGM4ZTRhOGNmNGVjYzFhZC4uOWI2NTFiMDcw
Mzc2ODE0ZjJhMzk3YmIyYTE4NmVkNzAwMDk5ZDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBCbG9ja0RpcmVjdG9yeTsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OworY2xh
c3MgSGVhcDsKIAogY2xhc3MgTG9jYWxBbGxvY2F0b3IgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5l
bE5vZGU8TG9jYWxBbGxvY2F0b3I+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbEFs
bG9jYXRvcik7CkBAIC00Miw3ICs0Myw3IEBAIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGlj
IEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgTG9jYWxBbGxvY2F0
b3IoQmxvY2tEaXJlY3RvcnkqKTsKICAgICB+TG9jYWxBbGxvY2F0b3IoKTsKICAgICAKLSAgICB2
b2lkKiBhbGxvY2F0ZShHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7
CisgICAgdm9pZCogYWxsb2NhdGUoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlv
bkZhaWx1cmVNb2RlKTsKICAgICAKICAgICB1bnNpZ25lZCBjZWxsU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJlZUxpc3QuY2VsbFNpemUoKTsgfQogCkBAIC02MCwxMiArNjEsMTIgQEAgY2xhc3Mg
TG9jYWxBbGxvY2F0b3IgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TG9jYWxBbGxvY2F0
b3I+IHsKICAgICBmcmllbmQgY2xhc3MgQmxvY2tEaXJlY3Rvcnk7CiAgICAgCiAgICAgdm9pZCBy
ZXNldCgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoR0NE
ZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoSGVhcCYsIEdDRGVmZXJy
YWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKTsKICAgICB2b2lkIGRpZENvbnN1bWVG
cmVlTGlzdCgpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAg
ICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkKiBh
bGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
ZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChHQ0RlZmVycmFsQ29udGV4dCopOworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKEhlYXAmLCBHQ0RlZmVycmFs
Q29udGV4dCopOwogCiAgICAgQmxvY2tEaXJlY3RvcnkqIG1fZGlyZWN0b3J5OwogICAgIEZyZWVM
aXN0IG1fZnJlZUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2Fs
QWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDAwZDU1NzQ3NDI2OWQ1NzI0MjdmZDdkOTU3OWExZjBj
YTRhZDVhZjEuLmMzYzg2OTVlODU4OGM3OTAzNTA4ZWFlOWY1MWEyZjc5OWY5ODNmNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5o
CkBAIC0zMCwxNCArMzAsMTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUg
dm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJh
bENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKK0FMV0FZU19JTkxJ
TkUgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxD
b250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9k
ZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fZGlyZWN0b3J5LT5oZWFwKCktPmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaGVhcC5leHBlY3REb2VzR0MoKSk7CiAgICAgcmV0dXJuIG1fZnJlZUxpc3QuYWxsb2Nh
dGUoCiAgICAgICAgIFsmXSAoKSAtPiBIZWFwQ2VsbCogewotICAgICAgICAgICAgc2FuaXRpemVT
dGFja0ZvclZNKG1fZGlyZWN0b3J5LT5oZWFwKCktPnZtKCkpOwotICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhlYXBDZWxsKj4oYWxsb2NhdGVTbG93Q2FzZShkZWZlcnJhbENvbnRleHQs
IGZhaWx1cmVNb2RlKSk7CisgICAgICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgp
KTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xv
d0Nhc2UoaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSkpOwogICAgICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IGM2
ZTFmNmNkZjUwMjdmZTE0MGY2NDRlY2E0OTE5MGY0ODQ4YjI1YTMuLjk3OWUzY2FlNjhjNTEwYWM0
NTdmY2QyNmJlYTQ2Nzc0MTg3YmZiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5jcHAKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmR1bXBTdGF0ZShQcmludFN0cmVhbSYgb3V0KQogICAgIENvbW1hUHJpbnRlciBjb21tYTsK
ICAgICBkaXJlY3RvcnkoKS0+Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAgICBob2xk
TG9jayhkaXJlY3RvcnkoKS0+Yml0dmVjdG9yTG9jaygpKSwKLSAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiBiaXR2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgWyZdIChhdXRv
IGJpdHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgewogICAgICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCBuYW1lLCAiOiIsIGJpdHZlY3RvcltpbmRleCgpXSA/ICJZRVMiIDogIm5vIik7CiAgICAg
ICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCmlu
ZGV4IDk3MDNlMzU3MWUzZjRjZGY4YjIxMjgwYzM5MTA3MTkxM2UzNWM4YTguLmQ0MDhkNmVlZjFj
MzcyMTEwODdlZjY2ZGY2Y2EyZDIyZmY5MzFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRTcGFjZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU09iamVj
dC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvTGlz
dER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xOTUsOCArMTk2LDggQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6aW5pdGlhbGl6ZVNpemVDbGFzc0ZvclN0ZXBTaXplKCkKIH0KIAogTWFya2VkU3Bh
Y2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCi0gICAgOiBtX2hlYXAoaGVhcCkKIHsKKyAgICBB
U1NFUlRfVU5VU0VEKGhlYXAsIGhlYXAgPT0gJnRoaXMtPmhlYXAoKSk7CiAgICAgaW5pdGlhbGl6
ZVNpemVDbGFzc0ZvclN0ZXBTaXplKCk7CiB9CiAKQEAgLTIzNCw3ICsyMzUsNyBAQCB2b2lkIE1h
cmtlZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAKIHZvaWQgTWFya2VkU3BhY2U6OnN3
ZWVwQmxvY2tzKCkKIHsKLSAgICBtX2hlYXAtPnN3ZWVwZXIoKS5zdG9wU3dlZXBpbmcoKTsKKyAg
ICBoZWFwKCkuc3dlZXBlcigpLnN0b3BTd2VlcGluZygpOwogICAgIGZvckVhY2hEaXJlY3Rvcnko
CiAgICAgICAgIFsmXSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0aW9uU3Rh
dHVzIHsKICAgICAgICAgICAgIGRpcmVjdG9yeS5zd2VlcCgpOwpAQCAtMjcwLDEzICsyNzEsMTMg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXBQcmVjaXNlQWxsb2NhdGlvbnMoKQogCiB2b2lkIE1h
cmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFUaHJlYWQ6
Om1heUJlR0NUaHJlYWQoKSB8fCBtX2hlYXAtPndvcmxkSXNTdG9wcGVkKCkpOworICAgIEFTU0VS
VCghVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkgfHwgaGVhcCgpLndvcmxkSXNTdG9wcGVkKCkpOwog
ICAgIGZvciAoU3Vic3BhY2UqIHN1YnNwYWNlIDogbV9zdWJzcGFjZXMpCiAgICAgICAgIHN1YnNw
YWNlLT5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtl
RnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0
aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCisgICAgaWYgKGhlYXAoKS5jb2xs
ZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCiAgICAgICAgIG1fcHJlY2lz
ZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9wcmVjaXNlQWxsb2NhdGlvbnNO
dXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNOdXJz
ZXJ5T2Zmc2V0Rm9yU3dlZXAgPSAwOwpAQCAtMjk4LDcgKzI5OSw3IEBAIHZvaWQgTWFya2VkU3Bh
Y2U6OnZpc2l0V2Vha1NldHMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgCiAgICAgbV9uZXdB
Y3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5jb2xs
ZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCisgICAgaWYgKGhlYXAoKS5j
b2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fYWN0
aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiB9CiAKQEAgLTMxMCw3ICszMTEsNyBAQCB2b2lk
IE1hcmtlZFNwYWNlOjpyZWFwV2Vha1NldHMoKQogICAgIAogICAgIG1fbmV3QWN0aXZlV2Vha1Nl
dHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3Bl
KCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRz
LmZvckVhY2godmlzaXQpOwogfQogCkBAIC0zNTYsNyArMzU3LDcgQEAgdm9pZCBNYXJrZWRTcGFj
ZTo6cHJlcGFyZUZvckNvbnNlcnZhdGl2ZVNjYW4oKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpwcmVw
YXJlRm9yTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0g
Q29sbGVjdGlvblNjb3BlOjpFZGVuKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc09m
ZnNldEZvclRoaXNDb2xsZWN0aW9uID0gbV9wcmVjaXNlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0
OwogICAgIGVsc2UKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbiA9IDA7CkBAIC00MTYsNyArNDE3LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5r
KCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFw
LT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKKyAgICBpZiAo
aGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgewogICAg
ICAgICBmb3JFYWNoRGlyZWN0b3J5KAogICAgICAgICAgICAgWyZdIChCbG9ja0RpcmVjdG9yeSYg
ZGlyZWN0b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgICAgIGRpcmVjdG9y
eS5iZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpOwpAQCAtNTUxLDcgKzU1Miw3IEBAIHZv
aWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKIAogdm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkKIHsKLSAgICBpZiAo
bV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pIHsKKyAg
ICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikg
ewogICAgICAgICBmb3JFYWNoRGlyZWN0b3J5KAogICAgICAgICAgICAgWyZdIChCbG9ja0RpcmVj
dG9yeSYgZGlyZWN0b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgICAgIGRp
cmVjdG9yeS5zbmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKaW5kZXggMDA2ODA1YjQ0N2JlMWI1MjFiY2E0NDRj
MWRjZWExZWY3NDI3ODQ4OC4uYWQzNjYyMmYxYjU3ZGQ2NmJjY2YzZDlhYTRmZjIxODYwYzMxMjcw
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC05NSw3ICs5
NSw3IEBAIGNsYXNzIE1hcmtlZFNwYWNlIHsKICAgICBNYXJrZWRTcGFjZShIZWFwKik7CiAgICAg
fk1hcmtlZFNwYWNlKCk7CiAgICAgCi0gICAgSGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhcDsgfQorICAgIEhlYXAmIGhlYXAoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGxhc3RDaGFu
Y2VUb0ZpbmFsaXplKCk7IC8vIE11c3QgY2FsbCBzdG9wQWxsb2NhdGluZ0Zvckdvb2QgZmlyc3Qu
CiAgICAgdm9pZCBmcmVlTWVtb3J5KCk7CkBAIC0yMTMsNyArMjEzLDYgQEAgY2xhc3MgTWFya2Vk
U3BhY2UgewogICAgIFByZWNpc2VBbGxvY2F0aW9uKiogbV9wcmVjaXNlQWxsb2NhdGlvbnNGb3JU
aGlzQ29sbGVjdGlvbkJlZ2luIHsgbnVsbHB0ciB9OwogICAgIFByZWNpc2VBbGxvY2F0aW9uKiog
bV9wcmVjaXNlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCB7IG51bGxwdHIgfTsKIAot
ICAgIEhlYXAqIG1faGVhcDsKICAgICBzaXplX3QgbV9jYXBhY2l0eSB7IDAgfTsKICAgICBIZWFw
VmVyc2lvbiBtX21hcmtpbmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKICAgICBIZWFwVmVy
c2lvbiBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCmluZGV4IGRmODUz
MWQ5N2ZjNjk1YTIyY2YyN2QyNWExYTQ4OTBmMGJlMzVhZjUuLmVhODUxNDY0OTMzMDI4YzUwOTA5
OTZmMmU2NTE0NzdhMTQyZTNkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlSW5saW5lcy5oCkBAIC0zMCw2ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorQUxXQVlTX0lOTElORSBIZWFwJiBNYXJrZWRTcGFjZTo6aGVhcCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SGVhcCo+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRo
aXMpIC0gT0JKRUNUX09GRlNFVE9GKEhlYXAsIG1fb2JqZWN0U3BhY2UpKTsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZl
Q2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAg
IEFTU0VSVChpc0l0ZXJhdGluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNl
LmNwcAppbmRleCA5NGMyZmY0YzZiMmFjYTZjMTlkYzE1OGNiNGY4ZTYzNzM0ZDBlM2E3Li5hYjk5
ZTJkYTZjNWMzYjM1MTM2YjE3YWU0NGU1MWJhNzhhOTg5NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSGVhcENl
bGxUeXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2Nr
SW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlBh
cmFsbGVsU291cmNlQWRhcHRlci5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUu
aCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKQEAgLTQ5LDcgKzUwLDcgQEAgdm9pZCBT
dWJzcGFjZTo6aW5pdGlhbGl6ZShIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgQWxpZ25lZE1l
bW9yeUFsbG9jYXRvciogYWwKICAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3IgPSBhbGlnbmVk
TWVtb3J5QWxsb2NhdG9yOwogICAgIG1fZGlyZWN0b3J5Rm9yRW1wdHlBbGxvY2F0aW9uID0gbV9h
bGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5maXJzdERpcmVjdG9yeSgpOwogCi0gICAgSGVhcCYgaGVh
cCA9ICptX3NwYWNlLmhlYXAoKTsKKyAgICBIZWFwJiBoZWFwID0gbV9zcGFjZS5oZWFwKCk7CiAg
ICAgaGVhcC5vYmplY3RTcGFjZSgpLm1fc3Vic3BhY2VzLmFwcGVuZCh0aGlzKTsKICAgICBtX2Fs
aWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyU3Vic3BhY2UodGhpcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgKaW5kZXggYThlZDZiODI4OTAwZmUwMjEzYmRlZDljNjM3NWM5N2IwYTM2Yzg1
OS4uNDk0ZTY0ODlmZTRhMWRiMjJkYjI3NDY3ZTY5MTcyYWEzNzIwMmRiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuaApAQCAtNDIxLDYgKzQyMSw5IEBAIGNsYXNzIEZhc3RCaXRWZWN0b3JJbXBsIHsK
ICAgICB9CiAgICAgCiAgICAgdHlwZW5hbWUgV29yZHM6OlZpZXdUeXBlIHdvcmRWaWV3KCkgY29u
c3QgeyByZXR1cm4gbV93b3Jkcy52aWV3KCk7IH0KKworICAgIFdvcmRzJiB1bnNhZmVXb3Jkcygp
IHsgcmV0dXJuIG1fd29yZHM7IH0KKyAgICBjb25zdCBXb3JkcyYgdW5zYWZlV29yZHMoKSBjb25z
dCB7IHJldHVybiBtX3dvcmRzOyB9CiAgICAgCiBwcml2YXRlOgogICAgIC8vIFlvdSdkIHRoaW5r
IHRoYXQgd2UgY291bGQgcmVtb3ZlIHRoaXMgZnJpZW5kIGlmIHdlIHVzZWQgcHJvdGVjdGVkLCBi
dXQgeW91J2QgYmUgd3JvbmcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383507</attachid>
            <date>2019-11-13 16:02:13 -0800</date>
            <delta_ts>2019-11-13 16:31:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113160213.patch</filename>
            <type>text/plain</type>
            <size>60083</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li45M2JiOWEyZGQzMDYzNjBi
OGRlNTZiNzM2ZGMzNWI4ZTk5MmY1ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0cyBzaG91bGQgYmUgY29tcGFj
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MTQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGhlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KToKKyAg
ICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFwL0Fs
bG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpBbGxvY2F0b3I6OmFsbG9jYXRlIGNvbnN0KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCk6
CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2spOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0Rp
cmVjdG9yeTo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6cHJl
cGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YmVnaW5N
YXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6
ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dl
cHRGb3JFZGVuQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFw
c2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0
b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnN3
ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNocmluayk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrU291cmNlKToKKyAgICAgICAgKEpTQzo6
QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGlyZWN0b3J5
Lmg6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpjZWxsS2luZCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5OjpoZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0Jsb2Nr
RGlyZWN0b3J5Qml0cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
cldvcmRWaWV3KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvcldvcmRWaWV3OjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp3b3JkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3Ojp3b3JkKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRz
OjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpjbGVhckFsbCk6CisgICAgICAgIChK
U0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzo6
dmlldyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6bnVtQml0cyBj
b25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6cmVzaXplKToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpmb3JFYWNoU2VnbWVudCk6CisgICAgICAgICog
aGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rv
cnk6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNo
Tm90RW1wdHlCbG9jayk6CisgICAgICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyk6CisgICAgICAg
IChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyk6CisgICAgICAgICogaGVh
cC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21wbGV0ZVN1YnNw
YWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvSXNvQ2VsbFNldC5jcHA6
CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRCbG9ja1Nv
dXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAgICAgICAoSlND
OjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjpJc29TdWJzcGFjZSk6CisgICAg
ICAgIChKU0M6Oklzb1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIpOgorICAgICAg
ICAqIGhlYXAvSXNvU3Vic3BhY2UuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmNlbGxT
aXplKToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5vblZpcnR1YWwp
OgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3Bh
Y2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZVBlclZN
LmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vi
c3BhY2U6On5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSk6CisgICAgICAgICogaGVhcC9Mb2NhbEFs
bG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dD
YXNlKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZO
ZWVkZWQpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAgICAgKiBoZWFw
L0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFsbG9jYXRvcjo6
YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2Vk
U3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MpOgorICAgICAgICAoSlNDOjpNYXJr
ZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFj
ZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpyZWFwV2Vha1Nl
dHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtpbmcpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5o
OgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aGVhcCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmhlYXAgY29uc3QpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgorICAgICAgICAo
SlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisKIDIwMTktMTEtMTMgIFJvYmluIE1vcmlzc2V0
ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KIAogICAgICAgICBTcGxpdCBBcml0aFByb2ZpbGUgaW50
byBhIFVuYXJ5IGFuZCBhIEJpbmFyeSB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU1ZTc5NTE1YTJiZDE5YjM0MzUw
ZmE2OWRlOTkzOGVmYTY4ZTNlMWIuLmUxZDc4ZDNkYjFmZjUwOGQzY2M2OTVhNjEyNmExNTVmMGM2
ZTEyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMg
c2hvdWxkIGJlIGNvbXBhY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNDE0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZl
Y3RvckltcGw6OnVuc2FmZVdvcmRzKToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3RvckltcGw6
OnVuc2FmZVdvcmRzIGNvbnN0KToKKwogMjAxOS0xMS0xMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mu
a2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgVVRDIG9mZnNldCBmb3IgU2Ftb2EgaXMgbWlz
Y2FsY3VsYXRlZCB3aGVuICFIQVZFKFRJTUVHTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBkY2ViM2ZjMDk5MDcyYWMzNjYxNmUxNjM2OTY2YjUzYmI1Mzc1YmMyLi5iNmYw
YWVkMzBlMjRkM2FmNWUzZGFhMWU5MjcyNWU0MmVlMTQzZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC01NjksNiArNTY5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBoZWFwL0FsbG9jYXRvcklubGluZXMuaAogICAg
IGhlYXAvQWxsb2NhdG9yRm9yTW9kZS5oCiAgICAgaGVhcC9CbG9ja0RpcmVjdG9yeS5oCisgICAg
aGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmgKICAgICBoZWFwL0NlbGxBdHRyaWJ1dGVzLmgKICAgICBoZWFwL0NlbGxDb250YWluZXIuaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZDI3ZDk4MTAxNDM3ODk0NGEzYTE2Mjg3
NWE4NTUzMmE5MTZjYmQ2Li4zNjNiZWY0MTgxODU0ZmM5ZmUyZTU4ZDI5MmNhMjc4OWNiYjg4MzZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgxNyw2ICsxODE3LDcgQEAKIAkJ
RTM2Q0M5NDcyMDg2MzE0RjAwNTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkNDOTQ2MjA4NjMxNEYwMDUx
RkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFu
YWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg1MEIxNTIyNkVENjQxMDA5
QUJGOUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5p
ZmllZElESW5saW5lcy5oICovOyB9OworCQlFMzg2NTJFMzIzN0NBMEM5MDBFMUQ1RUUgLyogQmxv
Y2tEaXJlY3RvcnlCaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzg2NTJFMjIzN0NBMEM4MDBFMUQ1RUUgLyogQmxvY2tEaXJlY3RvcnlCaXRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4OTNB
MUQyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODkzQTFD
MjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0Lmgg
Ki87IH07CiAJCUUzOEQ5OTlDMjIxQjc4QkIwMEQ1MDQ3NCAvKiBKU05vbkRlc3RydWN0aWJsZVBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhE
OTk5QTIyMUI3ODlGMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGlibGVQcm94eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTAwNjIxMjIwOEJG
QzQwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5MDA2MjAyMjA4QkZDMzAwMTAxOUNGIC8qIFN1YnNwYWNl
QWNjZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTQ5NDcsNiArNDk0OCw3IEBACiAJCUUzODBBNzZCMURDRDcxOTUwMDBGODlFNiAvKiBNYWNy
b0Fzc2VtYmxlckhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODBE
NjZCMUYxOTI0OUQwMEE1OTA5NSAvKiBCdWlsdGluTmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbk5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4NTBCMTQyMjZFRDYzRTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR01pbmlmaWVkSURJbmxpbmVzLmg7IHBhdGggPSBkZmcv
REZHTWluaWZpZWRJRElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM4
NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0RpcmVjdG9yeUJpdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM4OTNBMUMyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5
bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzhEMDYwQjFGOEU4MTQxMDA2NDlDRjIgLyogSlNTY3JpcHRGZXRjaFBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTY3JpcHRGZXRj
aFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2MEMxRjhF
ODE0MTAwNjQ5Q0YyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTYxMDIsNiArNjEwNCw3IEBACiAJCQkJMEZCNDY3N0UxRkREQTZFNTAw
M0ZDQjA5IC8qIEF0b21JbmRpY2VzLmggKi8sCiAJCQkJQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2
IC8qIEJsb2NrRGlyZWN0b3J5LmNwcCAqLywKIAkJCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYg
LyogQmxvY2tEaXJlY3RvcnkuaCAqLywKKwkJCQlFMzg2NTJFMjIzN0NBMEM4MDBFMUQ1RUUgLyog
QmxvY2tEaXJlY3RvcnlCaXRzLmggKi8sCiAJCQkJMEY3REYxNDUxRTJCRUY2ODAwOTU5NTFCIC8q
IEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oICovLAogCQkJCTBGOTYzMDM1MUQ0MTkyQzMwMDU2MDlE
OSAvKiBDZWxsQXR0cmlidXRlcy5jcHAgKi8sCiAJCQkJMEY5NjMwMzYxRDQxOTJDMzAwNTYwOUQ5
IC8qIENlbGxBdHRyaWJ1dGVzLmggKi8sCkBAIC05MDA4LDYgKzkwMTEsNyBAQAogCQkJCTg2OTc2
RTVFMUZBM0U4QjYwMEU3QzRFMSAvKiBCaWdJbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjRCMjcyMUE3ODRCQUYwMDZFNEU2NiAvKiBCaW5hcnlTd2l0Y2guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8qIEJsb2NrRGlyZWN0
b3J5Qml0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3REYxNDYxRTJCRUY2QTAwOTU5NTFCIC8q
IEJsb2NrRGlyZWN0b3J5SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRUMwRTE2
RjVDRDAwQjM0NDYwIC8qIEJvb2xlYW5PYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNDY5
NDM5MUY5NzQzOUUwMENDQjNGOSAvKiBCb29sZWFuUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxv
Y2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9j
YXRvci5jcHAKaW5kZXggZTdjOTNjMjYzNjc5NzcwYjJkMDFkZjJkZTBiZmVjZmY4NmYxY2MwOC4u
ZWEzMmRmM2MwYmNjMWRlMTc2ZWNmYThmNmYyN2UwMjRhMDI5NThhZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5jcHAKQEAg
LTQwLDEyICs0MCwxMiBAQCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjp+QWxpZ25lZE1lbW9yeUFs
bG9jYXRvcigpCiB7CiB9CiAKLXZvaWQgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6cmVnaXN0ZXJE
aXJlY3RvcnkoQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSkKK3ZvaWQgQWxpZ25lZE1lbW9yeUFs
bG9jYXRvcjo6cmVnaXN0ZXJEaXJlY3RvcnkoSGVhcCYgaGVhcCwgQmxvY2tEaXJlY3RvcnkqIGRp
cmVjdG9yeSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghZGlyZWN0b3J5LT5uZXh0RGlyZWN0b3J5
SW5BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIAogICAgIGlmIChtX2RpcmVjdG9yaWVz
LmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8
IGRpcmVjdG9yeS0+aGVhcCgpLT53b3JsZElzU3RvcHBlZCgpKTsKKyAgICAgICAgQVNTRVJUX1VO
VVNFRChoZWFwLCAhVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkgfHwgaGVhcC53b3JsZElzU3RvcHBl
ZCgpKTsKICAgICAgICAgZm9yIChTdWJzcGFjZSogc3Vic3BhY2UgPSBtX3N1YnNwYWNlcy5maXJz
dCgpOyBzdWJzcGFjZTsgc3Vic3BhY2UgPSBzdWJzcGFjZS0+bmV4dFN1YnNwYWNlSW5BbGlnbmVk
TWVtb3J5QWxsb2NhdG9yKCkpCiAgICAgICAgICAgICBzdWJzcGFjZS0+ZGlkQ3JlYXRlRmlyc3RE
aXJlY3RvcnkoZGlyZWN0b3J5KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKaW5kZXggNjY0NDJhZGYzMThhNTY3ZDgy
YWNjMGRmODIyMmUzNWNhMWI1NGFkYy4uOTU2Njk2MzVkOGRkNTEzMWQ4ZWZiYWJjYWVhZTZiMGZl
N2VkMWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuaApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIEJsb2NrRGlyZWN0b3J5OworY2xhc3MgSGVhcDsKIGNsYXNzIFN1YnNwYWNlOwogCiBjbGFz
cyBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yIHsKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3MgQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvciB7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdCA9IDA7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5Kik7CisgICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShIZWFwJiwgQmxvY2tEaXJlY3Rvcnkq
KTsKICAgICBCbG9ja0RpcmVjdG9yeSogZmlyc3REaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X2RpcmVjdG9yaWVzLmZpcnN0KCk7IH0KIAogICAgIHZvaWQgcmVnaXN0ZXJTdWJzcGFjZShTdWJz
cGFjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3IuaAppbmRleCAyMjkxNThm
Y2U0MjBmMWU3OTkyMDlkYzE0NDhiODMyMTgwYTJmNzlhLi43MjM5ZDIyOWZjZTkyYmJhMDQ1NDAw
M2U0OWQ1MjhmMDdlMzI3Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3Iu
aApAQCAtMzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEdDRGVmZXJyYWxD
b250ZXh0OworY2xhc3MgSGVhcDsKIGNsYXNzIExvY2FsQWxsb2NhdG9yOwogCiAvLyBUaGlzIGFi
c3RyYWN0cyBob3cgd2UgcmVmZXIgdG8gTG9jYWxBbGxvY2F0b3Igc28gdGhhdCB3ZSBjb3VsZCBl
dmVudHVhbGx5IHN1cHBvcnQgdGhyZWFkLWxvY2FsCkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFs
bG9jYXRvciB7CiAgICAgewogICAgIH0KICAgICAKLSAgICB2b2lkKiBhbGxvY2F0ZShHQ0RlZmVy
cmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSkgY29uc3Q7CisgICAgdm9pZCogYWxs
b2NhdGUoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKSBj
b25zdDsKICAgICAKICAgICB1bnNpZ25lZCBjZWxsU2l6ZSgpIGNvbnN0OwogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9ySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDE3NTczMjcz
YzQ5OWZiYzU4YTdiNGZlYmZmN2EwZDliYzlkZDQyZWYuLjY5NWIwODlkOGM1NzFhN2JiMDgwYzdk
OWMxZWE2ZmM4OWQ4ZTgzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0FsbG9jYXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0b3JJbmxpbmVzLmgKQEAgLTMwLDkgKzMwLDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFM
V0FZU19JTkxJTkUgdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZShHQ0RlZmVycmFsQ29udGV4dCog
Y29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIG1vZGUpIGNvbnN0CitBTFdBWVNfSU5MSU5F
IHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQq
IGNvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBtb2RlKSBjb25zdAogewotICAgIHJldHVy
biBtX2xvY2FsQWxsb2NhdG9yLT5hbGxvY2F0ZShjb250ZXh0LCBtb2RlKTsKKyAgICByZXR1cm4g
bV9sb2NhbEFsbG9jYXRvci0+YWxsb2NhdGUoaGVhcCwgY29udGV4dCwgbW9kZSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnkuY3BwCmluZGV4IDdlZWU0YTg3NDZiNmJkMTg4NTJhN2FiNjI4NzRiYmFmNTdhYmUyODku
LjBjYzRiNDc5YmY3MTdiNDYwMDQzYmJjZjA0Y2I2NjAzYzIzMDYzZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKQEAgLTM4LDkgKzM4LDggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKLUJsb2NrRGlyZWN0b3J5OjpCbG9ja0RpcmVjdG9yeShIZWFw
KiBoZWFwLCBzaXplX3QgY2VsbFNpemUpCitCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3Rvcnko
c2l6ZV90IGNlbGxTaXplKQogICAgIDogbV9jZWxsU2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Y2VsbFNpemUpKQotICAgICwgbV9oZWFwKGhlYXApCiB7CiB9CiAKQEAgLTc2LDcgKzc1LDcgQEAg
Ym9vbCBCbG9ja0RpcmVjdG9yeTo6aXNQYWdlZE91dChNb25vdG9uaWNUaW1lIGRlYWRsaW5lKQog
CiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0
ZWFsKCkKIHsKLSAgICBtX2VtcHR5Q3Vyc29yID0gbV9lbXB0eS5maW5kQml0KG1fZW1wdHlDdXJz
b3IsIHRydWUpOworICAgIG1fZW1wdHlDdXJzb3IgPSBtX2JpdHMuZW1wdHkoKS5maW5kQml0KG1f
ZW1wdHlDdXJzb3IsIHRydWUpOwogICAgIGlmIChtX2VtcHR5Q3Vyc29yID49IG1fYmxvY2tzLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fZW1w
dHlDdXJzb3JdOwpAQCAtODUsNyArODQsNyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0Rp
cmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKCkKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJs
b2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxv
Y2F0b3IpCiB7CiAgICAgZm9yICg7OykgewotICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9u
Q3Vyc29yID0gKG1fY2FuQWxsb2NhdGVCdXROb3RFbXB0eSB8IG1fZW1wdHkpLmZpbmRCaXQoYWxs
b2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7CisgICAgICAgIGFsbG9jYXRvci5tX2Fs
bG9jYXRpb25DdXJzb3IgPSAobV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSB8IG1fYml0
cy5lbXB0eSgpKS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwog
ICAgICAgICBpZiAoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA+PSBtX2Jsb2Nrcy5zaXpl
KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgCkBAIC05NiwxMSArOTUs
MTEgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFs
bG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImIGFsbG8KICAgICB9CiB9CiAKLU1hcmtlZEJsb2NrOjpI
YW5kbGUqIEJsb2NrRGlyZWN0b3J5Ojp0cnlBbGxvY2F0ZUJsb2NrKCkKK01hcmtlZEJsb2NrOjpI
YW5kbGUqIEJsb2NrRGlyZWN0b3J5Ojp0cnlBbGxvY2F0ZUJsb2NrKEhlYXAmIGhlYXApCiB7CiAg
ICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwogICAgIAotICAg
IE1hcmtlZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoKm1f
aGVhcCwgc3Vic3BhY2UoKS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKKyAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKGhlYXAsIHN1YnNw
YWNlKCktPmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIApAQCAtMTE4LDIxICsxMTcsMTIgQEAgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgICAg
IHNpemVfdCBvbGRDYXBhY2l0eSA9IG1fYmxvY2tzLmNhcGFjaXR5KCk7CiAgICAgICAgIG1fYmxv
Y2tzLmFwcGVuZChibG9jayk7CiAgICAgICAgIGlmIChtX2Jsb2Nrcy5jYXBhY2l0eSgpICE9IG9s
ZENhcGFjaXR5KSB7Ci0gICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAgICAgICAgICAg
ICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwKLSAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0
b3ImIHZlY3RvcikgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3Rvciwg
dmVjdG9yLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChtX2JpdHMubnVtQml0cygpID09IG9sZENh
cGFjaXR5KTsKICAgICAgICAgICAgIEFTU0VSVChtX2Jsb2Nrcy5jYXBhY2l0eSgpID4gb2xkQ2Fw
YWNpdHkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Jp
dHZlY3RvckxvY2spOwogICAgICAgICAgICAgc3Vic3BhY2UoKS0+ZGlkUmVzaXplQml0cyhtX2Js
b2Nrcy5jYXBhY2l0eSgpKTsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCi0gICAgICAg
ICAgICAgICAgbG9ja2VyLAotICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVj
dG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZlY3Rvci5yZXNpemUobV9ibG9ja3MuY2FwYWNp
dHkoKSk7Ci0gICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBtX2JpdHMucmVzaXplKG1f
YmxvY2tzLmNhcGFjaXR5KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaW5k
ZXggPSBtX2ZyZWVCbG9ja0luZGljZXMudGFrZUxhc3QoKTsKQEAgLTE0Miw4ICsxMzIsOCBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykK
ICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBOb0xvY2tpbmdOZWNlc3Nhcnks
Ci0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfVU5VU0VEKHZlY3RvciwgIXZlY3RvcltpbmRleF0pOworICAgICAgICBbJl0oYXV0byB2ZWN0
b3JSZWYpIHsKKyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9yUmVmLCAhdmVjdG9yUmVm
W2luZGV4XSk7CiAgICAgICAgIH0pOwogCiAgICAgLy8gVGhpcyBpcyB0aGUgcG9pbnQgYXQgd2hp
Y2ggdGhlIGJsb2NrIGxlYXJucyBvZiBpdHMgY2VsbFNpemUoKSBhbmQgYXR0cmlidXRlcygpLgpA
QCAtMTY1LDggKzE1NSw4IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnJlbW92ZUJsb2NrKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCiAgICAg
ICAgIGhvbGRMb2NrKG1fYml0dmVjdG9yTG9jayksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3Rv
ciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICB2ZWN0b3JbYmxvY2stPmluZGV4KCldID0gZmFsc2U7
CisgICAgICAgIFsmXShhdXRvIHZlY3RvclJlZikgeworICAgICAgICAgICAgdmVjdG9yUmVmW2Js
b2NrLT5pbmRleCgpXSA9IGZhbHNlOwogICAgICAgICB9KTsKICAgICAKICAgICBibG9jay0+ZGlk
UmVtb3ZlRnJvbURpcmVjdG9yeSgpOwpAQCAtMTkyLDcgKzE4Miw3IEBAIHZvaWQgQmxvY2tEaXJl
Y3Rvcnk6OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKICAgICBtX3Vuc3dlcHRDdXJzb3IgPSAwOwog
ICAgIG1fZW1wdHlDdXJzb3IgPSAwOwogICAgIAotICAgIG1fZWRlbi5jbGVhckFsbCgpOworICAg
IG1fYml0cy5lZGVuKCkuY2xlYXJBbGwoKTsKIAogICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjp1
c2VJbW1vcnRhbE9iamVjdHMoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3Jr
IGFnYWluLgpAQCAtMjM3LDIwICsyMjcsMjAgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YmVnaW5N
YXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKQogICAgIC8vIE1hcmsgYml0cyBhcmUgc3RpY2t5IGFu
ZCBzbyBpcyBvdXIgc3VtbWFyeSBvZiBtYXJrIGJpdHMuIFdlIG9ubHkgY2xlYXIgdGhlc2UgZHVy
aW5nIGZ1bGwKICAgICAvLyBjb2xsZWN0aW9ucywgc28gaWYgeW91IHN1cnZpdmVkIHRoZSBsYXN0
IGNvbGxlY3Rpb24geW91IHdpbGwgc3Vydml2ZSB0aGUgbmV4dCBvbmUgc28gbG9uZwogICAgIC8v
IGFzIHRoZSBuZXh0IG9uZSBpcyBlZGVuLgotICAgIG1fbWFya2luZ05vdEVtcHR5LmNsZWFyQWxs
KCk7Ci0gICAgbV9tYXJraW5nUmV0aXJlZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5tYXJraW5n
Tm90RW1wdHkoKS5jbGVhckFsbCgpOworICAgIG1fYml0cy5tYXJraW5nUmV0aXJlZCgpLmNsZWFy
QWxsKCk7CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogewotICAgIG1f
YWxsb2NhdGVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLmFsbG9jYXRlZCgpLmNsZWFyQWxsKCk7
CiAgICAgCiAgICAgLy8gSXQncyBzdXJwcmlzaW5nIGFuZCBmcnVzdHJhdGluZyB0byBjb21wcmVo
ZW5kLCBidXQgdGhlIGVuZC1vZi1tYXJraW5nIGZsaXAgZG9lcyBub3QgbmVlZCB0bwogICAgIC8v
IGtub3cgd2hhdCBraW5kIG9mIGNvbGxlY3Rpb24gaXQgaXMuIFRoYXQga25vd2xlZGdlIGlzIGFs
cmVhZHkgZW5jb2RlZCBpbiB0aGUgbV9tYXJraW5nWFlaCiAgICAgLy8gdmVjdG9ycy4KICAgICAK
LSAgICBtX2VtcHR5ID0gbV9saXZlICYgfm1fbWFya2luZ05vdEVtcHR5OwotICAgIG1fY2FuQWxs
b2NhdGVCdXROb3RFbXB0eSA9IG1fbGl2ZSAmIG1fbWFya2luZ05vdEVtcHR5ICYgfm1fbWFya2lu
Z1JldGlyZWQ7CisgICAgbV9iaXRzLmVtcHR5KCkgPSBtX2JpdHMubGl2ZSgpICYgfm1fYml0cy5t
YXJraW5nTm90RW1wdHkoKTsKKyAgICBtX2JpdHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0eSgpID0g
bV9iaXRzLmxpdmUoKSAmIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIH5tX2JpdHMubWFya2lu
Z1JldGlyZWQoKTsKIAogICAgIGlmIChuZWVkc0Rlc3RydWN0aW9uKCkpIHsKICAgICAgICAgLy8g
VGhlcmUgYXJlIHNvbWUgYmxvY2tzIHRoYXQgd2UgZGlkbid0IGFsbG9jYXRlIG91dCBvZiBpbiB0
aGUgbGFzdCBjeWNsZSwgYnV0IHdlIHN3ZXB0IHRoZW0uIFRoaXMKQEAgLTI1OCw3ICsyNDgsNyBA
QCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKICAgICAgICAgLy8gZGVzdHJ1Y3Rv
cnMgYWdhaW4uIFRoYXQncyBmaW5lIGJlY2F1c2Ugb2YgemFwcGluZy4gVGhlIG9ubHkgdGltZSB3
aGVuIHdlIGNhbm5vdCBmb3JnZXQgaXMgd2hlbgogICAgICAgICAvLyB3ZSBqdXN0IGFsbG9jYXRl
IGEgYmxvY2sgb3Igd2hlbiB3ZSBtb3ZlIGEgYmxvY2sgZnJvbSBvbmUgc2l6ZSBjbGFzcyB0byBh
bm90aGVyLiBUaGF0IGRvZXNuJ3QKICAgICAgICAgLy8gaGFwcGVuIGhlcmUuCi0gICAgICAgIG1f
ZGVzdHJ1Y3RpYmxlID0gbV9saXZlOworICAgICAgICBtX2JpdHMuZGVzdHJ1Y3RpYmxlKCkgPSBt
X2JpdHMubGl2ZSgpOwogICAgIH0KICAgICAKICAgICBpZiAoZmFsc2UpIHsKQEAgLTI2OSwxNyAr
MjU5LDE3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogCiB2b2lkIEJsb2Nr
RGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpCiB7Ci0gICAgbV91
bnN3ZXB0IHw9IG1fZWRlbjsKKyAgICBtX2JpdHMudW5zd2VwdCgpIHw9IG1fYml0cy5lZGVuKCk7
CiB9CiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckZ1bGxDb2xsZWN0
aW9uKCkKIHsKLSAgICBtX3Vuc3dlcHQgPSBtX2xpdmU7CisgICAgbV9iaXRzLnVuc3dlcHQoKSA9
IG1fYml0cy5saXZlKCk7CiB9CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5
OjpmaW5kQmxvY2tUb1N3ZWVwKCkKIHsKLSAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX3Vuc3dlcHQu
ZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOworICAgIG1fdW5zd2VwdEN1cnNvciA9IG1f
Yml0cy51bnN3ZXB0KCkuZmluZEJpdChtX3Vuc3dlcHRDdXJzb3IsIHRydWUpOwogICAgIGlmICht
X3Vuc3dlcHRDdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICByZXR1cm4gbV9ibG9ja3NbbV91bnN3ZXB0Q3Vyc29yXTsKQEAgLTI4Nyw3ICsyNzcs
NyBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrVG9Td2Vl
cCgpCiAKIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIHsKLSAgICBtX3Vuc3dlcHQuZm9y
RWFjaFNldEJpdCgKKyAgICBtX2JpdHMudW5zd2VwdCgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAg
IFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jayA9IG1fYmxvY2tzW2luZGV4XTsKICAgICAgICAgICAgIGJsb2NrLT5zd2VlcChudWxscHRy
KTsKQEAgLTI5Niw3ICsyODYsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgpCiAKIHZv
aWQgQmxvY2tEaXJlY3Rvcnk6OnNocmluaygpCiB7Ci0gICAgKG1fZW1wdHkgJiB+bV9kZXN0cnVj
dGlibGUpLmZvckVhY2hTZXRCaXQoCisgICAgKG1fYml0cy5lbXB0eSgpICYgfm1fYml0cy5kZXN0
cnVjdGlibGUoKSkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsK
ICAgICAgICAgICAgIG1hcmtlZFNwYWNlKCkuZnJlZUJsb2NrKG1fYmxvY2tzW2luZGV4XSk7CiAg
ICAgICAgIH0pOwpAQCAtMzA3LDcgKzI5Nyw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFzc2Vy
dE5vVW5zd2VwdCgpCiAgICAgaWYgKEFTU0VSVF9ESVNBQkxFRCkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIGlmIChtX3Vuc3dlcHQuaXNFbXB0eSgpKQorICAgIGlmIChtX2JpdHMudW5zd2Vw
dCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGRhdGFMb2coIkFzc2Vy
dGlvbiBmYWlsZWQ6IHVuc3dlcHQgbm90IGVtcHR5IGluICIsICp0aGlzLCAiLlxuIik7CkBAIC0z
MjksNyArMzE5LDcgQEAgUmVmUHRyPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+
IEJsb2NrRGlyZWN0b3J5OjpwYXJhbGxlbE5vdEVtcHR5QmxvY2sKICAgICAgICAgICAgIGlmICht
X2RvbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBtX2luZGV4ID0gbV9kaXJl
Y3RvcnkubV9tYXJraW5nTm90RW1wdHkuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKKyAgICAgICAg
ICAgIG1faW5kZXggPSBtX2RpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkuZmluZEJp
dChtX2luZGV4LCB0cnVlKTsKICAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGlyZWN0b3J5
Lm1fYmxvY2tzLnNpemUoKSkgewogICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zNTcsMTggKzM0NywxOSBAQCB2b2lkIEJs
b2NrRGlyZWN0b3J5OjpkdW1wQml0cyhQcmludFN0cmVhbSYgb3V0KQogICAgIHVuc2lnbmVkIG1h
eE5hbWVMZW5ndGggPSAwOwogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAg
Tm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImLCBjb25zdCBj
aGFyKiBuYW1lKSB7CisgICAgICAgIFsmXShhdXRvIHZlY3RvclJlZiwgY29uc3QgY2hhciogbmFt
ZSkgeworICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHZlY3RvclJlZik7CiAgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGggPSBzdHJsZW4obmFtZSk7CiAgICAgICAgICAgICBtYXhOYW1lTGVuZ3Ro
ID0gc3RkOjptYXgobWF4TmFtZUxlbmd0aCwgbGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAgCiAg
ICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAgICBOb0xvY2tpbmdOZWNlc3Nhcnks
Ci0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgdmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7
CisgICAgICAgIFsmXShhdXRvIHZlY3RvclJlZiwgY29uc3QgY2hhciogbmFtZSkgewogICAgICAg
ICAgICAgb3V0LnByaW50KCIgICAgIiwgbmFtZSwgIjogIik7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtYXhOYW1lTGVuZ3RoIC0gc3RybGVuKG5hbWUpOyBpLS07KQogICAgICAgICAg
ICAgICAgIG91dC5wcmludCgiICIpOwotICAgICAgICAgICAgb3V0LnByaW50KHZlY3RvciwgIlxu
Iik7CisgICAgICAgICAgICBvdXQucHJpbnQodmVjdG9yUmVmLCAiXG4iKTsKICAgICAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0
b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCmluZGV4
IGE3YmNhYTZiOWViZDRiYWQ2M2Q3ZTc4MTEwOTE4ZTNlNDM2Mzg3ZDEuLjAyODg4MGIyN2RjZDUy
Yzg1MDRkNjYxY2ExYzc0MDBkYzJiYzI1YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQmxvY2tEaXJlY3RvcnkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJBbGxvY2F0aW9uRmFpbHVyZU1vZGUuaCIKKyNpbmNsdWRlICJCbG9ja0RpcmVjdG9y
eUJpdHMuaCIKICNpbmNsdWRlICJDZWxsQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIkZyZWVMaXN0
LmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxvY2F0b3IuaCIKQEAgLTQ0LDE5ICs0NSw2IEBAIGNsYXNz
IElzb0NlbGxTZXQ7CiBjbGFzcyBNYXJrZWRTcGFjZTsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAotI2RlZmluZSBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKG1hY3JvKSBcCi0g
ICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQgaGF2
ZSBhY3R1YWwgYmxvY2tzLiAqL1wKLSAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBzZXQg
b2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzLiAqLyBcCi0gICAgbWFjcm8o
YWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBm
dWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCi0gICAgbWFjcm8oY2FuQWxsb2NhdGVCdXROb3RFbXB0
eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIGFyZSBu
ZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBtb3JlIHRoYW4gbWluTWFya2VkQmxv
Y2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAotICAgIG1hY3JvKGRlc3RydWN0aWJsZSwgRGVzdHJ1
Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBtYXkgaGF2ZSBkZXN0cnVjdG9y
cyB0byBydW4uICovXAotICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxsIGJs
b2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxhc3QgR0MuICovXAotICAgIG1h
Y3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNvdWxk
IGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKLSAgICBcCi0gICAgLyog
VGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKLSAgICBtYWNybyhtYXJraW5n
Tm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQg
YXJlIG5vdCBlbXB0eS4gKi8gXAotICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVkLCBNYXJraW5nUmV0
aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJldGlyZWQuICovCi0KIC8v
IEZJWE1FOiBXZSBkZWZpbmVkIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgYW5kIGVtcHR5IHRvIGJl
IGV4Y2x1c2l2ZToKIC8vCiAvLyAgICAgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSAmIGVtcHR5ID09
IDAKQEAgLTc4LDcgKzY2LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1YmxpYzoKLSAgICBCbG9ja0RpcmVjdG9y
eShIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICBCbG9ja0RpcmVjdG9yeShzaXplX3QgY2Vs
bFNpemUpOwogICAgIH5CbG9ja0RpcmVjdG9yeSgpOwogICAgIHZvaWQgc2V0U3Vic3BhY2UoU3Vi
c3BhY2UqKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC05OCw3ICs4Niw2
IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlv
bjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQogICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOyB9Ci0gICAgSGVhcCogaGVhcCgp
IHsgcmV0dXJuIG1faGVhcDsgfQogCiAgICAgYm9vbCBpc0ZyZWVMaXN0ZWRDZWxsKGNvbnN0IHZv
aWQqIHRhcmdldCk7CiAKQEAgLTExNSw5ICsxMDIsOSBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeSB7
CiAgICAgTG9jayYgYml0dmVjdG9yTG9jaygpIHsgcmV0dXJuIG1fYml0dmVjdG9yTG9jazsgfQog
CiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2Fw
aXRhbEJpdE5hbWUpICAgICBcCi0gICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBB
YnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV8gIyMgbG93ZXJC
aXROYW1lW2luZGV4XTsgfSBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBB
YnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iaXRzLmlzICMj
IGNhcGl0YWxCaXROYW1lKGluZGV4KTsgfSBcCiAgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFt
ZShjb25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykgY29uc3QgeyByZXR1cm4gaXMgIyMgY2FwaXRhbEJpdE5hbWUobG9ja2VyLCBibG9jay0+aW5k
ZXgoKSk7IH0gXAotICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJh
Y3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV8gIyMgbG93ZXJCaXROYW1l
W2luZGV4XSA9IHZhbHVlOyB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4LCBib29sIHZhbHVlKSB7IG1fYml0cy5z
ZXRJcyAjIyBjYXBpdGFsQml0TmFtZShpbmRleCwgdmFsdWUpOyB9IFwKICAgICB2b2lkIHNldElz
ICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJs
b2NrOjpIYW5kbGUqIGJsb2NrLCBib29sIHZhbHVlKSB7IHNldElzICMjIGNhcGl0YWxCaXROYW1l
KGxvY2tlciwgYmxvY2stPmluZGV4KCksIHZhbHVlKTsgfQogICAgIEZPUl9FQUNIX0JMT0NLX0RJ
UkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMpCiAjdW5kZWYgQkxPQ0tf
RElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKQEAgLTEyNiw3ICsxMTMsNyBAQCBjbGFzcyBCbG9ja0Rp
cmVjdG9yeSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yKGNvbnN0IEFic3RyYWN0TG9ja2Vy
JiwgY29uc3QgRnVuYyYgZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRf
Q0FMTEJBQ0sobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgICAgICBmdW5jKG1f
ICMjIGxvd2VyQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxvd2VyQml0TmFtZSgpKTsK
ICAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklU
X0NBTExCQUNLKTsKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpA
QCAtMTM1LDcgKzEyMiw3IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICB2b2lkIGZvckVh
Y2hCaXRWZWN0b3JXaXRoTmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1
bmMpCiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0
TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUs
ICNjYXBpdGFsQml0TmFtZSk7CisgICAgICAgIGZ1bmMobV9iaXRzLmxvd2VyQml0TmFtZSgpLCAj
Y2FwaXRhbEJpdE5hbWUpOwogICAgICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJM
T0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRf
Q0FMTEJBQ0sKICAgICB9CkBAIC0xNjYsMTcgKzE1MywxNCBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgCiAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogZmluZEJsb2NrRm9yQWxsb2NhdGlv
bihMb2NhbEFsbG9jYXRvciYpOwogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFs
bG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2Nr
KEhlYXAmKTsKICAgICAKICAgICBWZWN0b3I8TWFya2VkQmxvY2s6OkhhbmRsZSo+IG1fYmxvY2tz
OwogICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9mcmVlQmxvY2tJbmRpY2VzOwogCiAgICAgLy8gTXV0
YXRvciB1c2VzIHRoaXMgdG8gZ3VhcmQgcmVzaXppbmcgdGhlIGJpdHZlY3RvcnMuIFRob3NlIHRo
aW5ncyBpbiB0aGUgR0MgdGhhdCBtYXkgcnVuCiAgICAgLy8gY29uY3VycmVudGx5IHRvIHRoZSBt
dXRhdG9yIG11c3QgbG9jayB0aGlzIHdoZW4gYWNjZXNzaW5nIHRoZSBiaXR2ZWN0b3JzLgotI2Rl
ZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRh
bEJpdE5hbWUpIFwKLSAgICBGYXN0Qml0VmVjdG9yIG1fICMjIGxvd2VyQml0TmFtZTsKLSAgICBG
T1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfREVDTEFSQVRJ
T04pCi0jdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElPTgorICAgIEJsb2NrRGly
ZWN0b3J5Qml0cyBtX2JpdHM7CiAgICAgTG9jayBtX2JpdHZlY3RvckxvY2s7CiAgICAgTG9jayBt
X2xvY2FsQWxsb2NhdG9yc0xvY2s7CiAgICAgQ2VsbEF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOwpA
QCAtMTkwLDcgKzE3NCw2IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICAKICAgICAvLyBG
SVhNRTogQWxsIG9mIHRoZXNlIHNob3VsZCBwcm9iYWJseSBiZSByZWZlcmVuY2VzLgogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY5ODgKLSAgICBIZWFw
KiBtX2hlYXAgeyBudWxscHRyIH07CiAgICAgU3Vic3BhY2UqIG1fc3Vic3BhY2UgeyBudWxscHRy
IH07CiAgICAgQmxvY2tEaXJlY3RvcnkqIG1fbmV4dERpcmVjdG9yeSB7IG51bGxwdHIgfTsKICAg
ICBCbG9ja0RpcmVjdG9yeSogbV9uZXh0RGlyZWN0b3J5SW5TdWJzcGFjZSB7IG51bGxwdHIgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTI1NTY5NGFlYjk0ZmNiNjY0MDk2OTVmMDUxMmZkYzlhM2M2NjJhZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0
cy5oCkBAIC0wLDAgKzEsMjQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDx3
dGYvRmFzdEJpdFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKKyNkZWZpbmUgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykgXAor
ICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhh
dmUgYWN0dWFsIGJsb2Nrcy4gKi9cCisgICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cy4gKi8gXAorICAgIG1hY3Jv
KGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUg
ZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAorICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1w
dHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUg
bmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJs
b2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKKyAgICBtYWNybyhkZXN0cnVjdGlibGUsIERlc3Ry
dWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1Y3Rv
cnMgdG8gcnVuLiAqL1wKKyAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBi
bG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKKyAgICBt
YWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3Vs
ZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9cCisgICAgXAorICAgIC8q
IFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCisgICAgbWFjcm8obWFya2lu
Z05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IGFyZSBub3QgZW1wdHkuICovIFwKKyAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1Jl
dGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLworCitj
bGFzcyBCbG9ja0RpcmVjdG9yeUJpdHMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgYml0c1BlclNlZ21lbnQgPSAz
MjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNlZ21lbnRTaGlmdCA9IDU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBpbmRleE1hc2sgPSAoMVUgPDwgc2VnbWVudFNoaWZ0
KSAtIDE7CisgICAgc3RhdGljX2Fzc2VydCgoMSA8PCBzZWdtZW50U2hpZnQpID09IGJpdHNQZXJT
ZWdtZW50KTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQobG93ZXJC
aXROYW1lLCBjYXBpdGFsQml0TmFtZSkgKyAxCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHMgPSAwIEZPUl9FQUNIX0JMT0NLX0RJUkVD
VE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5UKTsKKyN1bmRlZiBCTE9DS19E
SVJFQ1RPUllfQklUX0tJTkRfQ09VTlQKKworICAgIGVudW0gY2xhc3MgS2luZCB7CisjZGVmaW5l
IEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0
YWxCaXROYW1lKSBcCisgICAgICAgIGNhcGl0YWxCaXROYW1lLAorICAgICAgICBGT1JfRUFDSF9C
TE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTikK
KyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfREVDTEFSQVRJT04KKyAgICB9OworCisg
ICAgY2xhc3MgU2VnbWVudCB7CisgICAgcHVibGljOgorICAgICAgICBTZWdtZW50KCkgPSBkZWZh
dWx0OworICAgICAgICBzdGQ6OmFycmF5PHVpbnQzMl90LCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5
Qml0S2luZHM+IG1fZGF0YSB7IH07CisgICAgfTsKKworICAgIHRlbXBsYXRlPEtpbmQga2luZD4K
KyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICB1c2luZyBWaWV3VHlw
ZSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc7CisKKyAgICAgICAgQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JXb3JkVmlldygpID0gZGVmYXVsdDsKKworICAgICAgICBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvcldvcmRWaWV3KGNvbnN0IFNlZ21lbnQqIHNlZ21lbnRzLCBzaXplX3QgbnVt
Qml0cykKKyAgICAgICAgICAgIDogbV9zZWdtZW50cyhzZWdtZW50cykKKyAgICAgICAgICAgICwg
bV9udW1CaXRzKG51bUJpdHMpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVf
dCBudW1CaXRzKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbnVtQml0
czsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQzMl90IHdvcmQoc2l6ZV90IGluZGV4KSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0
b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBtX3NlZ21lbnRz
W2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpXTsKKyAgICAgICAgfQor
CisgICAgICAgIHVpbnQzMl90JiB3b3JkKHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGluZGV4IDwgV1RGOjpmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0
cygpKSk7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50
cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChu
dW1CaXRzKCkpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8U2VnbWVudCo+
KG1fc2VnbWVudHMpW2luZGV4XS5tX2RhdGFbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpXSA9
IDA7CisgICAgICAgIH0KKworICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
IHZpZXcoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Y29uc3QgU2VnbWVudCogbV9zZWdtZW50cyB7IG51bGxwdHIgfTsKKyAgICAgICAgc2l6ZV90IG1f
bnVtQml0cyB7IDAgfTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8S2luZCBraW5kPgorICAgIHVz
aW5nIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldyA9IFdURjo6RmFzdEJpdFZlY3RvckltcGw8
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPj47CisKKyAgICB0ZW1wbGF0ZTxL
aW5kIGtpbmQ+CisgICAgY2xhc3MgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYgZmluYWwgOiBw
dWJsaWMgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIGV4cGxpY2l0IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmKEJsb2NrRGlyZWN0b3J5
Qml0VmVjdG9yV29yZFZpZXc8a2luZD4gdmlldykKKyAgICAgICAgICAgIDogQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JWaWV3PGtpbmQ+KHZpZXcpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyV29yZHM+CisgICAgICAgIEJsb2NrRGlyZWN0b3J5
Qml0VmVjdG9yUmVmJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpGYXN0Qml0VmVjdG9ySW1wbDxPdGhl
cldvcmRzPiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMoKSA9PSBvdGhlci5udW1CaXRzKCkpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3
PGtpbmQ+OjphcnJheUxlbmd0aCgpOyBpLS07KQorICAgICAgICAgICAgICAgIEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS53b3JkKGkpID0gb3RoZXIudW5z
YWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9
CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAgICAgICAgQmxvY2tE
aXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yfD0oY29uc3QgV1RGOjpGYXN0Qml0VmVjdG9y
SW1wbDxPdGhlcldvcmRzPiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMoKSA9PSBvdGhlci5udW1C
aXRzKCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmxvY2tEaXJlY3RvcnlCaXRW
ZWN0b3JWaWV3PGtpbmQ+OjphcnJheUxlbmd0aCgpOyBpLS07KQorICAgICAgICAgICAgICAgIEJs
b2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS53b3JkKGkpIHw9
IG90aGVyLnVuc2FmZVdvcmRzKCkud29yZChpKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2xlYXJBbGwoKQorICAgICAgICB7CisgICAgICAg
ICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCkuY2xl
YXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNsYXNzIEJpdFJlZmVyZW5jZSB7CisgICAg
ICAgIHB1YmxpYzoKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSgpIHsgfQorCisgICAgICAgICAg
ICBCaXRSZWZlcmVuY2UodWludDMyX3QqIHdvcmQsIHVpbnQzMl90IG1hc2spCisgICAgICAgICAg
ICAgICAgOiBtX3dvcmQod29yZCkKKyAgICAgICAgICAgICAgICAsIG1fbWFzayhtYXNrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gISEo
Km1fd29yZCAmIG1fbWFzayk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEJpdFJlZmVy
ZW5jZSYgb3BlcmF0b3I9KGJvb2wgdmFsdWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAqbV93b3JkIHw9IG1fbWFzazsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICptX3dvcmQgJj0gfm1fbWFz
azsKKyAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgcHJpdmF0ZToKKyAgICAgICAgICAgIHVpbnQzMl90KiBtX3dvcmQgeyBudWxscHRyIH07Cisg
ICAgICAgICAgICB1aW50MzJfdCBtX21hc2sgeyAwIH07CisgICAgICAgIH07CisKKyAgICAgICAg
Qml0UmVmZXJlbmNlIGF0KHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGluZGV4IDwgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjpudW1CaXRzKCkp
OworICAgICAgICAgICAgcmV0dXJuIEJpdFJlZmVyZW5jZSgmQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaW5kZXggPj4gNSksIDEgPDwgKGluZGV4
ICYgMzEpKTsKKyAgICAgICAgfQorCisgICAgICAgIEJpdFJlZmVyZW5jZSBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGF0KGluZGV4KTsKKyAg
ICAgICAgfQorICAgIH07CisKKyNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMo
bG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKKyAgICBib29sIGlzICMjIGNhcGl0
YWxCaXROYW1lKHNpemVfdCBpbmRleCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4g
bG93ZXJCaXROYW1lKClbaW5kZXhdOyBcCisgICAgfSBcCisgICAgdm9pZCBzZXRJcyAjIyBjYXBp
dGFsQml0TmFtZShzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIFwKKyAgICB7IFwKKyAgICAgICAg
bG93ZXJCaXROYW1lKClbaW5kZXhdID0gdmFsdWU7IFwKKyAgICB9IFwKKyAgICBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+IGxvd2VyQml0TmFtZSgpIGNv
bnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmll
dzxLaW5kOjpjYXBpdGFsQml0TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxL
aW5kOjpjYXBpdGFsQml0TmFtZT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyBcCisg
ICAgfSBcCisgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRhbEJpdE5h
bWU+IGxvd2VyQml0TmFtZSgpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21lbnRzLmRhdGEoKSwgbV9u
dW1CaXRzKSk7IFwKKyAgICB9CisgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9D
S19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUykKKyN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0FD
Q0VTU09SUworCisgICAgdW5zaWduZWQgbnVtQml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQml0
czsgfQorCisgICAgdm9pZCByZXNpemUodW5zaWduZWQgbnVtQml0cykKKyAgICB7CisgICAgICAg
IHVuc2lnbmVkIG9sZE51bUJpdHMgPSBtX251bUJpdHM7CisgICAgICAgIG1fbnVtQml0cyA9IG51
bUJpdHM7CisgICAgICAgIG1fc2VnbWVudHMucmVzaXplKChudW1CaXRzICsgYml0c1BlclNlZ21l
bnQgLSAxKSA+PiBzZWdtZW50U2hpZnQpOworICAgICAgICBpZiAobnVtQml0cyA8IG9sZE51bUJp
dHMgJiYgbnVtQml0cykgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGxhc3Qgc2VnbWVudC4K
KyAgICAgICAgICAgIGF1dG8mIHNlZ21lbnQgPSBtX3NlZ21lbnRzLmxhc3QoKTsKKyAgICAgICAg
ICAgIHVpbnQzMl90IG1hc2sgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKDFVTEwgPDwgKG51bUJp
dHMgJiBpbmRleE1hc2spKSAtIDEpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgbnVtYmVyT2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRzOyArK2luZGV4KQorICAg
ICAgICAgICAgICAgIHNlZ21lbnQubV9kYXRhW2luZGV4XSAmPSBtYXNrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTZWdt
ZW50KGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgICAgICBm
dW5jKGluZGV4KyssIHNlZ21lbnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U2Vn
bWVudD4gbV9zZWdtZW50czsKKyAgICB1bnNpZ25lZCBtX251bUJpdHMgeyAwIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxv
Y2tEaXJlY3RvcnlJbmxpbmVzLmgKaW5kZXggNDFjYmI0OWMyNjQ5NTY2ZGVjZGY3ODIzODNiZWM4
OGNhMjJiYTU3NS4uNjg0YjFhOGQ4NmM0Yzc1OTcwZDQ4NjhjZmQ0MGJjNjc5NmIwMGIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgbV9i
aXRzLmxpdmUoKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewog
ICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTQx
LDcgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2Nr
RGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3QKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoTm90RW1wdHlCbG9j
ayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fbWFya2luZ05vdEVtcHR5LmZvckVh
Y2hTZXRCaXQoCisgICAgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZvckVhY2hTZXRCaXQoCiAg
ICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tz
W2luZGV4XSk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAyY2I5NTJmNjc4MmU3ZGI4MDU0NzcxNTM5ZDU5ZWRi
OWE4OTQxMmJjLi5lNGRjNjIzNjhhYTQ4MmM5OTY5NjZkNDhiYTM4Yzc0MTA1MjMyZTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMb2NhbEFs
bG9jYXRvcklubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNs
dWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNj
b3BlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCiAKQEAgLTc5LDcgKzgwLDcgQEAg
QWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUp
CiAgICAgaWYgKGZhbHNlKQogICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9y
eS9Mb2NhbEFsbG9jYXRvciBmb3IgIiwgbV9uYW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIs
IHNpemVDbGFzcywgIi5cbiIpOwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVj
dG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0gbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFj
ZS5oZWFwKCksIHNpemVDbGFzcyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5
PiB1bmlxdWVEaXJlY3RvcnkgPSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihzaXplQ2xhc3Mp
OwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkgPSB1bmlxdWVEaXJlY3RvcnkuZ2V0KCk7
CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQoV1RGTW92ZSh1bmlxdWVEaXJlY3RvcnkpKTsKICAg
ICAKQEAgLTEwNSw3ICsxMDYsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2Nh
dG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICB9CiAgICAgCiAgICAgZGlyZWN0b3J5LT5zZXRO
ZXh0RGlyZWN0b3J5SW5TdWJzcGFjZShtX2ZpcnN0RGlyZWN0b3J5KTsKLSAgICBtX2FsaWduZWRN
ZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgbV9hbGln
bmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeShtX3NwYWNlLmhlYXAoKSwgZGly
ZWN0b3J5KTsKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIG1fZmlyc3REaXJlY3Rv
cnkgPSBkaXJlY3Rvcnk7CiAgICAgcmV0dXJuIGFsbG9jYXRvcjsKQEAgLTEyNyw3ICsxMjgsNyBA
QCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coVk0mIHZtLCBzaXplX3Qg
c2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAg
ICAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzaXplLCBBbGxv
Y2F0b3JGb3JNb2RlOjpFbnN1cmVBbGxvY2F0b3IpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9y
LmFsbG9jYXRlKGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5O
dWxsKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJh
bENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgCiAgICAg
aWYgKHNpemUgPD0gT3B0aW9uczo6cHJlY2lzZUFsbG9jYXRpb25DdXRvZmYoKQogICAgICAgICAm
JiBzaXplIDw9IE1hcmtlZFNwYWNlOjpsYXJnZUN1dG9mZikgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggZWFjZTJh
NmY1Yzg3NzlhZmRmMDYxNjBhMzgxNzhiY2M5OTMyMmY0MC4uODcxZGYyYjI3ODhkM2FlYTE3Y2Fi
M2Q5YzJhZjVjNjQ2YTUzYWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCkBAIC0zNiw3ICszNiw3IEBAIEFMV0FZU19J
TkxJTkUgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwg
c2l6ZV90IHNpemUsIEdDCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9l
c0dDKCkpOwogCiAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25W
aXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkKLSAgICAg
ICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2Rl
KTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENv
bnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICByZXR1cm4gYWxsb2NhdGVTbG93KHZtLCBzaXplLCBk
ZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBhYTYyZTExZmQ0NGY2YWJjYmJiZjQyNWI4NmZkZjEx
MTgwYTg0NzljLi44MGE5Y2ViNmEzNzk2ZTkzZTQ2ZTM3NDE3Yzk5ZjJlYjY4ZjBhNDgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcApAQCAtNjEsNyArNjEsNyBA
QCBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFy
YWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrUwogICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1fbWFy
a2luZ05vdEVtcHR5ICYgbV9zZXQubV9ibG9ja3NXaXRoQml0czsKKyAgICAgICAgICAgIGF1dG8g
Yml0cyA9IG1fZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fc2V0Lm1fYmxv
Y2tzV2l0aEJpdHM7CiAgICAgICAgICAgICBtX2luZGV4ID0gYml0cy5maW5kQml0KG1faW5kZXgs
IHRydWUpOwogICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3RvcnkubV9ibG9ja3Mu
c2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCmluZGV4IGZjODE2OTI4N2YwNTY2
YmVlYjg5ZDE5ODQ3MTkxMWE0YTc1OWM0ZTEuLmRiN2U4YWNiNTYxYjFkMjJkNDc2MTY1Y2JjNDA4
YmMzOGY2NTZjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dElubGluZXMuaApAQCAtNzAsNyArNzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9p
ZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogewogICAg
IEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkgPSBtX3N1YnNwYWNlLm1fZGlyZWN0b3J5OwotICAg
IChkaXJlY3RvcnkubV9tYXJraW5nTm90RW1wdHkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNo
U2V0Qml0KAorICAgIChkaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9ibG9j
a3NXaXRoQml0cykuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRl
eCkgewogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3Rvcnku
bV9ibG9ja3NbYmxvY2tJbmRleF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1
YnNwYWNlLmNwcAppbmRleCA0NTNlNjAyMzNkNjExZDQ3YzMxN2JiNzNkY2I5YjI2NmU5MDk2Y2U0
Li5lMTNmMDIwZjU3YjdiNzAzOWM2NzM4MzEyZWRmODcwY2M4Yzg1YzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCkBAIC0zMiwxNyArMzIsMTggQEAKICNp
bmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIklzb1N1YnNwYWNlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogSXNvU3Vic3BhY2U6Oklzb1N1
YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5
cGUsIHNpemVfdCBzaXplLCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpCiAgICAgOiBT
dWJzcGFjZShuYW1lLCBoZWFwKQotICAgICwgbV9zaXplKHNpemUpCi0gICAgLCBtX2RpcmVjdG9y
eSgmaGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4o
c2l6ZSkpCisgICAgLCBtX2RpcmVjdG9yeShXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2Vk
QmxvY2s6OmF0b21TaXplPihzaXplKSkKICAgICAsIG1fbG9jYWxBbGxvY2F0b3IoJm1fZGlyZWN0
b3J5KQogICAgICwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKICAgICAsIG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENv
dW50KG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpCiB7CisgICAgQVNTRVJUKFdURjo6cm91bmRVcFRv
TXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXplKCkpOwog
ICAgIEFTU0VSVChudW1iZXJPZkxvd2VyVGllckNlbGxzIDw9IE1hcmtlZEJsb2NrOjptYXhOdW1i
ZXJPZkxvd2VyVGllckNlbGxzKTsKICAgICBtX2lzSXNvU3Vic3BhY2UgPSB0cnVlOwogICAgIGlu
aXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkp
OwpAQCAtNTAsNyArNTEsNyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1l
LCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgcwogICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9zcGFjZS5kaXJlY3RvcnlMb2NrKCkpOwogICAgIG1fZGlyZWN0b3J5
LnNldFN1YnNwYWNlKHRoaXMpOwogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2Vy
LCAmbV9kaXJlY3RvcnkpOwotICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJE
aXJlY3RvcnkoJm1fZGlyZWN0b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJl
Z2lzdGVyRGlyZWN0b3J5KGhlYXAsICZtX2RpcmVjdG9yeSk7CiAgICAgbV9maXJzdERpcmVjdG9y
eSA9ICZtX2RpcmVjdG9yeTsKIH0KIApAQCAtMTExLDggKzExMiw3IEBAIHZvaWQqIElzb1N1YnNw
YWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIoKQogICAgICAgICByZXR1cm4gcmV2aXZlKGFs
bG9jYXRpb24pOwogICAgIH0KICAgICBpZiAobV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQp
IHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2Vk
U3BhY2U6OnNpemVTdGVwPihtX3NpemUpOwotICAgICAgICBQcmVjaXNlQWxsb2NhdGlvbiogYWxs
b2NhdGlvbiA9IFByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIoKm1fc3BhY2Uu
aGVhcCgpLCBzaXplLCB0aGlzLCAtLW1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KTsKKyAg
ICAgICAgUHJlY2lzZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBQcmVjaXNlQWxsb2NhdGlvbjo6
Y3JlYXRlRm9yTG93ZXJUaWVyKG1fc3BhY2UuaGVhcCgpLCBjZWxsU2l6ZSgpLCB0aGlzLCAtLW1f
cmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KTsKICAgICAgICAgcmV0dXJuIHJldml2ZShhbGxv
Y2F0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuaAppbmRleCBjYTc3N2QwOGFmMWRhNWUwMDk1YzI4ODljMTI0NGY0
ZGU2Y2NhNTYzLi41NTk4ODliODA5NTcxZTc1MzYwMGQ0ZjBhNTJhMTIxNzg0MDU2OTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKQEAgLTQwLDcgKzQwLDcgQEAg
Y2xhc3MgSXNvU3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewogICAgIEpTX0VYUE9SVF9QUklW
QVRFIElzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEhlYXBDZWxsVHlwZSosIHNpemVf
dCBzaXplLCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpOwogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIH5Jc29TdWJzcGFjZSgpOwogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX3NpemU7IH0KKyAgICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2RpcmVjdG9yeS5j
ZWxsU2l6ZSgpOyB9CiAKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yKHNpemVfdCwgQWxsb2Nh
dG9yRm9yTW9kZSkgb3ZlcnJpZGU7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvckZvck5vblZpcnR1
YWwoc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKTsKQEAgLTYzLDcgKzYzLDYgQEAgY2xhc3MgSXNv
U3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewogICAgIHZvaWQgZGlkUmVtb3ZlQmxvY2soc2l6
ZV90IGJsb2NrSW5kZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQmVnaW5Td2VlcGluZ1RvRnJl
ZUxpc3QoTWFya2VkQmxvY2s6OkhhbmRsZSopIG92ZXJyaWRlOwogICAgIAotICAgIHNpemVfdCBt
X3NpemU7CiAgICAgQmxvY2tEaXJlY3RvcnkgbV9kaXJlY3Rvcnk7CiAgICAgTG9jYWxBbGxvY2F0
b3IgbV9sb2NhbEFsbG9jYXRvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvQWxpZ25lZE1lbW9y
eUFsbG9jYXRvcj4gbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwpAQCAtNzQsNyArNzMsNyBA
QCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiAKIEFMV0FZU19JTkxJTkUg
QWxsb2NhdG9yIElzb1N1YnNwYWNlOjphbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVfdCBzaXpl
LCBBbGxvY2F0b3JGb3JNb2RlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gdGhpcy0+
c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFy
a2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICByZXR1cm4gQWxs
b2NhdG9yKCZtX2xvY2FsQWxsb2NhdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAppbmRleCAwNTE4YTdmZTA2MmQ2MDkxNjlkN2Jj
M2Y3NTNjNTg0ZGM0ZWVjZjcwLi40NjYwZTc3ODNhYTY3MmVjOGEyOWY0ZjRmMzNjMjMyY2I0NmRm
NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGlu
ZXMuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5M
SU5FIHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mLCBzaXplX3Qgc2l6
ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlIGZhaWx1cmVNb2RlKQorQUxXQVlTX0lOTElORSB2b2lkKiBJc29TdWJzcGFjZTo6YWxsb2Nh
dGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKLSAgICBS
RUxFQVNFX0FTU0VSVChzaXplID09IHRoaXMtPnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0g
Y2VsbFNpemUoKSk7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZp
cnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6TXVzdEFscmVhZHlIYXZlQWxsb2NhdG9yKTsK
LSAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBm
YWlsdXJlTW9kZSk7CisgICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhl
YXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVy
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAK
aW5kZXggYjllMTg1MDkwNDJlNzAxNzA3YjY3NmU4ODIxYjBjNDFhZjVkOGQ4Mi4uYjJmNmJiZDli
OTQ3OGMyYTUxYzNmMTM4MTg3MmQxYTZkY2ZiNjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UgOiBwdWJsaWMgSXNvU3Vi
c3BhY2UgewogICAgIH5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgpCiAgICAgewogICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGVyVk0ubV9sb2NrKTsKLSAgICAgICAgbV9wZXJWTS5t
X3N1YnNwYWNlUGVyVk0ucmVtb3ZlKCZzcGFjZSgpLmhlYXAoKS0+dm0oKSk7CisgICAgICAgIG1f
cGVyVk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZSgmc3BhY2UoKS5oZWFwKCkudm0oKSk7CiAgICAg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9j
YWxBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0
b3IuY3BwCmluZGV4IDUzZTA1MDhhYjJmZjAxY2Y0ZDQ5YTdmZjA3MDE3NzFmMGYwYWM0YWQuLmY1
NTU3MWM4NmNmYjJlMGFlNGNiZDFlMGFlMjdmZGI4NTBiZDBmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKQEAgLTExMCwxMiArMTEwLDExIEBA
IHZvaWQgTG9jYWxBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nRm9yR29vZCgpCiAgICAgcmVzZXQo
KTsKIH0KIAotdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJh
bENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVN
b2RlKQordm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoSGVhcCYgaGVhcCwg
R0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
IGZhaWx1cmVNb2RlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKLSAgICBIZWFwJiBoZWFwID0gKm1fZGlyZWN0b3J5LT5tX2hlYXA7CiAgICAgQVNT
RVJUKGhlYXAudm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBkb1Rl
c3RDb2xsZWN0aW9uc0lmTmVlZGVkKGRlZmVycmFsQ29udGV4dCk7CisgICAgZG9UZXN0Q29sbGVj
dGlvbnNJZk5lZWRlZChoZWFwLCBkZWZlcnJhbENvbnRleHQpOwogCiAgICAgQVNTRVJUKCFtX2Rp
cmVjdG9yeS0+bWFya2VkU3BhY2UoKS5pc0l0ZXJhdGluZygpKTsKICAgICBoZWFwLmRpZEFsbG9j
YXRlKG1fZnJlZUxpc3Qub3JpZ2luYWxTaXplKCkpOwpAQCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQq
IExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jCiAgICAgLy8gR29vZnkgY29ybmVyIGNhc2U6IHRoZSBHQyBjYWxs
ZWQgYSBjYWxsYmFjayBhbmQgbm93IHRoaXMgZGlyZWN0b3J5IGhhcyBhIGN1cnJlbnRCbG9jay4g
VGhpcyBvbmx5CiAgICAgLy8gaGFwcGVucyB3aGVuIHJ1bm5pbmcgV2ViS2l0IHRlc3RzLCB3aGlj
aCBpbmplY3QgYSBjYWxsYmFjayBpbnRvIHRoZSBHQydzIGZpbmFsaXphdGlvbi4KICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50QmxvY2spKQotICAgICAgICByZXR1cm4gYWxsb2NhdGUoZGVmZXJy
YWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZShoZWFwLCBk
ZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICAKICAgICB2b2lkKiByZXN1bHQgPSB0
cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCkBAIC0xNDIsNyArMTQxLDcgQEAg
dm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQq
IGRlZmVycmFsQ29udGV4dCwgQWxsb2MKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9kaXJlY3RvcnktPnRy
eUFsbG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fZGly
ZWN0b3J5LT50cnlBbGxvY2F0ZUJsb2NrKGhlYXApOwogICAgIGlmICghYmxvY2spIHsKICAgICAg
ICAgaWYgKGZhaWx1cmVNb2RlID09IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KQogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI0OSwxOCArMjQ4LDE4
IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTG9jYWxBbGxvY2F0b3I6
OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29u
dGV4dCkKK3ZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoSGVh
cCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBpZiAo
IU9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBzdGF0aWMgdW5zaWduZWQgYWxsb2NhdGlvbkNvdW50ID0gMDsKICAgICBpZiAoIWFsbG9j
YXRpb25Db3VudCkgewotICAgICAgICBpZiAoIW1fZGlyZWN0b3J5LT5tX2hlYXAtPmlzRGVmZXJy
ZWQoKSkgeworICAgICAgICBpZiAoIWhlYXAuaXNEZWZlcnJlZCgpKSB7CiAgICAgICAgICAgICBp
ZiAoZGVmZXJyYWxDb250ZXh0KQogICAgICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dC0+bV9z
aG91bGRHQyA9IHRydWU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kaXJl
Y3RvcnktPm1faGVhcC0+Y29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwor
ICAgICAgICAgICAgICAgIGhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgrK2FsbG9jYXRpb25Db3VudCA+PSBPcHRp
b25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Mb2NhbEFsbG9jYXRvci5oCmluZGV4IDQzNzI3M2YzNjY4MGU0YTgwOTY4N2NkZjhjOGU0
YThjZjRlY2MxYWQuLjliNjUxYjA3MDM3NjgxNGYyYTM5N2JiMmExODZlZDcwMDA5OWQzODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQmxvY2tEaXJlY3Rvcnk7CiBjbGFzcyBH
Q0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiAKIGNsYXNzIExvY2FsQWxsb2NhdG9yIDog
cHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTG9jYWxBbGxvY2F0b3IpOwpAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBM
b2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRv
cj4gewogICAgIExvY2FsQWxsb2NhdG9yKEJsb2NrRGlyZWN0b3J5Kik7CiAgICAgfkxvY2FsQWxs
b2NhdG9yKCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqLCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGUpOworICAgIHZvaWQqIGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVy
cmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAgCiAgICAgdW5zaWduZWQg
Y2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyZWVMaXN0LmNlbGxTaXplKCk7IH0KIApAQCAt
NjAsMTIgKzYxLDEyIEBAIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2Vu
dGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0
b3J5OwogICAgIAogICAgIHZvaWQgcmVzZXQoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
KiBhbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlIGZhaWx1cmVNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNs
b3dDYXNlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7
CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdp
dGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6
SGFuZGxlKik7CiAgICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7Ci0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJh
bENvbnRleHQqKTsKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5l
ZWRlZChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsKIAogICAgIEJsb2NrRGlyZWN0b3J5KiBt
X2RpcmVjdG9yeTsKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAppbmRleCAwMGQ1NTc0NzQy
NjlkNTcyNDI3ZmQ3ZDk1NzlhMWYwY2E0YWQ1YWYxLi5jM2M4Njk1ZTg1ODhjNzkwMzUwOGVhZTlm
NTFhMmY3OTlmOTgzZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvcklubGluZXMuaApAQCAtMzAsMTQgKzMwLDE0IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZShHQ0Rl
ZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFp
bHVyZU1vZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZShI
ZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2RpcmVjdG9yeS0+aGVhcCgpLT5leHBlY3REb2VzR0Mo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAuZXhwZWN0RG9lc0dDKCkpOwogICAgIHJl
dHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlKAogICAgICAgICBbJl0gKCkgLT4gSGVhcENlbGwqIHsK
LSAgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTShtX2RpcmVjdG9yeS0+aGVhcCgpLT52bSgp
KTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xv
d0Nhc2UoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSkpOworICAgICAgICAgICAgc2FuaXRp
emVTdGFja0ZvclZNKGhlYXAudm0oKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SGVhcENlbGwqPihhbGxvY2F0ZVNsb3dDYXNlKGhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVy
ZU1vZGUpKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAppbmRleCBjNmUxZjZjZGY1MDI3ZmUxNDBmNjQ0ZWNhNDkxOTBmNDg0OGIy
NWEzLi40MjUwNGEwODZhZWRjMjYwOGYwNDRiNjc5ZWEzZmYzOTViYmRhMGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC0zNzcsOCArMzc3LDggQEAg
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUoUHJpbnRTdHJlYW0mIG91dCkKICAg
ICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgZGlyZWN0b3J5KCktPmZvckVhY2hCaXRWZWN0b3JX
aXRoTmFtZSgKICAgICAgICAgaG9sZExvY2soZGlyZWN0b3J5KCktPmJpdHZlY3RvckxvY2soKSks
Ci0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgYml0dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1l
KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5hbWUsICI6IiwgYml0dmVjdG9yW2lu
ZGV4KCldID8gIllFUyIgOiAibm8iKTsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmLCBjb25z
dCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5hbWUsICI6Iiwg
dmVjdG9yUmVmW2luZGV4KCldID8gIllFUyIgOiAibm8iKTsKICAgICAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAppbmRleCA5NzAzZTM1NzFl
M2Y0Y2RmOGIyMTI4MGMzOTEwNzE5MTNlMzVjOGE4Li5kNDA4ZDZlZWYxYzM3MjExMDg3ZWY2NmRm
NmNhMmQyMmZmOTMxZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtMTk1LDggKzE5Niw4IEBAIHZvaWQgTWFya2VkU3BhY2U6OmluaXRp
YWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpCiB9CiAKIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFj
ZShIZWFwKiBoZWFwKQotICAgIDogbV9oZWFwKGhlYXApCiB7CisgICAgQVNTRVJUX1VOVVNFRCho
ZWFwLCBoZWFwID09ICZ0aGlzLT5oZWFwKCkpOwogICAgIGluaXRpYWxpemVTaXplQ2xhc3NGb3JT
dGVwU2l6ZSgpOwogfQogCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6bGFz
dENoYW5jZVRvRmluYWxpemUoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcEJsb2NrcygpCiB7
Ci0gICAgbV9oZWFwLT5zd2VlcGVyKCkuc3RvcFN3ZWVwaW5nKCk7CisgICAgaGVhcCgpLnN3ZWVw
ZXIoKS5zdG9wU3dlZXBpbmcoKTsKICAgICBmb3JFYWNoRGlyZWN0b3J5KAogICAgICAgICBbJl0g
KEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAg
ICAgICBkaXJlY3Rvcnkuc3dlZXAoKTsKQEAgLTI3MCwxMyArMjcxLDEzIEBAIHZvaWQgTWFya2Vk
U3BhY2U6OnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6cHJl
cGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIEFTU0VSVCghVGhyZWFkOjptYXlCZUdDVGhyZWFk
KCkgfHwgbV9oZWFwLT53b3JsZElzU3RvcHBlZCgpKTsKKyAgICBBU1NFUlQoIVRocmVhZDo6bWF5
QmVHQ1RocmVhZCgpIHx8IGhlYXAoKS53b3JsZElzU3RvcHBlZCgpKTsKICAgICBmb3IgKFN1YnNw
YWNlKiBzdWJzcGFjZSA6IG1fc3Vic3BhY2VzKQogICAgICAgICBzdWJzcGFjZS0+cHJlcGFyZUZv
ckFsbG9jYXRpb24oKTsKIAogICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3Rp
dmVXZWFrU2V0cyk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0g
Q29sbGVjdGlvblNjb3BlOjpFZGVuKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc051
cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fcHJlY2lzZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsK
ICAgICBlbHNlCiAgICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3
ZWVwID0gMDsKQEAgLTI5OCw3ICsyOTksNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtT
ZXRzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIAogICAgIG1fbmV3QWN0aXZlV2Vha1NldHMu
Zm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNjb3Bl
KCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZv
ckVhY2godmlzaXQpOwogfQogCkBAIC0zMTAsNyArMzExLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6
cmVhcFdlYWtTZXRzKCkKICAgICAKICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlz
aXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxl
Y3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0
KTsKIH0KIApAQCAtMzU2LDcgKzM1Nyw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JD
b25zZXJ2YXRpdmVTY2FuKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtpbmco
KQogewotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29w
ZTo6RWRlbikKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RWRlbikKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbiA9IG1fcHJlY2lzZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAg
ICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24gPSAwOwpA
QCAtNDE2LDcgKzQxNyw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAKIHZvaWQgTWFy
a2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CisgICAgaWYgKGhlYXAoKS5jb2xsZWN0
aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgZm9yRWFjaERp
cmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4g
SXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuYmVnaW5NYXJraW5n
Rm9yRnVsbENvbGxlY3Rpb24oKTsKQEAgLTU1MSw3ICs1NTIsNyBAQCB2b2lkIE1hcmtlZFNwYWNl
OjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAKIHZvaWQg
TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCiB7Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVj
dGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CisgICAgaWYgKGhlYXAoKS5j
b2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pIHsKICAgICAgICAgZm9y
RWFjaERpcmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9y
eSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkuc25hcHNo
b3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCmluZGV4IDAwNjgwNWI0NDdiZTFiNTIxYmNhNDQ0YzFkY2VhMWVmNzQyNzg0
ODguLmFkMzY2MjJmMWI1N2RkNjZiY2NmM2Q5YWE0ZmYyMTg2MGMzMTI3MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBN
YXJrZWRTcGFjZSB7CiAgICAgTWFya2VkU3BhY2UoSGVhcCopOwogICAgIH5NYXJrZWRTcGFjZSgp
OwogICAgIAotICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXA7IH0KKyAgICBI
ZWFwJiBoZWFwKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgp
OyAvLyBNdXN0IGNhbGwgc3RvcEFsbG9jYXRpbmdGb3JHb29kIGZpcnN0LgogICAgIHZvaWQgZnJl
ZU1lbW9yeSgpOwpAQCAtMjEzLDcgKzIxMyw2IEBAIGNsYXNzIE1hcmtlZFNwYWNlIHsKICAgICBQ
cmVjaXNlQWxsb2NhdGlvbioqIG1fcHJlY2lzZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25C
ZWdpbiB7IG51bGxwdHIgfTsKICAgICBQcmVjaXNlQWxsb2NhdGlvbioqIG1fcHJlY2lzZUFsbG9j
YXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQgeyBudWxscHRyIH07CiAKLSAgICBIZWFwKiBtX2hl
YXA7CiAgICAgc2l6ZV90IG1fY2FwYWNpdHkgeyAwIH07CiAgICAgSGVhcFZlcnNpb24gbV9tYXJr
aW5nVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAgICAgSGVhcFZlcnNpb24gbV9uZXdseUFs
bG9jYXRlZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAppbmRleCBkZjg1MzFkOTdmYzY5NWEyMmNm
MjdkMjVhMWE0ODkwZjBiZTM1YWY1Li5lYTg1MTQ2NDkzMzAyOGM1MDkwOTk2ZjJlNjUxNDc3YTE0
MmUzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlu
bGluZXMuaApAQCAtMzAsNiArMzAsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FMV0FZU19J
TkxJTkUgSGVhcCYgTWFya2VkU3BhY2U6OmhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAqYml0
d2lzZV9jYXN0PEhlYXAqPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSAtIE9CSkVDVF9P
RkZTRVRPRihIZWFwLCBtX29iamVjdFNwYWNlKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJh
dGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBBU1NFUlQoaXNJdGVy
YXRpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKaW5kZXggOTRj
MmZmNGM2YjJhY2E2YzE5ZGMxNThjYjRmOGU2MzczNGQwZTNhNy4uYWI5OWUyZGE2YzVjM2IzNTEz
NmIxN2FlNDRlNTFiYTc4YTk4OTczMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNw
YWNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhlYXBDZWxsVHlwZS5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQYXJhbGxlbFNvdXJjZUFk
YXB0ZXIuaCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
U3Vic3BhY2VJbmxpbmVzLmgiCkBAIC00OSw3ICs1MCw3IEBAIHZvaWQgU3Vic3BhY2U6OmluaXRp
YWxpemUoSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iq
IGFsCiAgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yID0gYWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjsKICAgICBtX2RpcmVjdG9yeUZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxpZ25lZE1lbW9yeUFs
bG9jYXRvci0+Zmlyc3REaXJlY3RvcnkoKTsKIAotICAgIEhlYXAmIGhlYXAgPSAqbV9zcGFjZS5o
ZWFwKCk7CisgICAgSGVhcCYgaGVhcCA9IG1fc3BhY2UuaGVhcCgpOwogICAgIGhlYXAub2JqZWN0
U3BhY2UoKS5tX3N1YnNwYWNlcy5hcHBlbmQodGhpcyk7CiAgICAgbV9hbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLT5yZWdpc3RlclN1YnNwYWNlKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmlu
ZGV4IGE4ZWQ2YjgyODkwMGZlMDIxM2JkZWQ5YzYzNzVjOTdiMGEzNmM4NTkuLjQ5NGU2NDg5ZmU0
YTFkYjIyZGIyNzQ2N2U2OTE3MmFhMzcyMDJkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAg
LTQyMSw2ICs0MjEsOSBAQCBjbGFzcyBGYXN0Qml0VmVjdG9ySW1wbCB7CiAgICAgfQogICAgIAog
ICAgIHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSB3b3JkVmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
d29yZHMudmlldygpOyB9CisKKyAgICBXb3JkcyYgdW5zYWZlV29yZHMoKSB7IHJldHVybiBtX3dv
cmRzOyB9CisgICAgY29uc3QgV29yZHMmIHVuc2FmZVdvcmRzKCkgY29uc3QgeyByZXR1cm4gbV93
b3JkczsgfQogICAgIAogcHJpdmF0ZToKICAgICAvLyBZb3UnZCB0aGluayB0aGF0IHdlIGNvdWxk
IHJlbW92ZSB0aGlzIGZyaWVuZCBpZiB3ZSB1c2VkIHByb3RlY3RlZCwgYnV0IHlvdSdkIGJlIHdy
b25nLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383514</attachid>
            <date>2019-11-13 16:31:11 -0800</date>
            <delta_ts>2019-11-13 16:49:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113163110.patch</filename>
            <type>text/plain</type>
            <size>61935</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li43NWM1OGY0ZGUwZmIxZWEx
ZGYxMzIxMWNjOGNiMzRjNTQ3YjQ0ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTUgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBh
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IGFwcGx5aW5nIElzb1N1YnNwYWNlIHRvIGFsbCBKU0NlbGxzLiBUaGlzIG1lYW5zIHRoYXQg
SXNvU3Vic3BhY2Ugc2hvdWxkIGJlIHNtYWxsIGVub3VnaCwKKyAgICAgICAgc28gdGhhdCB3ZSBj
YW4gaG9sZCBtYW55IElzb1N1YnNwYWNlcyB3aXRob3V0IGNvbnNpZGVyaW5nIG1lbW9yeSByZWdy
ZXNzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVjZSBzZXZlcmFsIHRo
aW5ncyB0byBzaHJpbmsgc2l6ZW9mKElzb1N1YnNwYWNlKSBmcm9tIDUyOCB0byAzODQuCisKKyAg
ICAgICAgMS4gQWRqdXN0aW5nIG1lbWJlcnMgdG8gcmVtb3ZlIHNvbWUgcGFkZGluZ3MuCisgICAg
ICAgIDIuIFJlbW92ZSBtX2hlYXAgZmllbGQgc2luY2UgdGhpcyBjYW4gYmUgZ290IGZyb20gdGhl
IGNhbGxlciBlYXNpbHkuCisgICAgICAgIDMuIE1ha2UgTWFya2VkU3BhY2U6OmhlYXAoKSBlZmZp
Y2llbnQ6IGp1c3QgZG9pbmcgcG9pbnRlciBhcml0aG1ldGljLgorICAgICAgICA0LiBJbnRyb2R1
Y2UgQmxvY2tEaXJlY3RvcnlCaXRzLCB3aGljaCByZXBhbGNlcyA5IEZhc3RCaXRWZWN0b3IgaW4g
QmxvY2tEaXJlY3RvcnkgdG8gdGhpcyBvbmUgY2xhc3MuCisgICAgICAgICAgIFNpbmNlIGFsbCBG
YXN0Qml0VmVjdG9yIGhhcyB0aGUgc2FtZSBzaXplLCB3ZSBzaG91bGQgbm90IGhhdmUgYSBzaXpl
IGZpZWxkIGZvciBlYWNoIEZhc3RCaXRWZWN0b3IuCisgICAgICAgICAgIFdlIHJldXNlIEZhc3RC
aXRWZWN0b3IncyBWaWV3IG1lY2hhbmlzbSB0byBrZWVwIHRoZSBzYW1lIGVyZ29ub21pY3Mgd2hp
bGUgbWFraW5nIEJsb2NrRGlyZWN0b3J5Qml0cworICAgICAgICAgICBtdWNoIHNtYWxsZXIuIFdl
IHB1dCA5IHVpbnQzMl90IGFzIFNlZ21lbnQsIGFuZCBtYW5hZ2UgVmVjdG9yPFNlZ21lbnQ+IGlu
IHRoaXMgZGF0YSBzdHJ1Y3R1cmUuIFNpbmNlCisgICAgICAgICAgIHdlIHRvdWNoIHNldmVyYWwg
Yml0cyBhdCB0aGUgc2FtZSB0aW1lIGZvciB0aGUgc2FtZSBibG9jay1pbmRleCwgdGhpcyBkYXRh
IHN0cnVjdHVyZSBpcyBjb21wYWN0IGFuZAorICAgICAgICAgICBlZmZpY2llbnQuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0
b3J5KToKKyAgICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDoKKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpBbGxvY2F0b3I6OmFsbG9jYXRlIGNvbnN0KToKKyAgICAgICAgKiBoZWFw
L0Jsb2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OkJsb2Nr
RGlyZWN0b3J5KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2Nr
VG9TdGVhbCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxv
Y2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2sp
OgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2spOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVj
dG9yeTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0Rp
cmVjdG9yeTo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFw
c2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0
b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJs
b2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNocmluayk6Cisg
ICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrU291cmNlKToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKToKKyAgICAgICAgKiBoZWFwL0Jsb2Nr
RGlyZWN0b3J5Lmg6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpjZWxsS2luZCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yKToKKyAg
ICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6Cisg
ICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpoZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
ZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvcldvcmRWaWV3KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
Ojp3b3JkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp3b3JkKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpjbGVhckFsbCk6Cisg
ICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JX
b3JkVmlldzo6dmlldyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6
bnVtQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6cmVzaXpl
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpmb3JFYWNoU2VnbWVudCk6Cisg
ICAgICAgICogaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5
Ojpmb3JFYWNoTm90RW1wdHlCbG9jayk6CisgICAgICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyk6
CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyk6CisgICAg
ICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21w
bGV0ZVN1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvSXNvQ2Vs
bFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJr
ZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbCk6CisgICAgICAgICogaGVh
cC9Jc29TdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjpJc29TdWJzcGFj
ZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIp
OgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3Bh
Y2U6OmNlbGxTaXplKToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5v
blZpcnR1YWwpOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6c2l6ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2VJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgor
ICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1
YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlOjp+QXV0b3JlbW92aW5nSXNvU3Vi
c3BhY2UpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxvY2Fs
QWxsb2NhdG9yOjpkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKToKKyAgICAgICAgKiBoZWFwL0xv
Y2FsQWxsb2NhdG9yLmg6CisgICAgICAgICogaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZHVt
cFN0YXRlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnN3
ZWVwQmxvY2tzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OnByZXBhcmVGb3JNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJl
Z2luTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQp
OgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmhlYXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2VJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpoZWFwIGNvbnN0KToKKyAgICAgICAg
KiBoZWFwL1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmluaXRpYWxpemUp
OgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuaDoKKwogMjAxOS0xMS0xMyAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFNwbGl0IEFyaXRoUHJvZmlsZSBp
bnRvIGEgVW5hcnkgYW5kIGEgQmluYXJ5IHZlcnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTVlNzk1MTVhMmJkMTliMzQz
NTBmYTY5ZGU5OTM4ZWZhNjhlM2UxYi4uZTFkNzhkM2RiMWZmNTA4ZDNjYzY5NWE2MTI2YTE1NWYw
YzZlMTI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0
cyBzaG91bGQgYmUgY29tcGFjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA0MTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0
VmVjdG9ySW1wbDo6dW5zYWZlV29yZHMpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDo6dW5zYWZlV29yZHMgY29uc3QpOgorCiAyMDE5LTExLTExICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVVEMgb2Zmc2V0IGZvciBTYW1vYSBpcyBt
aXNjYWxjdWxhdGVkIHdoZW4gIUhBVkUoVElNRUdNKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGRjZWIzZmMwOTkwNzJhYzM2NjE2ZTE2MzY5NjZiNTNiYjUzNzViYzIuLmI2
ZjBhZWQzMGUyNGQzYWY1ZTNkYWExZTkyNzI1ZTQyZWUxNDNlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2OSw2ICs1NjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oCiAg
ICAgaGVhcC9BbGxvY2F0b3JGb3JNb2RlLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5LmgKKyAg
ICBoZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCiAgICAgaGVhcC9CbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaAogICAgIGhlYXAvQ2VsbEF0dHJpYnV0ZXMuaAogICAgIGhlYXAvQ2VsbENvbnRhaW5lci5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkMjdkOTgxMDE0Mzc4OTQ0YTNhMTYy
ODc1YTg1NTMyYTkxNmNiZDYuLjM2M2JlZjQxODE4NTRmYzlmZTJlNThkMjkyY2EyNzg5Y2JiODgz
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODE3LDYgKzE4MTcsNyBAQAog
CQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAw
NTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODUwQjE1MjI2RUQ2NDEw
MDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NTBCMTQyMjZFRDYzRTAwOUFCRjlDIC8qIERGR01p
bmlmaWVkSURJbmxpbmVzLmggKi87IH07CisJCUUzODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBC
bG9ja0RpcmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg5
M0ExRDIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4OTNB
MUMyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQu
aCAqLzsgfTsKIAkJRTM4RDk5OUMyMjFCNzhCQjAwRDUwNDc0IC8qIEpTTm9uRGVzdHJ1Y3RpYmxl
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OEQ5OTlBMjIxQjc4OUYwMEQ1MDQ3NCAvKiBKU05vbkRlc3RydWN0aWJsZVByb3h5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5MDA2MjEyMjA4
QkZDNDAwMTAxOUNGIC8qIFN1YnNwYWNlQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkwMDYyMDIyMDhCRkMzMDAxMDE5Q0YgLyogU3Vic3Bh
Y2VBY2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDk0Nyw2ICs0OTQ4LDcgQEAKIAkJRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1h
Y3JvQXNzZW1ibGVySGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4
MEQ2NkIxRjE5MjQ5RDAwQTU5MDk1IC8qIEJ1aWx0aW5OYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWluaWZpZWRJRElubGluZXMuaDsgcGF0aCA9IGRm
Zy9ERkdNaW5pZmllZElESW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzg2NTJFMjIzN0NBMEM4MDBFMUQ1RUUgLyogQmxvY2tEaXJlY3RvcnlCaXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRGlyZWN0b3J5Qml0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzg5M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOEQwNjBCMUY4RTgxNDEwMDY0OUNGMiAvKiBKU1NjcmlwdEZldGNo
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwQzFG
OEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjEwMiw2ICs2MTA0LDcgQEAKIAkJCQkwRkI0Njc3RTFGRERBNkU1
MDAzRkNCMDkgLyogQXRvbUluZGljZXMuaCAqLywKIAkJCQlDMkI5MTZDNDE0REEwNDBDMDBDQkFD
ODYgLyogQmxvY2tEaXJlY3RvcnkuY3BwICovLAogCQkJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4
NiAvKiBCbG9ja0RpcmVjdG9yeS5oICovLAorCQkJCUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAv
KiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLywKIAkJCQkwRjdERjE0NTFFMkJFRjY4MDA5NTk1MUIg
LyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQxOTJDMzAwNTYw
OUQ5IC8qIENlbGxBdHRyaWJ1dGVzLmNwcCAqLywKIAkJCQkwRjk2MzAzNjFENDE5MkMzMDA1NjA5
RDkgLyogQ2VsbEF0dHJpYnV0ZXMuaCAqLywKQEAgLTkwMDgsNiArOTAxMSw3IEBACiAJCQkJODY5
NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2NEIyNzIxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzg2NTJFMzIzN0NBMEM5MDBFMUQ1RUUgLyogQmxvY2tEaXJl
Y3RvcnlCaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdERjE0NjFFMkJFRjZBMDA5NTk1MUIg
LyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBF
MTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI0
Njk0MzkxRjk3NDM5RTAwQ0NCM0Y5IC8qIEJvb2xlYW5Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmNwcAppbmRleCBlN2M5M2MyNjM2Nzk3NzBiMmQwMWRmMmRlMGJmZWNmZjg2ZjFjYzA4
Li5lYTMyZGYzYzBiY2MxZGUxNzZlY2ZhOGY2ZjI3ZTAyNGEwMjk1OGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcApA
QCAtNDAsMTIgKzQwLDEyIEBAIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKCkKIHsKIH0KIAotdm9pZCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpyZWdpc3Rl
ckRpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5KQordm9pZCBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOjpyZWdpc3RlckRpcmVjdG9yeShIZWFwJiBoZWFwLCBCbG9ja0RpcmVjdG9yeSog
ZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFkaXJlY3RvcnktPm5leHREaXJlY3Rv
cnlJbkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CiAgICAgCiAgICAgaWYgKG1fZGlyZWN0b3Jp
ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkg
fHwgZGlyZWN0b3J5LT5oZWFwKCktPndvcmxkSXNTdG9wcGVkKCkpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKGhlYXAsICFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBoZWFwLndvcmxkSXNTdG9w
cGVkKCkpOwogICAgICAgICBmb3IgKFN1YnNwYWNlKiBzdWJzcGFjZSA9IG1fc3Vic3BhY2VzLmZp
cnN0KCk7IHN1YnNwYWNlOyBzdWJzcGFjZSA9IHN1YnNwYWNlLT5uZXh0U3Vic3BhY2VJbkFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IoKSkKICAgICAgICAgICAgIHN1YnNwYWNlLT5kaWRDcmVhdGVGaXJz
dERpcmVjdG9yeShkaXJlY3RvcnkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAppbmRleCA2NjQ0MmFkZjMxOGE1Njdk
ODJhY2MwZGY4MjIyZTM1Y2ExYjU0YWRjLi45NTY2OTYzNWQ4ZGQ1MTMxZDhlZmJhYmNhZWFlNmIw
ZmU3ZWQxYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgQmxvY2tEaXJlY3Rvcnk7CitjbGFzcyBIZWFwOwogY2xhc3MgU3Vic3BhY2U7CiAKIGNs
YXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IgewpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yIHsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0ID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJEaXJlY3RvcnkoQmxvY2tEaXJl
Y3RvcnkqKTsKKyAgICB2b2lkIHJlZ2lzdGVyRGlyZWN0b3J5KEhlYXAmLCBCbG9ja0RpcmVjdG9y
eSopOwogICAgIEJsb2NrRGlyZWN0b3J5KiBmaXJzdERpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlyZWN0b3JpZXMuZmlyc3QoKTsgfQogCiAgICAgdm9pZCByZWdpc3RlclN1YnNwYWNlKFN1
YnNwYWNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvci5oCmluZGV4IDIyOTE1
OGZjZTQyMGYxZTc5OTIwOWRjMTQ0OGI4MzIxODBhMmY3OWEuLjcyMzlkMjI5ZmNlOTJiYmEwNDU0
MDAzZTQ5ZDUyOGYwN2UzMjdjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRv
ci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgR0NEZWZlcnJh
bENvbnRleHQ7CitjbGFzcyBIZWFwOwogY2xhc3MgTG9jYWxBbGxvY2F0b3I7CiAKIC8vIFRoaXMg
YWJzdHJhY3RzIGhvdyB3ZSByZWZlciB0byBMb2NhbEFsbG9jYXRvciBzbyB0aGF0IHdlIGNvdWxk
IGV2ZW50dWFsbHkgc3VwcG9ydCB0aHJlYWQtbG9jYWwKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3Mg
QWxsb2NhdG9yIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQqIGFsbG9jYXRlKEdDRGVm
ZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKSBjb25zdDsKKyAgICB2b2lkKiBh
bGxvY2F0ZShIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUp
IGNvbnN0OwogICAgIAogICAgIHVuc2lnbmVkIGNlbGxTaXplKCkgY29uc3Q7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggMTc1NzMy
NzNjNDk5ZmJjNThhN2I0ZmViZmY3YTBkOWJjOWRkNDJlZi4uNjk1YjA4OWQ4YzU3MWE3YmIwODBj
N2Q5YzFlYTZmYzg5ZDhlODMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fs
bG9jYXRvcklubGluZXMuaApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
QUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlKEdDRGVmZXJyYWxDb250ZXh0
KiBjb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKK0FMV0FZU19JTkxJ
TkUgdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4
dCogY29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fbG9jYWxBbGxvY2F0b3ItPmFsbG9jYXRlKGNvbnRleHQsIG1vZGUpOworICAgIHJldHVy
biBtX2xvY2FsQWxsb2NhdG9yLT5hbGxvY2F0ZShoZWFwLCBjb250ZXh0LCBtb2RlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5jcHAKaW5kZXggN2VlZTRhODc0NmI2YmQxODg1MmE3YWI2Mjg3NGJiYWY1N2FiZTI4
OS4uMGNjNGI0NzliZjcxN2I0NjAwNDNiYmNmMDRjYjY2MDNjMjMwNjNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcApAQCAtMzgsOSArMzgsOCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5KEhl
YXAqIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSkKK0Jsb2NrRGlyZWN0b3J5OjpCbG9ja0RpcmVjdG9y
eShzaXplX3QgY2VsbFNpemUpCiAgICAgOiBtX2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihjZWxsU2l6ZSkpCi0gICAgLCBtX2hlYXAoaGVhcCkKIHsKIH0KIApAQCAtNzYsNyArNzUsNyBA
QCBib29sIEJsb2NrRGlyZWN0b3J5Ojppc1BhZ2VkT3V0KE1vbm90b25pY1RpbWUgZGVhZGxpbmUp
CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kRW1wdHlCbG9ja1Rv
U3RlYWwoKQogewotICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1
cnNvciwgdHJ1ZSk7CisgICAgbV9lbXB0eUN1cnNvciA9IG1fYml0cy5lbXB0eSgpLmZpbmRCaXQo
bV9lbXB0eUN1cnNvciwgdHJ1ZSk7CiAgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Mu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbV9ibG9ja3NbbV9l
bXB0eUN1cnNvcl07CkBAIC04NSw3ICs4NCw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2Nr
RGlyZWN0b3J5OjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKQogTWFya2VkQmxvY2s6OkhhbmRsZSog
QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFsbG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImIGFs
bG9jYXRvcikKIHsKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGFsbG9jYXRvci5tX2FsbG9jYXRp
b25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHwgbV9lbXB0eSkuZmluZEJpdChh
bGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKKyAgICAgICAgYWxsb2NhdG9yLm1f
YWxsb2NhdGlvbkN1cnNvciA9IChtX2JpdHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0eSgpIHwgbV9i
aXRzLmVtcHR5KCkpLmZpbmRCaXQoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7
CiAgICAgICAgIGlmIChhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNp
emUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKQEAgLTk2LDExICs5
NSwxMSBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrRm9y
QWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYgYWxsbwogICAgIH0KIH0KIAotTWFya2VkQmxvY2s6
OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2soKQorTWFya2VkQmxvY2s6
OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2soSGVhcCYgaGVhcCkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0g
ICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgq
bV9oZWFwLCBzdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOworICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoaGVhcCwgc3Vi
c3BhY2UoKS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICBpZiAoIWhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkBAIC0xMTgsMjEgKzExNywxMiBAQCB2b2lkIEJs
b2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKICAgICAg
ICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsKICAgICAgICAgbV9i
bG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNhcGFjaXR5KCkgIT0g
b2xkQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCi0gICAgICAgICAg
ICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZl
Y3RvciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9y
LCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1CaXRzKCkgPT0gb2xk
Q2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRD
YXBhY2l0eSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Yml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRSZXNpemVCaXRzKG1f
YmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAg
ICAgICAgICAgICBsb2NrZXIsCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2
ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBh
Y2l0eSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1fYml0cy5yZXNpemUo
bV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
bmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOwpAQCAtMTQyLDggKzEzMiw4IEBA
IHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KQogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2Fy
eSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQodmVjdG9yLCAhdmVjdG9yW2luZGV4XSk7CisgICAgICAgIFsmXShhdXRvIHZl
Y3RvclJlZikgeworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3JSZWYsICF2ZWN0b3JS
ZWZbaW5kZXhdKTsKICAgICAgICAgfSk7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBwb2ludCBhdCB3
aGljaCB0aGUgYmxvY2sgbGVhcm5zIG9mIGl0cyBjZWxsU2l6ZSgpIGFuZCBhdHRyaWJ1dGVzKCku
CkBAIC0xNjUsOCArMTU1LDggQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6cmVtb3ZlQmxvY2soTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigKICAg
ICAgICAgaG9sZExvY2sobV9iaXR2ZWN0b3JMb2NrKSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVj
dG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxz
ZTsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmKSB7CisgICAgICAgICAgICB2ZWN0b3JSZWZb
YmxvY2stPmluZGV4KCldID0gZmFsc2U7CiAgICAgICAgIH0pOwogICAgIAogICAgIGJsb2NrLT5k
aWRSZW1vdmVGcm9tRGlyZWN0b3J5KCk7CkBAIC0xOTIsNyArMTgyLDcgQEAgdm9pZCBCbG9ja0Rp
cmVjdG9yeTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogICAgIG1fdW5zd2VwdEN1cnNvciA9IDA7
CiAgICAgbV9lbXB0eUN1cnNvciA9IDA7CiAgICAgCi0gICAgbV9lZGVuLmNsZWFyQWxsKCk7Cisg
ICAgbV9iaXRzLmVkZW4oKS5jbGVhckFsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OnVzZUltbW9ydGFsT2JqZWN0cygpKSkgewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdv
cmsgYWdhaW4uCkBAIC0yMzcsMjAgKzIyNywyMCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpiZWdp
bk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCiAgICAgLy8gTWFyayBiaXRzIGFyZSBzdGlja3kg
YW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0aGVzZSBk
dXJpbmcgZnVsbAogICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhlIGxh
c3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25nCiAgICAg
Ly8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCi0gICAgbV9tYXJraW5nTm90RW1wdHkuY2xlYXJB
bGwoKTsKLSAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtp
bmdOb3RFbXB0eSgpLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtpbmdSZXRpcmVkKCkuY2xl
YXJBbGwoKTsKIH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiB7Ci0gICAg
bV9hbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMuYWxsb2NhdGVkKCkuY2xlYXJBbGwo
KTsKICAgICAKICAgICAvLyBJdCdzIHN1cnByaXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXBy
ZWhlbmQsIGJ1dCB0aGUgZW5kLW9mLW1hcmtpbmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCiAgICAg
Ly8ga25vdyB3aGF0IGtpbmQgb2YgY29sbGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMg
YWxyZWFkeSBlbmNvZGVkIGluIHRoZSBtX21hcmtpbmdYWVoKICAgICAvLyB2ZWN0b3JzLgogICAg
IAotICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7Ci0gICAgbV9jYW5B
bGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJr
aW5nUmV0aXJlZDsKKyAgICBtX2JpdHMuZW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiB+bV9iaXRz
Lm1hcmtpbmdOb3RFbXB0eSgpOworICAgIG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkg
PSBtX2JpdHMubGl2ZSgpICYgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgfm1fYml0cy5tYXJr
aW5nUmV0aXJlZCgpOwogCiAgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgewogICAgICAgICAv
LyBUaGVyZSBhcmUgc29tZSBibG9ja3MgdGhhdCB3ZSBkaWRuJ3QgYWxsb2NhdGUgb3V0IG9mIGlu
IHRoZSBsYXN0IGN5Y2xlLCBidXQgd2Ugc3dlcHQgdGhlbS4gVGhpcwpAQCAtMjU4LDcgKzI0OCw3
IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogICAgICAgICAvLyBkZXN0cnVj
dG9ycyBhZ2Fpbi4gVGhhdCdzIGZpbmUgYmVjYXVzZSBvZiB6YXBwaW5nLiBUaGUgb25seSB0aW1l
IHdoZW4gd2UgY2Fubm90IGZvcmdldCBpcyB3aGVuCiAgICAgICAgIC8vIHdlIGp1c3QgYWxsb2Nh
dGUgYSBibG9jayBvciB3aGVuIHdlIG1vdmUgYSBibG9jayBmcm9tIG9uZSBzaXplIGNsYXNzIHRv
IGFub3RoZXIuIFRoYXQgZG9lc24ndAogICAgICAgICAvLyBoYXBwZW4gaGVyZS4KLSAgICAgICAg
bV9kZXN0cnVjdGlibGUgPSBtX2xpdmU7CisgICAgICAgIG1fYml0cy5kZXN0cnVjdGlibGUoKSA9
IG1fYml0cy5saXZlKCk7CiAgICAgfQogICAgIAogICAgIGlmIChmYWxzZSkgewpAQCAtMjY5LDE3
ICsyNTksMTcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAKIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKIHsKLSAgICBt
X3Vuc3dlcHQgfD0gbV9lZGVuOworICAgIG1fYml0cy51bnN3ZXB0KCkgfD0gbV9iaXRzLmVkZW4o
KTsKIH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxl
Y3Rpb24oKQogewotICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKKyAgICBtX2JpdHMudW5zd2VwdCgp
ID0gbV9iaXRzLmxpdmUoKTsKIH0KIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rv
cnk6OmZpbmRCbG9ja1RvU3dlZXAoKQogewotICAgIG1fdW5zd2VwdEN1cnNvciA9IG1fdW5zd2Vw
dC5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CisgICAgbV91bnN3ZXB0Q3Vyc29yID0g
bV9iaXRzLnVuc3dlcHQoKS5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CiAgICAgaWYg
KG1fdW5zd2VwdEN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX3Vuc3dlcHRDdXJzb3JdOwpAQCAtMjg3LDcgKzI3
Nyw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3
ZWVwKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogewotICAgIG1fdW5zd2VwdC5m
b3JFYWNoU2V0Qml0KAorICAgIG1fYml0cy51bnN3ZXB0KCkuZm9yRWFjaFNldEJpdCgKICAgICAg
ICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOwogICAgICAgICAgICAgYmxvY2stPnN3ZWVwKG51bGxw
dHIpOwpAQCAtMjk2LDcgKzI4Niw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIAog
dm9pZCBCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKCkKIHsKLSAgICAobV9lbXB0eSAmIH5tX2Rlc3Ry
dWN0aWJsZSkuZm9yRWFjaFNldEJpdCgKKyAgICAobV9iaXRzLmVtcHR5KCkgJiB+bV9iaXRzLmRl
c3RydWN0aWJsZSgpKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkg
ewogICAgICAgICAgICAgbWFya2VkU3BhY2UoKS5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsK
ICAgICAgICAgfSk7CkBAIC0zMDcsNyArMjk3LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YXNz
ZXJ0Tm9VbnN3ZXB0KCkKICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgaWYgKG1fdW5zd2VwdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fYml0cy51bnN3
ZXB0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZGF0YUxvZygiQXNz
ZXJ0aW9uIGZhaWxlZDogdW5zd2VwdCBub3QgZW1wdHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKQEAg
LTMyOSw3ICszMTksNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigp
Pj4gQmxvY2tEaXJlY3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9jawogICAgICAgICAgICAgaWYg
KG1fZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIG1faW5kZXggPSBtX2Rp
cmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0eS5maW5kQml0KG1faW5kZXgsIHRydWUpOworICAgICAg
ICAgICAgbV9pbmRleCA9IG1fZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5maW5k
Qml0KG1faW5kZXgsIHRydWUpOwogICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3Rv
cnkubV9ibG9ja3Muc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1NywxOCArMzQ3LDE5IEBAIHZvaWQg
QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCiAgICAgdW5zaWduZWQg
bWF4TmFtZUxlbmd0aCA9IDA7CiAgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAg
ICBOb0xvY2tpbmdOZWNlc3NhcnksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0
IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmLCBjb25zdCBjaGFyKiBu
YW1lKSB7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0odmVjdG9yUmVmKTsKICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKICAgICAgICAgICAgIG1heE5hbWVMZW5n
dGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOwogICAgICAgICB9KTsKICAgICAK
ICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2Fy
eSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUp
IHsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAg
ICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7IGktLTspCiAgICAgICAg
ICAgICAgICAgb3V0LnByaW50KCIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQodmVjdG9yLCAi
XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludCh2ZWN0b3JSZWYsICJcbiIpOwogICAgICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKaW5k
ZXggYTdiY2FhNmI5ZWJkNGJhZDYzZDdlNzgxMTA5MThlM2U0MzYzODdkMS4uMDI4ODgwYjI3ZGNk
NTJjODUwNGQ2NjFjYTFjNzQwMGRjMmJjMjVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIgorI2luY2x1ZGUgIkJsb2NrRGlyZWN0
b3J5Qml0cy5oIgogI2luY2x1ZGUgIkNlbGxBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJlZUxp
c3QuaCIKICNpbmNsdWRlICJMb2NhbEFsbG9jYXRvci5oIgpAQCAtNDQsMTkgKzQ1LDYgQEAgY2xh
c3MgSXNvQ2VsbFNldDsKIGNsYXNzIE1hcmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCi0jZGVmaW5lIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwK
LSAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBo
YXZlIGFjdHVhbCBibG9ja3MuICovXAotICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNl
dCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMuICovIFwKLSAgICBtYWNy
byhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJl
IGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKLSAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVt
cHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJl
IG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRC
bG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCi0gICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0
cnVjdGlibGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0
b3JzIHRvIHJ1bi4gKi9cCi0gICAgbWFjcm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwg
YmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCi0gICAg
bWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291
bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuICovXAotICAgIFwKLSAgICAv
KiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICovXAotICAgIG1hY3JvKG1hcmtp
bmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhh
dCBhcmUgbm90IGVtcHR5LiAqLyBcCi0gICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdS
ZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KLQog
Ly8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhbmQgZW1wdHkgdG8g
YmUgZXhjbHVzaXZlOgogLy8KIC8vICAgICBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ICYgZW1wdHkg
PT0gMApAQCAtNzgsNyArNjYsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogcHVibGljOgotICAgIEJsb2NrRGlyZWN0
b3J5KEhlYXAqLCBzaXplX3QgY2VsbFNpemUpOworICAgIEJsb2NrRGlyZWN0b3J5KHNpemVfdCBj
ZWxsU2l6ZSk7CiAgICAgfkJsb2NrRGlyZWN0b3J5KCk7CiAgICAgdm9pZCBzZXRTdWJzcGFjZShT
dWJzcGFjZSopOwogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTk4LDcgKzg2
LDYgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0
aW9uOyB9CiAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uOyB9CiAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7IH0KLSAgICBIZWFwKiBoZWFw
KCkgeyByZXR1cm4gbV9oZWFwOyB9CiAKICAgICBib29sIGlzRnJlZUxpc3RlZENlbGwoY29uc3Qg
dm9pZCogdGFyZ2V0KTsKIApAQCAtMTE1LDkgKzEwMiw5IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5
IHsKICAgICBMb2NrJiBiaXR2ZWN0b3JMb2NrKCkgeyByZXR1cm4gbV9iaXR2ZWN0b3JMb2NrOyB9
CiAKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBj
YXBpdGFsQml0TmFtZSkgICAgIFwKLSAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dl
ckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXMg
IyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKICAgICBib29sIGlzICMjIGNhcGl0YWxCaXRO
YW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5p
bmRleCgpKTsgfSBcCi0gICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0
cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5h
bWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV9iaXRz
LnNldElzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7IH0gXAogICAgIHZvaWQgc2V0
SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUobG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CiAgICAgRk9SX0VBQ0hfQkxPQ0tf
RElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUykKICN1bmRlZiBCTE9D
S19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUwpAQCAtMTI2LDcgKzExMyw3IEBAIGNsYXNzIEJsb2Nr
RGlyZWN0b3J5IHsKICAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMubG93ZXJCaXROYW1lKCkp
OwogICAgICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9C
SVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sKICAgICB9
CkBAIC0xMzUsNyArMTIyLDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQgZm9y
RWFjaEJpdFZlY3RvcldpdGhOYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuYyYg
ZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sobG93ZXJC
aXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFt
ZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMubG93ZXJCaXROYW1lKCks
ICNjYXBpdGFsQml0TmFtZSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQo
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSwogICAgIH0KQEAgLTE2NiwxNyArMTUzLDE0IEBAIGNsYXNzIEJsb2NrRGlyZWN0
b3J5IHsKICAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kQmxvY2tGb3JBbGxvY2F0
aW9uKExvY2FsQWxsb2NhdG9yJik7CiAgICAgCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5
QWxsb2NhdGVCbG9jaygpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxv
Y2soSGVhcCYpOwogICAgIAogICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9j
a3M7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7CiAKICAgICAvLyBN
dXRhdG9yIHVzZXMgdGhpcyB0byBndWFyZCByZXNpemluZyB0aGUgYml0dmVjdG9ycy4gVGhvc2Ug
dGhpbmdzIGluIHRoZSBHQyB0aGF0IG1heSBydW4KICAgICAvLyBjb25jdXJyZW50bHkgdG8gdGhl
IG11dGF0b3IgbXVzdCBsb2NrIHRoaXMgd2hlbiBhY2Nlc3NpbmcgdGhlIGJpdHZlY3RvcnMuCi0j
ZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBp
dGFsQml0TmFtZSkgXAotICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOwotICAg
IEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJB
VElPTikKLSN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OCisgICAgQmxvY2tE
aXJlY3RvcnlCaXRzIG1fYml0czsKICAgICBMb2NrIG1fYml0dmVjdG9yTG9jazsKICAgICBMb2Nr
IG1fbG9jYWxBbGxvY2F0b3JzTG9jazsKICAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7
CkBAIC0xOTAsNyArMTc0LDYgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIAogICAgIC8v
IEZJWE1FOiBBbGwgb2YgdGhlc2Ugc2hvdWxkIHByb2JhYmx5IGJlIHJlZmVyZW5jZXMuCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njk4OAotICAgIEhl
YXAqIG1faGVhcCB7IG51bGxwdHIgfTsKICAgICBTdWJzcGFjZSogbV9zdWJzcGFjZSB7IG51bGxw
dHIgfTsKICAgICBCbG9ja0RpcmVjdG9yeSogbV9uZXh0RGlyZWN0b3J5IHsgbnVsbHB0ciB9Owog
ICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3RvcnlJblN1YnNwYWNlIHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlC
aXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMjU1Njk0YWViOTRmY2I2NjQwOTY5NWYwNTEyZmRjOWEzYzY2MmFkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlC
aXRzLmgKQEAgLTAsMCArMSwyNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUg
PHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2RlZmluZSBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKG1hY3JvKSBc
CisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQg
aGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBz
ZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzLiAqLyBcCisgICAgbWFj
cm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFy
ZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8oY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIGFy
ZSBuZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBtb3JlIHRoYW4gbWluTWFya2Vk
QmxvY2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAorICAgIG1hY3JvKGRlc3RydWN0aWJsZSwgRGVz
dHJ1Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBtYXkgaGF2ZSBkZXN0cnVj
dG9ycyB0byBydW4uICovXAorICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxs
IGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxhc3QgR0MuICovXAorICAg
IG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNv
dWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKKyAgICBcCisgICAg
LyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKKyAgICBtYWNybyhtYXJr
aW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRo
YXQgYXJlIG5vdCBlbXB0eS4gKi8gXAorICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVkLCBNYXJraW5n
UmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJldGlyZWQuICovCisK
K2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRzUGVyU2VnbWVudCA9
IDMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2VnbWVudFNoaWZ0ID0gNTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4TWFzayA9ICgxVSA8PCBzZWdtZW50U2hp
ZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8IHNlZ21lbnRTaGlmdCkgPT0gYml0c1Bl
clNlZ21lbnQpOworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVChsb3dl
ckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSArIDEKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcyA9IDAgRk9SX0VBQ0hfQkxPQ0tfRElS
RUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQpOworI3VuZGVmIEJMT0NL
X0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVAorCisgICAgZW51bSBjbGFzcyBLaW5kIHsKKyNkZWZp
bmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2Fw
aXRhbEJpdE5hbWUpIFwKKyAgICAgICAgY2FwaXRhbEJpdE5hbWUsCisgICAgICAgIEZPUl9FQUNI
X0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9O
KQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTgorICAgIH07CisK
KyAgICBjbGFzcyBTZWdtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNlZ21lbnQoKSA9IGRl
ZmF1bHQ7CisgICAgICAgIHN0ZDo6YXJyYXk8dWludDMyX3QsIG51bWJlck9mQmxvY2tEaXJlY3Rv
cnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8S2luZCBraW5k
PgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHVzaW5nIFZpZXdU
eXBlID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzsKKworICAgICAgICBCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KCkgPSBkZWZhdWx0OworCisgICAgICAgIEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgU2VnbWVudCogc2VnbWVudHMsIHNpemVfdCBu
dW1CaXRzKQorICAgICAgICAgICAgOiBtX3NlZ21lbnRzKHNlZ21lbnRzKQorICAgICAgICAgICAg
LCBtX251bUJpdHMobnVtQml0cykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2l6
ZV90IG51bUJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9udW1C
aXRzOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgd29yZChzaXplX3QgaW5kZXgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IFdURjo6ZmFzdEJpdFZl
Y3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOworICAgICAgICB9
CisKKyAgICAgICAgdWludDMyX3QmIHdvcmQoc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1C
aXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21l
bnRzKVtpbmRleF0ubV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxTZWdtZW50
Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCld
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3Qg
bV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAg
dXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+PjsKKworICAgIHRlbXBsYXRl
PEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiBmaW5hbCA6
IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4geworICAgIHB1YmxpYzoK
KyAgICAgICAgZXhwbGljaXQgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYoQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPiB2aWV3KQorICAgICAgICAgICAgOiBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclZpZXc8a2luZD4odmlldykKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAgICAgICAgQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShjb25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90
aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVyLm51bUJpdHMoKSk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZp
ZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAgQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkgPSBvdGhlci51
bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVyLm51
bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAg
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkg
fD0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAgICAgcmV0dXJuICp0aGlz
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS5j
bGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgY2xhc3MgQml0UmVmZXJlbmNlIHsKKyAg
ICAgICAgcHVibGljOgorICAgICAgICAgICAgQml0UmVmZXJlbmNlKCkgeyB9CisKKyAgICAgICAg
ICAgIEJpdFJlZmVyZW5jZSh1aW50MzJfdCogd29yZCwgdWludDMyX3QgbWFzaykKKyAgICAgICAg
ICAgICAgICA6IG1fd29yZCh3b3JkKQorICAgICAgICAgICAgICAgICwgbV9tYXNrKG1hc2spCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAh
ISgqbV93b3JkICYgbV9tYXNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQml0UmVm
ZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2YWx1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICptX3dvcmQgfD0gbV9tYXNrOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKm1fd29yZCAmPSB+bV9t
YXNrOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICBwcml2YXRlOgorICAgICAgICAgICAgdWludDMyX3QqIG1fd29yZCB7IG51bGxwdHIgfTsK
KyAgICAgICAgICAgIHVpbnQzMl90IG1fbWFzayB7IDAgfTsKKyAgICAgICAgfTsKKworICAgICAg
ICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQoaW5kZXggPCBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMo
KSk7CisgICAgICAgICAgICByZXR1cm4gQml0UmVmZXJlbmNlKCZCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvclZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCkud29yZChpbmRleCA+PiA1KSwgMSA8PCAoaW5k
ZXggJiAzMSkpOworICAgICAgICB9CisKKyAgICAgICAgQml0UmVmZXJlbmNlIG9wZXJhdG9yW10o
c2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwor
ICAgICAgICB9CisgICAgfTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09S
Uyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBsb3dlckJpdE5hbWUoKVtpbmRleF07IFwKKyAgICB9IFwKKyAgICB2b2lkIHNldElzICMjIGNh
cGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgXAorICAgIHsgXAorICAgICAg
ICBsb3dlckJpdE5hbWUoKVtpbmRleF0gPSB2YWx1ZTsgXAorICAgIH0gXAorICAgIEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkg
Y29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JW
aWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwK
KyAgICB9IFwKKyAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0
TmFtZT4gbG93ZXJCaXROYW1lKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0
VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KG1fc2VnbWVudHMuZGF0YSgpLCBt
X251bUJpdHMpKTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJM
T0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRf
QUNDRVNTT1JTCisKKyAgICB1bnNpZ25lZCBudW1CaXRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1C
aXRzOyB9CisKKyAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBudW1CaXRzKQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgb2xkTnVtQml0cyA9IG1fbnVtQml0czsKKyAgICAgICAgbV9udW1CaXRzID0g
bnVtQml0czsKKyAgICAgICAgbV9zZWdtZW50cy5yZXNpemUoKG51bUJpdHMgKyBiaXRzUGVyU2Vn
bWVudCAtIDEpID4+IHNlZ21lbnRTaGlmdCk7CisgICAgICAgIGlmIChudW1CaXRzIDwgb2xkTnVt
Qml0cyAmJiBudW1CaXRzKSB7CisgICAgICAgICAgICAvLyBDbGVhciB0aGUgbGFzdCBzZWdtZW50
LgorICAgICAgICAgICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHMubGFzdCgpOworICAgICAg
ICAgICAgdWludDMyX3QgbWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMVVMTCA8PCAobnVt
Qml0cyAmIGluZGV4TWFzaykpIC0gMSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHM7ICsraW5kZXgpCisg
ICAgICAgICAgICAgICAgc2VnbWVudC5tX2RhdGFbaW5kZXhdICY9IG1hc2s7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgICAg
IGZ1bmMoaW5kZXgrKywgc2VnbWVudCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxT
ZWdtZW50PiBtX3NlZ21lbnRzOworICAgIHVuc2lnbmVkIG1fbnVtQml0cyB7IDAgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9C
bG9ja0RpcmVjdG9yeUlubGluZXMuaAppbmRleCA0MWNiYjQ5YzI2NDk1NjZkZWNkZjc4MjM4M2Jl
Yzg4Y2EyMmJhNTc1Li42ODRiMWE4ZDg2YzRjNzU5NzBkNDg2OGNmZDQwYmM2Nzk2YjAwYjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2soY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICBt
X2JpdHMubGl2ZSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7
CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0pOwpAQCAt
NDEsNyArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdAogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJs
b2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9tYXJraW5nTm90RW1wdHkuZm9y
RWFjaFNldEJpdCgKKyAgICBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkuZm9yRWFjaFNldEJpdCgK
ICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9j
a3NbaW5kZXhdKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCmluZGV4IDJjYjk1MmY2NzgyZTdkYjgwNTQ3NzE1MzlkNTll
ZGI5YTg5NDEyYmMuLmU0ZGM2MjM2OGFhNDgyYzk5Njk2NmQ0OGJhMzhjNzQxMDUyMzJlMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvY2Fs
QWxsb2NhdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIApAQCAtNzksNyArODAsNyBA
QCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6
ZSkKICAgICBpZiAoZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIEJsb2NrRGlyZWN0
b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAiLCBtX25hbWUsICIsICIsIGF0dHJpYnV0ZXMoKSwgIiwg
Iiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGly
ZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3Nw
YWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rv
cnk+IHVuaXF1ZURpcmVjdG9yeSA9IG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KHNpemVDbGFz
cyk7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQo
KTsKICAgICBtX2RpcmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwog
ICAgIApAQCAtMTA1LDcgKzEwNiw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxv
Y2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgIH0KICAgICAKICAgICBkaXJlY3RvcnktPnNl
dE5leHREaXJlY3RvcnlJblN1YnNwYWNlKG1fZmlyc3REaXJlY3RvcnkpOwotICAgIG1fYWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBtX2Fs
aWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KG1fc3BhY2UuaGVhcCgpLCBk
aXJlY3RvcnkpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgbV9maXJzdERpcmVj
dG9yeSA9IGRpcmVjdG9yeTsKICAgICByZXR1cm4gYWxsb2NhdG9yOwpAQCAtMTI3LDcgKzEyOCw3
IEBAIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyhWTSYgdm0sIHNpemVf
dCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCoKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwog
ICAgIAogICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHNpemUsIEFs
bG9jYXRvckZvck1vZGU6OkVuc3VyZUFsbG9jYXRvcikpCi0gICAgICAgIHJldHVybiBhbGxvY2F0
b3IuYWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOworICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVy
cmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAKICAg
ICBpZiAoc2l6ZSA8PSBPcHRpb25zOjpwcmVjaXNlQWxsb2NhdGlvbkN1dG9mZigpCiAgICAgICAg
ICYmIHNpemUgPD0gTWFya2VkU3BhY2U6OmxhcmdlQ3V0b2ZmKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaAppbmRleCBlYWNl
MmE2ZjVjODc3OWFmZGYwNjE2MGEzODE3OGJjYzk5MzIyZjQwLi44NzFkZjJiMjc4OGQzYWVhMTdj
YWIzZDljMmFmNWM2NDZhNTNhY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKQEAgLTM2LDcgKzM2LDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZt
LCBzaXplX3Qgc2l6ZSwgR0MKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBlY3RE
b2VzR0MoKSk7CiAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQotICAg
ICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1v
ZGUpOworICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFs
Q29udGV4dCwgZmFpbHVyZU1vZGUpOwogICAgIHJldHVybiBhbGxvY2F0ZVNsb3codm0sIHNpemUs
IGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGFhNjJlMTFmZDQ0ZjZhYmNiYmJmNDI1Yjg2ZmRm
MTExODBhODQ3OWMuLjgwYTljZWI2YTM3OTZlOTNlNDZlMzc0MTdjOTlmMmViNjhmMGE0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0Ojpw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgYXV0byBiaXRzID0gbV9kaXJlY3RvcnkubV9t
YXJraW5nTm90RW1wdHkgJiBtX3NldC5tX2Jsb2Nrc1dpdGhCaXRzOworICAgICAgICAgICAgYXV0
byBiaXRzID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9zZXQubV9i
bG9ja3NXaXRoQml0czsKICAgICAgICAgICAgIG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRl
eCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nr
cy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggZmM4MTY5Mjg3ZjA1
NjZiZWViODlkMTk4NDcxOTExYTRhNzU5YzRlMS4uZGI3ZThhY2I1NjFiMWQyMmQ0NzYxNjVjYmM0
MDhiYzM4ZjY1NmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0SW5saW5lcy5oCkBAIC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2
b2lkIElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAg
ICAgQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSA9IG1fc3Vic3BhY2UubV9kaXJlY3Rvcnk7Ci0g
ICAgKGRpcmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0eSAmIG1fYmxvY2tzV2l0aEJpdHMpLmZvckVh
Y2hTZXRCaXQoCisgICAgKGRpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX2Js
b2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBibG9ja0lu
ZGV4KSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9y
eS5tX2Jsb2Nrc1tibG9ja0luZGV4XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwCmluZGV4IDQ1M2U2MDIzM2Q2MTFkNDdjMzE3YmI3M2RjYjliMjY2ZTkwOTZj
ZTQuLmQxY2Y2MWYwNzcyNWI1YzgzOGFiNDZmNmM3YjZjNzRmYTU1MjgyYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKQEAgLTMyLDE3ICszMiwxOCBAQAog
I2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSXNvU3Vic3BhY2VJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBJc29TdWJzcGFjZTo6SXNv
U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxs
VHlwZSwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscykKICAgICA6
IFN1YnNwYWNlKG5hbWUsIGhlYXApCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZGlyZWN0
b3J5KCZoZWFwLCBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXpl
PihzaXplKSkKKyAgICAsIG1fZGlyZWN0b3J5KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJr
ZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJl
Y3RvcnkpCiAgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxs
Q291bnQobnVtYmVyT2ZMb3dlclRpZXJDZWxscykKIHsKKyAgICBtX3JlbWFpbmluZ0xvd2VyVGll
ckNlbGxDb3VudCA9IG51bWJlck9mTG93ZXJUaWVyQ2VsbHM7CisgICAgQVNTRVJUKFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXpl
KCkpOwogICAgIEFTU0VSVChudW1iZXJPZkxvd2VyVGllckNlbGxzIDw9IE1hcmtlZEJsb2NrOjpt
YXhOdW1iZXJPZkxvd2VyVGllckNlbGxzKTsKICAgICBtX2lzSXNvU3Vic3BhY2UgPSB0cnVlOwog
ICAgIGluaXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
Z2V0KCkpOwpAQCAtNTAsNyArNTEsNyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmlu
ZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgcwogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zcGFjZS5kaXJlY3RvcnlMb2NrKCkpOwogICAgIG1fZGly
ZWN0b3J5LnNldFN1YnNwYWNlKHRoaXMpOwogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3Rvcnko
bG9ja2VyLCAmbV9kaXJlY3RvcnkpOwotICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVn
aXN0ZXJEaXJlY3RvcnkoJm1fZGlyZWN0b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0
b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KGhlYXAsICZtX2RpcmVjdG9yeSk7CiAgICAgbV9maXJzdERp
cmVjdG9yeSA9ICZtX2RpcmVjdG9yeTsKIH0KIApAQCAtMTExLDggKzExMiw3IEBAIHZvaWQqIElz
b1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIoKQogICAgICAgICByZXR1cm4gcmV2
aXZlKGFsbG9jYXRpb24pOwogICAgIH0KICAgICBpZiAobV9yZW1haW5pbmdMb3dlclRpZXJDZWxs
Q291bnQpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
TWFya2VkU3BhY2U6OnNpemVTdGVwPihtX3NpemUpOwotICAgICAgICBQcmVjaXNlQWxsb2NhdGlv
biogYWxsb2NhdGlvbiA9IFByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIoKm1f
c3BhY2UuaGVhcCgpLCBzaXplLCB0aGlzLCAtLW1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50
KTsKKyAgICAgICAgUHJlY2lzZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBQcmVjaXNlQWxsb2Nh
dGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKG1fc3BhY2UuaGVhcCgpLCBjZWxsU2l6ZSgpLCB0aGlz
LCAtLW1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KTsKICAgICAgICAgcmV0dXJuIHJldml2
ZShhbGxvY2F0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAppbmRleCBjYTc3N2QwOGFmMWRhNWUwMDk1YzI4ODlj
MTI0NGY0ZGU2Y2NhNTYzLi5hNTE0M2JkYWVlY2IzYjljNDJkNThjZGFlYjVmMjRiMzEzN2QwNWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgSXNvU3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewogICAgIEpTX0VYUE9S
VF9QUklWQVRFIElzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEhlYXBDZWxsVHlwZSos
IHNpemVfdCBzaXplLCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIH5Jc29TdWJzcGFjZSgpOwogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KKyAgICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2RpcmVj
dG9yeS5jZWxsU2l6ZSgpOyB9CiAKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yKHNpemVfdCwg
QWxsb2NhdG9yRm9yTW9kZSkgb3ZlcnJpZGU7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKTsKQEAgLTYzLDE4ICs2MywxNiBAQCBj
bGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiAgICAgdm9pZCBkaWRSZW1vdmVC
bG9jayhzaXplX3QgYmxvY2tJbmRleCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRCZWdpblN3ZWVw
aW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgCi0gICAg
c2l6ZV90IG1fc2l6ZTsKICAgICBCbG9ja0RpcmVjdG9yeSBtX2RpcmVjdG9yeTsKICAgICBMb2Nh
bEFsbG9jYXRvciBtX2xvY2FsQWxsb2NhdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yPiBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiAgICAgU2Vu
dGluZWxMaW5rZWRMaXN0PFByZWNpc2VBbGxvY2F0aW9uLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8
UHJlY2lzZUFsbG9jYXRpb24+PiBtX2xvd2VyVGllckZyZWVMaXN0OwogICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxJc29DZWxsU2V0LCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4+IG1f
Y2VsbFNldHM7Ci0gICAgdWludDhfdCBtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCB7IDAg
fTsKIH07CiAKIEFMV0FZU19JTkxJTkUgQWxsb2NhdG9yIElzb1N1YnNwYWNlOjphbGxvY2F0b3JG
b3JOb25WaXJ0dWFsKHNpemVfdCBzaXplLCBBbGxvY2F0b3JGb3JNb2RlKQogewotICAgIFJFTEVB
U0VfQVNTRVJUKHNpemUgPT0gdGhpcy0+c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxs
U2l6ZSgpKTsKICAgICByZXR1cm4gQWxsb2NhdG9yKCZtX2xvY2FsQWxsb2NhdG9yKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAppbmRl
eCAwNTE4YTdmZTA2MmQ2MDkxNjlkN2JjM2Y3NTNjNTg0ZGM0ZWVjZjcwLi40NjYwZTc3ODNhYTY3
MmVjOGEyOWY0ZjRmMzNjMjMyY2I0NmRmNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5v
blZpcnR1YWwoVk0mLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29u
dGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQorQUxXQVlTX0lOTElORSB2
b2lkKiBJc29TdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUs
IEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSBmYWlsdXJlTW9kZSkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IHRoaXMtPnNpemUo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJs
b2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7CiAgICAgQWxsb2NhdG9yIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6TXVz
dEFscmVhZHlIYXZlQWxsb2NhdG9yKTsKLSAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3IuYWxs
b2NhdGUoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgdm9pZCogcmVzdWx0ID0g
YWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAKaW5kZXggYjllMTg1MDkwNDJlNzAxNzA3YjY3NmU4ODIx
YjBjNDFhZjVkOGQ4Mi4uYjJmNmJiZDliOTQ3OGMyYTUxYzNmMTM4MTg3MmQxYTZkY2ZiNjZkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNv
U3Vic3BhY2UgOiBwdWJsaWMgSXNvU3Vic3BhY2UgewogICAgIH5BdXRvcmVtb3ZpbmdJc29TdWJz
cGFjZSgpCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGVyVk0ubV9s
b2NrKTsKLSAgICAgICAgbV9wZXJWTS5tX3N1YnNwYWNlUGVyVk0ucmVtb3ZlKCZzcGFjZSgpLmhl
YXAoKS0+dm0oKSk7CisgICAgICAgIG1fcGVyVk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZSgmc3Bh
Y2UoKS5oZWFwKCkudm0oKSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCmluZGV4IDUzZTA1MDhhYjJmZjAxY2Y0ZDQ5
YTdmZjA3MDE3NzFmMGYwYWM0YWQuLmY1NTU3MWM4NmNmYjJlMGFlNGNiZDFlMGFlMjdmZGI4NTBi
ZDBmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2Nh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5j
cHAKQEAgLTExMCwxMiArMTEwLDExIEBAIHZvaWQgTG9jYWxBbGxvY2F0b3I6OnN0b3BBbGxvY2F0
aW5nRm9yR29vZCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFs
bG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQordm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9j
YXRlU2xvd0Nhc2UoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4
dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBIZWFwJiBoZWFwID0gKm1fZGly
ZWN0b3J5LT5tX2hlYXA7CiAgICAgQVNTRVJUKGhlYXAudm0oKS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKLSAgICBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKGRlZmVycmFsQ29u
dGV4dCk7CisgICAgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChoZWFwLCBkZWZlcnJhbENvbnRl
eHQpOwogCiAgICAgQVNTRVJUKCFtX2RpcmVjdG9yeS0+bWFya2VkU3BhY2UoKS5pc0l0ZXJhdGlu
ZygpKTsKICAgICBoZWFwLmRpZEFsbG9jYXRlKG1fZnJlZUxpc3Qub3JpZ2luYWxTaXplKCkpOwpA
QCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNl
KEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jCiAgICAgLy8gR29vZnkg
Y29ybmVyIGNhc2U6IHRoZSBHQyBjYWxsZWQgYSBjYWxsYmFjayBhbmQgbm93IHRoaXMgZGlyZWN0
b3J5IGhhcyBhIGN1cnJlbnRCbG9jay4gVGhpcyBvbmx5CiAgICAgLy8gaGFwcGVucyB3aGVuIHJ1
bm5pbmcgV2ViS2l0IHRlc3RzLCB3aGljaCBpbmplY3QgYSBjYWxsYmFjayBpbnRvIHRoZSBHQydz
IGZpbmFsaXphdGlvbi4KICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50QmxvY2spKQotICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgICAg
IHJldHVybiBhbGxvY2F0ZShoZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAg
ICAKICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAg
ICAgCkBAIC0xNDIsNyArMTQxLDcgQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xv
d0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2MKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrID0gbV9kaXJlY3RvcnktPnRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jayA9IG1fZGlyZWN0b3J5LT50cnlBbGxvY2F0ZUJsb2NrKGhlYXApOwog
ICAgIGlmICghYmxvY2spIHsKICAgICAgICAgaWYgKGZhaWx1cmVNb2RlID09IEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6QXNzZXJ0KQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTI0OSwxOCArMjQ4LDE4IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjp0cnlBbGxv
Y2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZl
cnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKK3ZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVz
dENvbGxlY3Rpb25zSWZOZWVkZWQoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVy
cmFsQ29udGV4dCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdD
cygpKQogICAgICAgICByZXR1cm47CiAKICAgICBzdGF0aWMgdW5zaWduZWQgYWxsb2NhdGlvbkNv
dW50ID0gMDsKICAgICBpZiAoIWFsbG9jYXRpb25Db3VudCkgewotICAgICAgICBpZiAoIW1fZGly
ZWN0b3J5LT5tX2hlYXAtPmlzRGVmZXJyZWQoKSkgeworICAgICAgICBpZiAoIWhlYXAuaXNEZWZl
cnJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoZGVmZXJyYWxDb250ZXh0KQogICAgICAgICAgICAg
ICAgIGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRHQyA9IHRydWU7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9kaXJlY3RvcnktPm1faGVhcC0+Y29sbGVjdE5vdyhTeW5jLCBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpOworICAgICAgICAgICAgICAgIGhlYXAuY29sbGVjdE5vdyhT
eW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgr
K2FsbG9jYXRpb25Db3VudCA+PSBPcHRpb25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oCmluZGV4IDQzNzI3
M2YzNjY4MGU0YTgwOTY4N2NkZjhjOGU0YThjZjRlY2MxYWQuLjliNjUxYjA3MDM3NjgxNGYyYTM5
N2JiMmExODZlZDcwMDA5OWQzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2FsQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9j
YWxBbGxvY2F0b3IuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
QmxvY2tEaXJlY3Rvcnk7CiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiAK
IGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2Fs
QWxsb2NhdG9yPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxBbGxvY2F0b3IpOwpA
QCAtNDIsNyArNDMsNyBAQCBjbGFzcyBMb2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRvcj4gewogICAgIExvY2FsQWxsb2NhdG9yKEJsb2NrRGly
ZWN0b3J5Kik7CiAgICAgfkxvY2FsQWxsb2NhdG9yKCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2Nh
dGUoR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOworICAgIHZvaWQq
IGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSk7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyZWVM
aXN0LmNlbGxTaXplKCk7IH0KIApAQCAtNjAsMTIgKzYxLDEyIEBAIGNsYXNzIExvY2FsQWxsb2Nh
dG9yIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAg
ZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0b3J5OwogICAgIAogICAgIHZvaWQgcmVzZXQoKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250
ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCos
IEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsK
ICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5
QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgdm9pZCogYWxsb2NhdGVJbihN
YXJrZWRCbG9jazo6SGFuZGxlKik7Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRleHQqKTsKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsK
IAogICAgIEJsb2NrRGlyZWN0b3J5KiBtX2RpcmVjdG9yeTsKICAgICBGcmVlTGlzdCBtX2ZyZWVM
aXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0
b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklu
bGluZXMuaAppbmRleCAwMGQ1NTc0NzQyNjlkNTcyNDI3ZmQ3ZDk1NzlhMWYwY2E0YWQ1YWYxLi5j
M2M4Njk1ZTg1ODhjNzkwMzUwOGVhZTlmNTFhMmY3OTlmOTgzZjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaApAQCAtMzAsMTQg
KzMwLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIExvY2Fs
QWxsb2NhdG9yOjphbGxvY2F0ZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIExv
Y2FsQWxsb2NhdG9yOjphbGxvY2F0ZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2RpcmVjdG9y
eS0+aGVhcCgpLT5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAu
ZXhwZWN0RG9lc0dDKCkpOwogICAgIHJldHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlKAogICAgICAg
ICBbJl0gKCkgLT4gSGVhcENlbGwqIHsKLSAgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSht
X2RpcmVjdG9yeS0+aGVhcCgpLT52bSgpKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xvd0Nhc2UoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9k
ZSkpOworICAgICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKGhlYXAudm0oKSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SGVhcENlbGwqPihhbGxvY2F0ZVNsb3dDYXNlKGhlYXAs
IGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCBjNmUxZjZjZGY1MDI3
ZmUxNDBmNjQ0ZWNhNDkxOTBmNDg0OGIyNWEzLi40MjUwNGEwODZhZWRjMjYwOGYwNDRiNjc5ZWEz
ZmYzOTViYmRhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwCkBAIC0zNzcsOCArMzc3LDggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3Rh
dGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgZGlyZWN0
b3J5KCktPmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgaG9sZExvY2soZGlyZWN0
b3J5KCktPmJpdHZlY3RvckxvY2soKSksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgYml0
dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
IG5hbWUsICI6IiwgYml0dmVjdG9yW2luZGV4KCldID8gIllFUyIgOiAibm8iKTsKKyAgICAgICAg
WyZdKGF1dG8gdmVjdG9yUmVmLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIG5hbWUsICI6IiwgdmVjdG9yUmVmW2luZGV4KCldID8gIllFUyIgOiAibm8i
KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAppbmRleCA5NzAzZTM1NzFlM2Y0Y2RmOGIyMTI4MGMzOTEwNzE5MTNlMzVjOGE4Li5k
NDA4ZDZlZWYxYzM3MjExMDg3ZWY2NmRmNmNhMmQyMmZmOTMxZGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2Vk
QmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTk1LDggKzE5Niw4IEBA
IHZvaWQgTWFya2VkU3BhY2U6OmluaXRpYWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpCiB9CiAK
IE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQotICAgIDogbV9oZWFwKGhlYXAp
CiB7CisgICAgQVNTRVJUX1VOVVNFRChoZWFwLCBoZWFwID09ICZ0aGlzLT5oZWFwKCkpOwogICAg
IGluaXRpYWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpOwogfQogCkBAIC0yMzQsNyArMjM1LDcg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogCiB2b2lkIE1hcmtl
ZFNwYWNlOjpzd2VlcEJsb2NrcygpCiB7Ci0gICAgbV9oZWFwLT5zd2VlcGVyKCkuc3RvcFN3ZWVw
aW5nKCk7CisgICAgaGVhcCgpLnN3ZWVwZXIoKS5zdG9wU3dlZXBpbmcoKTsKICAgICBmb3JFYWNo
RGlyZWN0b3J5KAogICAgICAgICBbJl0gKEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkpIC0+IEl0
ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICBkaXJlY3Rvcnkuc3dlZXAoKTsKQEAgLTI3MCwx
MyArMjcxLDEzIEBAIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCkK
IAogdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIEFTU0VS
VCghVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkgfHwgbV9oZWFwLT53b3JsZElzU3RvcHBlZCgpKTsK
KyAgICBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAoKS53b3JsZElzU3Rv
cHBlZCgpKTsKICAgICBmb3IgKFN1YnNwYWNlKiBzdWJzcGFjZSA6IG1fc3Vic3BhY2VzKQogICAg
ICAgICBzdWJzcGFjZS0+cHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIG1fYWN0aXZlV2Vh
a1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0cyk7CiAgICAgCi0gICAgaWYgKG1faGVh
cC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQorICAgIGlmICho
ZWFwKCkuY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAg
ICBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fcHJlY2lzZUFs
bG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fcHJlY2lzZUFsbG9j
YXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gMDsKQEAgLTI5OCw3ICsyOTksNyBAQCB2b2lk
IE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIAog
ICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1f
aGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQorICAgIGlm
IChoZWFwKCkuY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAg
ICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBAIC0zMTAsNyArMzEx
LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKICAgICAKICAgICBtX25ld0Fj
dGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxl
Y3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKKyAgICBpZiAoaGVhcCgpLmNv
bGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3Rp
dmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApAQCAtMzU2LDcgKzM1Nyw3IEBAIHZvaWQg
TWFya2VkU3BhY2U6OnByZXBhcmVGb3JDb25zZXJ2YXRpdmVTY2FuKCkKIAogdm9pZCBNYXJrZWRT
cGFjZTo6cHJlcGFyZUZvck1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25T
Y29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rp
b25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikKICAgICAgICAgbV9wcmVjaXNlQWxs
b2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9IG1fcHJlY2lzZUFsbG9jYXRpb25zTnVy
c2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zT2Zmc2V0
Rm9yVGhpc0NvbGxlY3Rpb24gPSAwOwpAQCAtNDE2LDcgKzQxNyw3IEBAIHZvaWQgTWFya2VkU3Bh
Y2U6OnNocmluaygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAg
aWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7
CisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpIHsKICAgICAgICAgZm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAoQmxvY2tE
aXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAg
ICBkaXJlY3RvcnkuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKQEAgLTU1MSw3ICs1
NTIsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2spCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCiB7
Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpF
ZGVuKSB7CisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2Nv
cGU6OkVkZW4pIHsKICAgICAgICAgZm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAo
QmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAg
ICAgICAgICBkaXJlY3Rvcnkuc25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCmluZGV4IDAwNjgwNWI0NDdiZTFi
NTIxYmNhNDQ0YzFkY2VhMWVmNzQyNzg0ODguLmFkMzY2MjJmMWI1N2RkNjZiY2NmM2Q5YWE0ZmYy
MTg2MGMzMTI3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaApA
QCAtOTUsNyArOTUsNyBAQCBjbGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgTWFya2VkU3BhY2UoSGVh
cCopOwogICAgIH5NYXJrZWRTcGFjZSgpOwogICAgIAotICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7
IHJldHVybiBtX2hlYXA7IH0KKyAgICBIZWFwJiBoZWFwKCkgY29uc3Q7CiAgICAgCiAgICAgdm9p
ZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOyAvLyBNdXN0IGNhbGwgc3RvcEFsbG9jYXRpbmdGb3JH
b29kIGZpcnN0LgogICAgIHZvaWQgZnJlZU1lbW9yeSgpOwpAQCAtMjEzLDcgKzIxMyw2IEBAIGNs
YXNzIE1hcmtlZFNwYWNlIHsKICAgICBQcmVjaXNlQWxsb2NhdGlvbioqIG1fcHJlY2lzZUFsbG9j
YXRpb25zRm9yVGhpc0NvbGxlY3Rpb25CZWdpbiB7IG51bGxwdHIgfTsKICAgICBQcmVjaXNlQWxs
b2NhdGlvbioqIG1fcHJlY2lzZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQgeyBudWxs
cHRyIH07CiAKLSAgICBIZWFwKiBtX2hlYXA7CiAgICAgc2l6ZV90IG1fY2FwYWNpdHkgeyAwIH07
CiAgICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAg
ICAgSGVhcFZlcnNpb24gbV9uZXdseUFsbG9jYXRlZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaApp
bmRleCBkZjg1MzFkOTdmYzY5NWEyMmNmMjdkMjVhMWE0ODkwZjBiZTM1YWY1Li5lYTg1MTQ2NDkz
MzAyOGM1MDkwOTk2ZjJlNjUxNDc3YTE0MmUzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaApAQCAtMzAsNiArMzAsMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK0FMV0FZU19JTkxJTkUgSGVhcCYgTWFya2VkU3BhY2U6OmhlYXAoKSBj
b25zdAoreworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PEhlYXAqPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih0aGlzKSAtIE9CSkVDVF9PRkZTRVRPRihIZWFwLCBtX29iamVjdFNwYWNlKSk7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpm
b3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKIHsKICAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5jcHAKaW5kZXggOTRjMmZmNGM2YjJhY2E2YzE5ZGMxNThjYjRmOGU2MzczNGQw
ZTNhNy4uYWI5OWUyZGE2YzVjM2IzNTEzNmIxN2FlNDRlNTFiYTc4YTk4OTczMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJN
YXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJQYXJhbGxlbFNvdXJjZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVj
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCkBAIC00OSw3ICs1MCw3
IEBAIHZvaWQgU3Vic3BhY2U6OmluaXRpYWxpemUoSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUs
IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsCiAgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9y
ID0gYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKICAgICBtX2RpcmVjdG9yeUZvckVtcHR5QWxsb2Nh
dGlvbiA9IG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+Zmlyc3REaXJlY3RvcnkoKTsKIAotICAg
IEhlYXAmIGhlYXAgPSAqbV9zcGFjZS5oZWFwKCk7CisgICAgSGVhcCYgaGVhcCA9IG1fc3BhY2Uu
aGVhcCgpOwogICAgIGhlYXAub2JqZWN0U3BhY2UoKS5tX3N1YnNwYWNlcy5hcHBlbmQodGhpcyk7
CiAgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlclN1YnNwYWNlKHRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYjUwODExNDRjZDRjMGIx
MjkxY2QyYzM1M2MyMmM2ZmM0N2MxZmZhYi4uMzRlYTM0MTE4MzFiZTA4N2UzZTUzZWJlNjA3YjRh
OGU2MDNkZGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC0xMTks
NiArMTE5LDggQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIENTdHJpbmcgbV9uYW1lOwogCiAgICAg
Ym9vbCBtX2lzSXNvU3Vic3BhY2UgeyBmYWxzZSB9OworcHJvdGVjdGVkOgorICAgIHVpbnQ4X3Qg
bV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCBhOGVkNmI4Mjg5MDBmZTAyMTNiZGVkOWM2
Mzc1Yzk3YjBhMzZjODU5Li40OTRlNjQ4OWZlNGExZGIyMmRiMjc0NjdlNjkxNzJhYTM3MjAyZGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC00MjEsNiArNDIxLDkgQEAgY2xhc3MgRmFzdEJp
dFZlY3RvckltcGwgewogICAgIH0KICAgICAKICAgICB0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUg
d29yZFZpZXcoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzLnZpZXcoKTsgfQorCisgICAgV29yZHMm
IHVuc2FmZVdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQorICAgIGNvbnN0IFdvcmRzJiB1bnNh
ZmVXb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHM7IH0KICAgICAKIHByaXZhdGU6CiAgICAg
Ly8gWW91J2QgdGhpbmsgdGhhdCB3ZSBjb3VsZCByZW1vdmUgdGhpcyBmcmllbmQgaWYgd2UgdXNl
ZCBwcm90ZWN0ZWQsIGJ1dCB5b3UnZCBiZSB3cm9uZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383518</attachid>
            <date>2019-11-13 16:49:36 -0800</date>
            <delta_ts>2019-11-13 16:56:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113164935.patch</filename>
            <type>text/plain</type>
            <size>61935</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li43NWM1OGY0ZGUwZmIxZWEx
ZGYxMzIxMWNjOGNiMzRjNTQ3YjQ0ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTUgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBh
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IGFwcGx5aW5nIElzb1N1YnNwYWNlIHRvIGFsbCBKU0NlbGxzLiBUaGlzIG1lYW5zIHRoYXQg
SXNvU3Vic3BhY2Ugc2hvdWxkIGJlIHNtYWxsIGVub3VnaCwKKyAgICAgICAgc28gdGhhdCB3ZSBj
YW4gaG9sZCBtYW55IElzb1N1YnNwYWNlcyB3aXRob3V0IGNvbnNpZGVyaW5nIG1lbW9yeSByZWdy
ZXNzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVjZSBzZXZlcmFsIHRo
aW5ncyB0byBzaHJpbmsgc2l6ZW9mKElzb1N1YnNwYWNlKSBmcm9tIDUyOCB0byAzODQuCisKKyAg
ICAgICAgMS4gQWRqdXN0aW5nIG1lbWJlcnMgdG8gcmVtb3ZlIHNvbWUgcGFkZGluZ3MuCisgICAg
ICAgIDIuIFJlbW92ZSBtX2hlYXAgZmllbGQgc2luY2UgdGhpcyBjYW4gYmUgZ290IGZyb20gdGhl
IGNhbGxlciBlYXNpbHkuCisgICAgICAgIDMuIE1ha2UgTWFya2VkU3BhY2U6OmhlYXAoKSBlZmZp
Y2llbnQ6IGp1c3QgZG9pbmcgcG9pbnRlciBhcml0aG1ldGljLgorICAgICAgICA0LiBJbnRyb2R1
Y2UgQmxvY2tEaXJlY3RvcnlCaXRzLCB3aGljaCByZXBhbGNlcyA5IEZhc3RCaXRWZWN0b3IgaW4g
QmxvY2tEaXJlY3RvcnkgdG8gdGhpcyBvbmUgY2xhc3MuCisgICAgICAgICAgIFNpbmNlIGFsbCBG
YXN0Qml0VmVjdG9yIGhhcyB0aGUgc2FtZSBzaXplLCB3ZSBzaG91bGQgbm90IGhhdmUgYSBzaXpl
IGZpZWxkIGZvciBlYWNoIEZhc3RCaXRWZWN0b3IuCisgICAgICAgICAgIFdlIHJldXNlIEZhc3RC
aXRWZWN0b3IncyBWaWV3IG1lY2hhbmlzbSB0byBrZWVwIHRoZSBzYW1lIGVyZ29ub21pY3Mgd2hp
bGUgbWFraW5nIEJsb2NrRGlyZWN0b3J5Qml0cworICAgICAgICAgICBtdWNoIHNtYWxsZXIuIFdl
IHB1dCA5IHVpbnQzMl90IGFzIFNlZ21lbnQsIGFuZCBtYW5hZ2UgVmVjdG9yPFNlZ21lbnQ+IGlu
IHRoaXMgZGF0YSBzdHJ1Y3R1cmUuIFNpbmNlCisgICAgICAgICAgIHdlIHRvdWNoIHNldmVyYWwg
Yml0cyBhdCB0aGUgc2FtZSB0aW1lIGZvciB0aGUgc2FtZSBibG9jay1pbmRleCwgdGhpcyBkYXRh
IHN0cnVjdHVyZSBpcyBjb21wYWN0IGFuZAorICAgICAgICAgICBlZmZpY2llbnQuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGhlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0
b3J5KToKKyAgICAgICAgKiBoZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaDoKKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpBbGxvY2F0b3I6OmFsbG9jYXRlIGNvbnN0KToKKyAgICAgICAgKiBoZWFw
L0Jsb2NrRGlyZWN0b3J5LmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OkJsb2Nr
RGlyZWN0b3J5KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2Nr
VG9TdGVhbCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxv
Y2F0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2sp
OgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2spOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6cmVtb3ZlQmxvY2spOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVj
dG9yeTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6YmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpCbG9ja0Rp
cmVjdG9yeTo6ZW5kTWFya2luZyk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpzbmFw
c2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0
b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJs
b2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OnN3ZWVwKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNocmluayk6Cisg
ICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrU291cmNlKToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKToKKyAgICAgICAgKiBoZWFwL0Jsb2Nr
RGlyZWN0b3J5Lmg6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpjZWxsS2luZCBjb25z
dCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQml0VmVjdG9yKToKKyAg
ICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSk6Cisg
ICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpoZWFwKTogRGVsZXRlZC4KKyAgICAgICAgKiBo
ZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvcldvcmRWaWV3KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpudW1CaXRzIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
Ojp3b3JkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp3b3JkKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3OjpjbGVhckFsbCk6Cisg
ICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JX
b3JkVmlldzo6dmlldyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6
bnVtQml0cyBjb25zdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Qml0czo6cmVzaXpl
KToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpmb3JFYWNoU2VnbWVudCk6Cisg
ICAgICAgICogaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5
Ojpmb3JFYWNoTm90RW1wdHlCbG9jayk6CisgICAgICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyk6
CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyk6CisgICAg
ICAgICogaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb21w
bGV0ZVN1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgorICAgICAgICAqIGhlYXAvSXNvQ2Vs
bFNldC5jcHA6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJr
ZWRCbG9ja1NvdXJjZSk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2VkQ2VsbCk6CisgICAgICAgICogaGVh
cC9Jc29TdWJzcGFjZS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjpJc29TdWJzcGFj
ZSk6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIp
OgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2UuaDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3Bh
Y2U6OmNlbGxTaXplKToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5v
blZpcnR1YWwpOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6c2l6ZSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2VJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOgor
ICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHA6CisgICAgICAgIChKU0M6Oklzb1N1
YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlOjp+QXV0b3JlbW92aW5nSXNvU3Vi
c3BhY2UpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxvY2Fs
QWxsb2NhdG9yOjpkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKToKKyAgICAgICAgKiBoZWFwL0xv
Y2FsQWxsb2NhdG9yLmg6CisgICAgICAgICogaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKToKKyAgICAgICAgKiBoZWFw
L01hcmtlZEJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6ZHVt
cFN0YXRlKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnN3
ZWVwQmxvY2tzKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnByZXBhcmVGb3JBbGxvY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnZpc2l0V2Vha1NldHMpOgorICAgICAg
ICAoSlNDOjpNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKToKKyAgICAgICAgKEpTQzo6TWFya2Vk
U3BhY2U6OnByZXBhcmVGb3JNYXJraW5nKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmJl
Z2luTWFya2luZyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQp
OgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3Bh
Y2U6OmhlYXAgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2VJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpoZWFwIGNvbnN0KToKKyAgICAgICAg
KiBoZWFwL1N1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6U3Vic3BhY2U6OmluaXRpYWxpemUp
OgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuaDoKKwogMjAxOS0xMS0xMyAgUm9iaW4gTW9yaXNz
ZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAgICAgIFNwbGl0IEFyaXRoUHJvZmlsZSBp
bnRvIGEgVW5hcnkgYW5kIGEgQmluYXJ5IHZlcnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTVlNzk1MTVhMmJkMTliMzQz
NTBmYTY5ZGU5OTM4ZWZhNjhlM2UxYi4uZTFkNzhkM2RiMWZmNTA4ZDNjYzY5NWE2MTI2YTE1NWYw
YzZlMTI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0xMS0xMyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEJsb2NrRGlyZWN0b3J5J3MgYml0
cyBzaG91bGQgYmUgY29tcGFjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA0MTQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0
VmVjdG9ySW1wbDo6dW5zYWZlV29yZHMpOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDo6dW5zYWZlV29yZHMgY29uc3QpOgorCiAyMDE5LTExLTExICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBVVEMgb2Zmc2V0IGZvciBTYW1vYSBpcyBt
aXNjYWxjdWxhdGVkIHdoZW4gIUhBVkUoVElNRUdNKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IGRjZWIzZmMwOTkwNzJhYzM2NjE2ZTE2MzY5NjZiNTNiYjUzNzViYzIuLmI2
ZjBhZWQzMGUyNGQzYWY1ZTNkYWExZTkyNzI1ZTQyZWUxNDNlZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTU2OSw2ICs1NjksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
UFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGhlYXAvQWxsb2NhdG9ySW5saW5lcy5oCiAg
ICAgaGVhcC9BbGxvY2F0b3JGb3JNb2RlLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5LmgKKyAg
ICBoZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCiAgICAgaGVhcC9CbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaAogICAgIGhlYXAvQ2VsbEF0dHJpYnV0ZXMuaAogICAgIGhlYXAvQ2VsbENvbnRhaW5lci5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRkMjdkOTgxMDE0Mzc4OTQ0YTNhMTYy
ODc1YTg1NTMyYTkxNmNiZDYuLjM2M2JlZjQxODE4NTRmYzlmZTJlNThkMjkyY2EyNzg5Y2JiODgz
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODE3LDYgKzE4MTcsNyBAQAog
CQlFMzZDQzk0NzIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2Q0M5NDYyMDg2MzE0RjAw
NTFGRkQ2IC8qIFdhc21DcmVhdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODUwQjE1MjI2RUQ2NDEw
MDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NTBCMTQyMjZFRDYzRTAwOUFCRjlDIC8qIERGR01p
bmlmaWVkSURJbmxpbmVzLmggKi87IH07CisJCUUzODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBC
bG9ja0RpcmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzg5
M0ExRDIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4OTNB
MUMyMjAzQTdDNjAwRTc5QTc0IC8qIEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQu
aCAqLzsgfTsKIAkJRTM4RDk5OUMyMjFCNzhCQjAwRDUwNDc0IC8qIEpTTm9uRGVzdHJ1Y3RpYmxl
UHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OEQ5OTlBMjIxQjc4OUYwMEQ1MDQ3NCAvKiBKU05vbkRlc3RydWN0aWJsZVByb3h5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5MDA2MjEyMjA4
QkZDNDAwMTAxOUNGIC8qIFN1YnNwYWNlQWNjZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzkwMDYyMDIyMDhCRkMzMDAxMDE5Q0YgLyogU3Vic3Bh
Y2VBY2Nlc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDk0Nyw2ICs0OTQ4LDcgQEAKIAkJRTM4MEE3NkIxRENENzE5NTAwMEY4OUU2IC8qIE1h
Y3JvQXNzZW1ibGVySGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YWNyb0Fzc2VtYmxlckhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4
MEQ2NkIxRjE5MjQ5RDAwQTU5MDk1IC8qIEJ1aWx0aW5OYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdGluTmFtZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElu
bGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWluaWZpZWRJRElubGluZXMuaDsgcGF0aCA9IGRm
Zy9ERkdNaW5pZmllZElESW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
Mzg2NTJFMjIzN0NBMEM4MDBFMUQ1RUUgLyogQmxvY2tEaXJlY3RvcnlCaXRzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsb2NrRGlyZWN0b3J5Qml0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzg5M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9t
U3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOEQwNjBCMUY4RTgxNDEwMDY0OUNGMiAvKiBKU1NjcmlwdEZldGNo
UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NjcmlwdEZl
dGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhEMDYwQzFG
OEU4MTQxMDA2NDlDRjIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEZldGNoUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNjEwMiw2ICs2MTA0LDcgQEAKIAkJCQkwRkI0Njc3RTFGRERBNkU1
MDAzRkNCMDkgLyogQXRvbUluZGljZXMuaCAqLywKIAkJCQlDMkI5MTZDNDE0REEwNDBDMDBDQkFD
ODYgLyogQmxvY2tEaXJlY3RvcnkuY3BwICovLAogCQkJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4
NiAvKiBCbG9ja0RpcmVjdG9yeS5oICovLAorCQkJCUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAv
KiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLywKIAkJCQkwRjdERjE0NTFFMkJFRjY4MDA5NTk1MUIg
LyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggKi8sCiAJCQkJMEY5NjMwMzUxRDQxOTJDMzAwNTYw
OUQ5IC8qIENlbGxBdHRyaWJ1dGVzLmNwcCAqLywKIAkJCQkwRjk2MzAzNjFENDE5MkMzMDA1NjA5
RDkgLyogQ2VsbEF0dHJpYnV0ZXMuaCAqLywKQEAgLTkwMDgsNiArOTAxMSw3IEBACiAJCQkJODY5
NzZFNUUxRkEzRThCNjAwRTdDNEUxIC8qIEJpZ0ludFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY2NEIyNzIxQTc4NEJBRjAwNkU0RTY2IC8qIEJpbmFyeVN3aXRjaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzg2NTJFMzIzN0NBMEM5MDBFMUQ1RUUgLyogQmxvY2tEaXJl
Y3RvcnlCaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdERjE0NjFFMkJFRjZBMDA5NTk1MUIg
LyogQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFQzBF
MTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUI0
Njk0MzkxRjk3NDM5RTAwQ0NCM0Y5IC8qIEJvb2xlYW5Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFs
bG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmNwcAppbmRleCBlN2M5M2MyNjM2Nzk3NzBiMmQwMWRmMmRlMGJmZWNmZjg2ZjFjYzA4
Li5lYTMyZGYzYzBiY2MxZGUxNzZlY2ZhOGY2ZjI3ZTAyNGEwMjk1OGFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcApA
QCAtNDAsMTIgKzQwLDEyIEBAIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6On5BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKCkKIHsKIH0KIAotdm9pZCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yOjpyZWdpc3Rl
ckRpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5KQordm9pZCBBbGlnbmVkTWVtb3J5
QWxsb2NhdG9yOjpyZWdpc3RlckRpcmVjdG9yeShIZWFwJiBoZWFwLCBCbG9ja0RpcmVjdG9yeSog
ZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFkaXJlY3RvcnktPm5leHREaXJlY3Rv
cnlJbkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CiAgICAgCiAgICAgaWYgKG1fZGlyZWN0b3Jp
ZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkg
fHwgZGlyZWN0b3J5LT5oZWFwKCktPndvcmxkSXNTdG9wcGVkKCkpOworICAgICAgICBBU1NFUlRf
VU5VU0VEKGhlYXAsICFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBoZWFwLndvcmxkSXNTdG9w
cGVkKCkpOwogICAgICAgICBmb3IgKFN1YnNwYWNlKiBzdWJzcGFjZSA9IG1fc3Vic3BhY2VzLmZp
cnN0KCk7IHN1YnNwYWNlOyBzdWJzcGFjZSA9IHN1YnNwYWNlLT5uZXh0U3Vic3BhY2VJbkFsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IoKSkKICAgICAgICAgICAgIHN1YnNwYWNlLT5kaWRDcmVhdGVGaXJz
dERpcmVjdG9yeShkaXJlY3RvcnkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAppbmRleCA2NjQ0MmFkZjMxOGE1Njdk
ODJhY2MwZGY4MjIyZTM1Y2ExYjU0YWRjLi45NTY2OTYzNWQ4ZGQ1MTMxZDhlZmJhYmNhZWFlNmIw
ZmU3ZWQxYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVk
TWVtb3J5QWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgQmxvY2tEaXJlY3Rvcnk7CitjbGFzcyBIZWFwOwogY2xhc3MgU3Vic3BhY2U7CiAKIGNs
YXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IgewpAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBBbGln
bmVkTWVtb3J5QWxsb2NhdG9yIHsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChQcmludFN0
cmVhbSYpIGNvbnN0ID0gMDsKIAotICAgIHZvaWQgcmVnaXN0ZXJEaXJlY3RvcnkoQmxvY2tEaXJl
Y3RvcnkqKTsKKyAgICB2b2lkIHJlZ2lzdGVyRGlyZWN0b3J5KEhlYXAmLCBCbG9ja0RpcmVjdG9y
eSopOwogICAgIEJsb2NrRGlyZWN0b3J5KiBmaXJzdERpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlyZWN0b3JpZXMuZmlyc3QoKTsgfQogCiAgICAgdm9pZCByZWdpc3RlclN1YnNwYWNlKFN1
YnNwYWNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvci5oCmluZGV4IDIyOTE1
OGZjZTQyMGYxZTc5OTIwOWRjMTQ0OGI4MzIxODBhMmY3OWEuLjcyMzlkMjI5ZmNlOTJiYmEwNDU0
MDAzZTQ5ZDUyOGYwN2UzMjdjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRv
ci5oCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgR0NEZWZlcnJh
bENvbnRleHQ7CitjbGFzcyBIZWFwOwogY2xhc3MgTG9jYWxBbGxvY2F0b3I7CiAKIC8vIFRoaXMg
YWJzdHJhY3RzIGhvdyB3ZSByZWZlciB0byBMb2NhbEFsbG9jYXRvciBzbyB0aGF0IHdlIGNvdWxk
IGV2ZW50dWFsbHkgc3VwcG9ydCB0aHJlYWQtbG9jYWwKQEAgLTQ1LDcgKzQ2LDcgQEAgY2xhc3Mg
QWxsb2NhdG9yIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIHZvaWQqIGFsbG9jYXRlKEdDRGVm
ZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKSBjb25zdDsKKyAgICB2b2lkKiBh
bGxvY2F0ZShIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUp
IGNvbnN0OwogICAgIAogICAgIHVuc2lnbmVkIGNlbGxTaXplKCkgY29uc3Q7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggMTc1NzMy
NzNjNDk5ZmJjNThhN2I0ZmViZmY3YTBkOWJjOWRkNDJlZi4uNjk1YjA4OWQ4YzU3MWE3YmIwODBj
N2Q5YzFlYTZmYzg5ZDhlODMxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fs
bG9jYXRvcklubGluZXMuaApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
QUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlKEdDRGVmZXJyYWxDb250ZXh0
KiBjb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKK0FMV0FZU19JTkxJ
TkUgdm9pZCogQWxsb2NhdG9yOjphbGxvY2F0ZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4
dCogY29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIG1vZGUpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fbG9jYWxBbGxvY2F0b3ItPmFsbG9jYXRlKGNvbnRleHQsIG1vZGUpOworICAgIHJldHVy
biBtX2xvY2FsQWxsb2NhdG9yLT5hbGxvY2F0ZShoZWFwLCBjb250ZXh0LCBtb2RlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5jcHAKaW5kZXggN2VlZTRhODc0NmI2YmQxODg1MmE3YWI2Mjg3NGJiYWY1N2FiZTI4
OS4uMGNjNGI0NzliZjcxN2I0NjAwNDNiYmNmMDRjYjY2MDNjMjMwNjNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcApAQCAtMzgsOSArMzgsOCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5KEhl
YXAqIGhlYXAsIHNpemVfdCBjZWxsU2l6ZSkKK0Jsb2NrRGlyZWN0b3J5OjpCbG9ja0RpcmVjdG9y
eShzaXplX3QgY2VsbFNpemUpCiAgICAgOiBtX2NlbGxTaXplKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihjZWxsU2l6ZSkpCi0gICAgLCBtX2hlYXAoaGVhcCkKIHsKIH0KIApAQCAtNzYsNyArNzUsNyBA
QCBib29sIEJsb2NrRGlyZWN0b3J5Ojppc1BhZ2VkT3V0KE1vbm90b25pY1RpbWUgZGVhZGxpbmUp
CiAKIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kRW1wdHlCbG9ja1Rv
U3RlYWwoKQogewotICAgIG1fZW1wdHlDdXJzb3IgPSBtX2VtcHR5LmZpbmRCaXQobV9lbXB0eUN1
cnNvciwgdHJ1ZSk7CisgICAgbV9lbXB0eUN1cnNvciA9IG1fYml0cy5lbXB0eSgpLmZpbmRCaXQo
bV9lbXB0eUN1cnNvciwgdHJ1ZSk7CiAgICAgaWYgKG1fZW1wdHlDdXJzb3IgPj0gbV9ibG9ja3Mu
c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbV9ibG9ja3NbbV9l
bXB0eUN1cnNvcl07CkBAIC04NSw3ICs4NCw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2Nr
RGlyZWN0b3J5OjpmaW5kRW1wdHlCbG9ja1RvU3RlYWwoKQogTWFya2VkQmxvY2s6OkhhbmRsZSog
QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFsbG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImIGFs
bG9jYXRvcikKIHsKICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGFsbG9jYXRvci5tX2FsbG9jYXRp
b25DdXJzb3IgPSAobV9jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IHwgbV9lbXB0eSkuZmluZEJpdChh
bGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKKyAgICAgICAgYWxsb2NhdG9yLm1f
YWxsb2NhdGlvbkN1cnNvciA9IChtX2JpdHMuY2FuQWxsb2NhdGVCdXROb3RFbXB0eSgpIHwgbV9i
aXRzLmVtcHR5KCkpLmZpbmRCaXQoYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciwgdHJ1ZSk7
CiAgICAgICAgIGlmIChhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yID49IG1fYmxvY2tzLnNp
emUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKQEAgLTk2LDExICs5
NSwxMSBAQCBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrRm9y
QWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYgYWxsbwogICAgIH0KIH0KIAotTWFya2VkQmxvY2s6
OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2soKQorTWFya2VkQmxvY2s6
OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OnRyeUFsbG9jYXRlQmxvY2soSGVhcCYgaGVhcCkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CiAgICAgCi0g
ICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZSgq
bV9oZWFwLCBzdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOworICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGhhbmRsZSA9IE1hcmtlZEJsb2NrOjp0cnlDcmVhdGUoaGVhcCwgc3Vi
c3BhY2UoKS0+YWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICBpZiAoIWhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCkBAIC0xMTgsMjEgKzExNywxMiBAQCB2b2lkIEJs
b2NrRGlyZWN0b3J5OjphZGRCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKICAgICAg
ICAgc2l6ZV90IG9sZENhcGFjaXR5ID0gbV9ibG9ja3MuY2FwYWNpdHkoKTsKICAgICAgICAgbV9i
bG9ja3MuYXBwZW5kKGJsb2NrKTsKICAgICAgICAgaWYgKG1fYmxvY2tzLmNhcGFjaXR5KCkgIT0g
b2xkQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGZvckVhY2hCaXRWZWN0b3IoCi0gICAgICAgICAg
ICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICAgICAgICAgIFsmXSAoRmFzdEJpdFZl
Y3RvciYgdmVjdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQodmVjdG9y
LCB2ZWN0b3IubnVtQml0cygpID09IG9sZENhcGFjaXR5KTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKG1fYml0cy5udW1CaXRzKCkgPT0gb2xk
Q2FwYWNpdHkpOwogICAgICAgICAgICAgQVNTRVJUKG1fYmxvY2tzLmNhcGFjaXR5KCkgPiBvbGRD
YXBhY2l0eSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
Yml0dmVjdG9yTG9jayk7CiAgICAgICAgICAgICBzdWJzcGFjZSgpLT5kaWRSZXNpemVCaXRzKG1f
YmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAg
ICAgICAgICAgICBsb2NrZXIsCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2
ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgdmVjdG9yLnJlc2l6ZShtX2Jsb2Nrcy5jYXBh
Y2l0eSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIG1fYml0cy5yZXNpemUo
bV9ibG9ja3MuY2FwYWNpdHkoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBp
bmRleCA9IG1fZnJlZUJsb2NrSW5kaWNlcy50YWtlTGFzdCgpOwpAQCAtMTQyLDggKzEzMiw4IEBA
IHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2Nr
KQogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3IoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2Fy
eSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQodmVjdG9yLCAhdmVjdG9yW2luZGV4XSk7CisgICAgICAgIFsmXShhdXRvIHZl
Y3RvclJlZikgeworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3JSZWYsICF2ZWN0b3JS
ZWZbaW5kZXhdKTsKICAgICAgICAgfSk7CiAKICAgICAvLyBUaGlzIGlzIHRoZSBwb2ludCBhdCB3
aGljaCB0aGUgYmxvY2sgbGVhcm5zIG9mIGl0cyBjZWxsU2l6ZSgpIGFuZCBhdHRyaWJ1dGVzKCku
CkBAIC0xNjUsOCArMTU1LDggQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6cmVtb3ZlQmxvY2soTWFy
a2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigKICAg
ICAgICAgaG9sZExvY2sobV9iaXR2ZWN0b3JMb2NrKSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVj
dG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgIHZlY3RvcltibG9jay0+aW5kZXgoKV0gPSBmYWxz
ZTsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmKSB7CisgICAgICAgICAgICB2ZWN0b3JSZWZb
YmxvY2stPmluZGV4KCldID0gZmFsc2U7CiAgICAgICAgIH0pOwogICAgIAogICAgIGJsb2NrLT5k
aWRSZW1vdmVGcm9tRGlyZWN0b3J5KCk7CkBAIC0xOTIsNyArMTgyLDcgQEAgdm9pZCBCbG9ja0Rp
cmVjdG9yeTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogICAgIG1fdW5zd2VwdEN1cnNvciA9IDA7
CiAgICAgbV9lbXB0eUN1cnNvciA9IDA7CiAgICAgCi0gICAgbV9lZGVuLmNsZWFyQWxsKCk7Cisg
ICAgbV9iaXRzLmVkZW4oKS5jbGVhckFsbCgpOwogCiAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6
OnVzZUltbW9ydGFsT2JqZWN0cygpKSkgewogICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdv
cmsgYWdhaW4uCkBAIC0yMzcsMjAgKzIyNywyMCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpiZWdp
bk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpCiAgICAgLy8gTWFyayBiaXRzIGFyZSBzdGlja3kg
YW5kIHNvIGlzIG91ciBzdW1tYXJ5IG9mIG1hcmsgYml0cy4gV2Ugb25seSBjbGVhciB0aGVzZSBk
dXJpbmcgZnVsbAogICAgIC8vIGNvbGxlY3Rpb25zLCBzbyBpZiB5b3Ugc3Vydml2ZWQgdGhlIGxh
c3QgY29sbGVjdGlvbiB5b3Ugd2lsbCBzdXJ2aXZlIHRoZSBuZXh0IG9uZSBzbyBsb25nCiAgICAg
Ly8gYXMgdGhlIG5leHQgb25lIGlzIGVkZW4uCi0gICAgbV9tYXJraW5nTm90RW1wdHkuY2xlYXJB
bGwoKTsKLSAgICBtX21hcmtpbmdSZXRpcmVkLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtp
bmdOb3RFbXB0eSgpLmNsZWFyQWxsKCk7CisgICAgbV9iaXRzLm1hcmtpbmdSZXRpcmVkKCkuY2xl
YXJBbGwoKTsKIH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiB7Ci0gICAg
bV9hbGxvY2F0ZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMuYWxsb2NhdGVkKCkuY2xlYXJBbGwo
KTsKICAgICAKICAgICAvLyBJdCdzIHN1cnByaXNpbmcgYW5kIGZydXN0cmF0aW5nIHRvIGNvbXBy
ZWhlbmQsIGJ1dCB0aGUgZW5kLW9mLW1hcmtpbmcgZmxpcCBkb2VzIG5vdCBuZWVkIHRvCiAgICAg
Ly8ga25vdyB3aGF0IGtpbmQgb2YgY29sbGVjdGlvbiBpdCBpcy4gVGhhdCBrbm93bGVkZ2UgaXMg
YWxyZWFkeSBlbmNvZGVkIGluIHRoZSBtX21hcmtpbmdYWVoKICAgICAvLyB2ZWN0b3JzLgogICAg
IAotICAgIG1fZW1wdHkgPSBtX2xpdmUgJiB+bV9tYXJraW5nTm90RW1wdHk7Ci0gICAgbV9jYW5B
bGxvY2F0ZUJ1dE5vdEVtcHR5ID0gbV9saXZlICYgbV9tYXJraW5nTm90RW1wdHkgJiB+bV9tYXJr
aW5nUmV0aXJlZDsKKyAgICBtX2JpdHMuZW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiB+bV9iaXRz
Lm1hcmtpbmdOb3RFbXB0eSgpOworICAgIG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkg
PSBtX2JpdHMubGl2ZSgpICYgbV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgfm1fYml0cy5tYXJr
aW5nUmV0aXJlZCgpOwogCiAgICAgaWYgKG5lZWRzRGVzdHJ1Y3Rpb24oKSkgewogICAgICAgICAv
LyBUaGVyZSBhcmUgc29tZSBibG9ja3MgdGhhdCB3ZSBkaWRuJ3QgYWxsb2NhdGUgb3V0IG9mIGlu
IHRoZSBsYXN0IGN5Y2xlLCBidXQgd2Ugc3dlcHQgdGhlbS4gVGhpcwpAQCAtMjU4LDcgKzI0OCw3
IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmVuZE1hcmtpbmcoKQogICAgICAgICAvLyBkZXN0cnVj
dG9ycyBhZ2Fpbi4gVGhhdCdzIGZpbmUgYmVjYXVzZSBvZiB6YXBwaW5nLiBUaGUgb25seSB0aW1l
IHdoZW4gd2UgY2Fubm90IGZvcmdldCBpcyB3aGVuCiAgICAgICAgIC8vIHdlIGp1c3QgYWxsb2Nh
dGUgYSBibG9jayBvciB3aGVuIHdlIG1vdmUgYSBibG9jayBmcm9tIG9uZSBzaXplIGNsYXNzIHRv
IGFub3RoZXIuIFRoYXQgZG9lc24ndAogICAgICAgICAvLyBoYXBwZW4gaGVyZS4KLSAgICAgICAg
bV9kZXN0cnVjdGlibGUgPSBtX2xpdmU7CisgICAgICAgIG1fYml0cy5kZXN0cnVjdGlibGUoKSA9
IG1fYml0cy5saXZlKCk7CiAgICAgfQogICAgIAogICAgIGlmIChmYWxzZSkgewpAQCAtMjY5LDE3
ICsyNTksMTcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAKIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCkKIHsKLSAgICBt
X3Vuc3dlcHQgfD0gbV9lZGVuOworICAgIG1fYml0cy51bnN3ZXB0KCkgfD0gbV9iaXRzLmVkZW4o
KTsKIH0KIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRnVsbENvbGxl
Y3Rpb24oKQogewotICAgIG1fdW5zd2VwdCA9IG1fbGl2ZTsKKyAgICBtX2JpdHMudW5zd2VwdCgp
ID0gbV9iaXRzLmxpdmUoKTsKIH0KIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rv
cnk6OmZpbmRCbG9ja1RvU3dlZXAoKQogewotICAgIG1fdW5zd2VwdEN1cnNvciA9IG1fdW5zd2Vw
dC5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CisgICAgbV91bnN3ZXB0Q3Vyc29yID0g
bV9iaXRzLnVuc3dlcHQoKS5maW5kQml0KG1fdW5zd2VwdEN1cnNvciwgdHJ1ZSk7CiAgICAgaWYg
KG1fdW5zd2VwdEN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX3Vuc3dlcHRDdXJzb3JdOwpAQCAtMjg3LDcgKzI3
Nyw3IEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tUb1N3
ZWVwKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogewotICAgIG1fdW5zd2VwdC5m
b3JFYWNoU2V0Qml0KAorICAgIG1fYml0cy51bnN3ZXB0KCkuZm9yRWFjaFNldEJpdCgKICAgICAg
ICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrID0gbV9ibG9ja3NbaW5kZXhdOwogICAgICAgICAgICAgYmxvY2stPnN3ZWVwKG51bGxw
dHIpOwpAQCAtMjk2LDcgKzI4Niw3IEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OnN3ZWVwKCkKIAog
dm9pZCBCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKCkKIHsKLSAgICAobV9lbXB0eSAmIH5tX2Rlc3Ry
dWN0aWJsZSkuZm9yRWFjaFNldEJpdCgKKyAgICAobV9iaXRzLmVtcHR5KCkgJiB+bV9iaXRzLmRl
c3RydWN0aWJsZSgpKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkg
ewogICAgICAgICAgICAgbWFya2VkU3BhY2UoKS5mcmVlQmxvY2sobV9ibG9ja3NbaW5kZXhdKTsK
ICAgICAgICAgfSk7CkBAIC0zMDcsNyArMjk3LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YXNz
ZXJ0Tm9VbnN3ZXB0KCkKICAgICBpZiAoQVNTRVJUX0RJU0FCTEVEKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgaWYgKG1fdW5zd2VwdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fYml0cy51bnN3
ZXB0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZGF0YUxvZygiQXNz
ZXJ0aW9uIGZhaWxlZDogdW5zd2VwdCBub3QgZW1wdHkgaW4gIiwgKnRoaXMsICIuXG4iKTsKQEAg
LTMyOSw3ICszMTksNyBAQCBSZWZQdHI8U2hhcmVkVGFzazxNYXJrZWRCbG9jazo6SGFuZGxlKigp
Pj4gQmxvY2tEaXJlY3Rvcnk6OnBhcmFsbGVsTm90RW1wdHlCbG9jawogICAgICAgICAgICAgaWYg
KG1fZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIG1faW5kZXggPSBtX2Rp
cmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0eS5maW5kQml0KG1faW5kZXgsIHRydWUpOworICAgICAg
ICAgICAgbV9pbmRleCA9IG1fZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5maW5k
Qml0KG1faW5kZXgsIHRydWUpOwogICAgICAgICAgICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3Rv
cnkubV9ibG9ja3Muc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9kb25lID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1NywxOCArMzQ3LDE5IEBAIHZvaWQg
QmxvY2tEaXJlY3Rvcnk6OmR1bXBCaXRzKFByaW50U3RyZWFtJiBvdXQpCiAgICAgdW5zaWduZWQg
bWF4TmFtZUxlbmd0aCA9IDA7CiAgICAgZm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAg
ICBOb0xvY2tpbmdOZWNlc3NhcnksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYsIGNvbnN0
IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmLCBjb25zdCBjaGFyKiBu
YW1lKSB7CisgICAgICAgICAgICBVTlVTRURfUEFSQU0odmVjdG9yUmVmKTsKICAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHN0cmxlbihuYW1lKTsKICAgICAgICAgICAgIG1heE5hbWVMZW5n
dGggPSBzdGQ6Om1heChtYXhOYW1lTGVuZ3RoLCBsZW5ndGgpOwogICAgICAgICB9KTsKICAgICAK
ICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2Fy
eSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IsIGNvbnN0IGNoYXIqIG5hbWUp
IHsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmLCBjb25zdCBjaGFyKiBuYW1lKSB7CiAgICAg
ICAgICAgICBvdXQucHJpbnQoIiAgICAiLCBuYW1lLCAiOiAiKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1heE5hbWVMZW5ndGggLSBzdHJsZW4obmFtZSk7IGktLTspCiAgICAgICAg
ICAgICAgICAgb3V0LnByaW50KCIgIik7Ci0gICAgICAgICAgICBvdXQucHJpbnQodmVjdG9yLCAi
XG4iKTsKKyAgICAgICAgICAgIG91dC5wcmludCh2ZWN0b3JSZWYsICJcbiIpOwogICAgICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJl
Y3RvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKaW5k
ZXggYTdiY2FhNmI5ZWJkNGJhZDYzZDdlNzgxMTA5MThlM2U0MzYzODdkMS4uMDI4ODgwYjI3ZGNk
NTJjODUwNGQ2NjFjYTFjNzQwMGRjMmJjMjVhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIgorI2luY2x1ZGUgIkJsb2NrRGlyZWN0
b3J5Qml0cy5oIgogI2luY2x1ZGUgIkNlbGxBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRnJlZUxp
c3QuaCIKICNpbmNsdWRlICJMb2NhbEFsbG9jYXRvci5oIgpAQCAtNDQsMTkgKzQ1LDYgQEAgY2xh
c3MgSXNvQ2VsbFNldDsKIGNsYXNzIE1hcmtlZFNwYWNlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCi0jZGVmaW5lIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwK
LSAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBo
YXZlIGFjdHVhbCBibG9ja3MuICovXAotICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNl
dCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMuICovIFwKLSAgICBtYWNy
byhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJl
IGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKLSAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVt
cHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJl
IG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRC
bG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCi0gICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0
cnVjdGlibGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0
b3JzIHRvIHJ1bi4gKi9cCi0gICAgbWFjcm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwg
YmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCi0gICAg
bWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291
bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuICovXAotICAgIFwKLSAgICAv
KiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICovXAotICAgIG1hY3JvKG1hcmtp
bmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhh
dCBhcmUgbm90IGVtcHR5LiAqLyBcCi0gICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdS
ZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KLQog
Ly8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhbmQgZW1wdHkgdG8g
YmUgZXhjbHVzaXZlOgogLy8KIC8vICAgICBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ICYgZW1wdHkg
PT0gMApAQCAtNzgsNyArNjYsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogcHVibGljOgotICAgIEJsb2NrRGlyZWN0
b3J5KEhlYXAqLCBzaXplX3QgY2VsbFNpemUpOworICAgIEJsb2NrRGlyZWN0b3J5KHNpemVfdCBj
ZWxsU2l6ZSk7CiAgICAgfkJsb2NrRGlyZWN0b3J5KCk7CiAgICAgdm9pZCBzZXRTdWJzcGFjZShT
dWJzcGFjZSopOwogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsKQEAgLTk4LDcgKzg2
LDYgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIGJvb2wgbmVlZHNEZXN0cnVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbiA9PSBOZWVkc0Rlc3RydWN0
aW9uOyB9CiAgICAgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9hdHRyaWJ1dGVzLmRlc3RydWN0aW9uOyB9CiAgICAgSGVhcENlbGw6OktpbmQgY2VsbEtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuY2VsbEtpbmQ7IH0KLSAgICBIZWFwKiBoZWFw
KCkgeyByZXR1cm4gbV9oZWFwOyB9CiAKICAgICBib29sIGlzRnJlZUxpc3RlZENlbGwoY29uc3Qg
dm9pZCogdGFyZ2V0KTsKIApAQCAtMTE1LDkgKzEwMiw5IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5
IHsKICAgICBMb2NrJiBiaXR2ZWN0b3JMb2NrKCkgeyByZXR1cm4gbV9iaXR2ZWN0b3JMb2NrOyB9
CiAKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBj
YXBpdGFsQml0TmFtZSkgICAgIFwKLSAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dl
ckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0
IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXMg
IyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKICAgICBib29sIGlzICMjIGNhcGl0YWxCaXRO
YW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJs
b2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5p
bmRleCgpKTsgfSBcCi0gICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0
cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5h
bWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV9iaXRz
LnNldElzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7IH0gXAogICAgIHZvaWQgc2V0
SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUobG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CiAgICAgRk9SX0VBQ0hfQkxPQ0tf
RElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUykKICN1bmRlZiBCTE9D
S19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUwpAQCAtMTI2LDcgKzExMyw3IEBAIGNsYXNzIEJsb2Nr
RGlyZWN0b3J5IHsKICAgICB2b2lkIGZvckVhY2hCaXRWZWN0b3IoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMubG93ZXJCaXROYW1lKCkp
OwogICAgICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9C
SVRfQ0FMTEJBQ0spOwogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sKICAgICB9
CkBAIC0xMzUsNyArMTIyLDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQgZm9y
RWFjaEJpdFZlY3RvcldpdGhOYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgY29uc3QgRnVuYyYg
ZnVuYykKICAgICB7CiAjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQ0FMTEJBQ0sobG93ZXJC
aXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAotICAgICAgICBmdW5jKG1fICMjIGxvd2VyQml0TmFt
ZSwgI2NhcGl0YWxCaXROYW1lKTsKKyAgICAgICAgZnVuYyhtX2JpdHMubG93ZXJCaXROYW1lKCks
ICNjYXBpdGFsQml0TmFtZSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQo
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSwogICAgIH0KQEAgLTE2NiwxNyArMTUzLDE0IEBAIGNsYXNzIEJsb2NrRGlyZWN0
b3J5IHsKICAgICAKICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBmaW5kQmxvY2tGb3JBbGxvY2F0
aW9uKExvY2FsQWxsb2NhdG9yJik7CiAgICAgCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5
QWxsb2NhdGVCbG9jaygpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIHRyeUFsbG9jYXRlQmxv
Y2soSGVhcCYpOwogICAgIAogICAgIFZlY3RvcjxNYXJrZWRCbG9jazo6SGFuZGxlKj4gbV9ibG9j
a3M7CiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2ZyZWVCbG9ja0luZGljZXM7CiAKICAgICAvLyBN
dXRhdG9yIHVzZXMgdGhpcyB0byBndWFyZCByZXNpemluZyB0aGUgYml0dmVjdG9ycy4gVGhvc2Ug
dGhpbmdzIGluIHRoZSBHQyB0aGF0IG1heSBydW4KICAgICAvLyBjb25jdXJyZW50bHkgdG8gdGhl
IG11dGF0b3IgbXVzdCBsb2NrIHRoaXMgd2hlbiBhY2Nlc3NpbmcgdGhlIGJpdHZlY3RvcnMuCi0j
ZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBp
dGFsQml0TmFtZSkgXAotICAgIEZhc3RCaXRWZWN0b3IgbV8gIyMgbG93ZXJCaXROYW1lOwotICAg
IEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJB
VElPTikKLSN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OCisgICAgQmxvY2tE
aXJlY3RvcnlCaXRzIG1fYml0czsKICAgICBMb2NrIG1fYml0dmVjdG9yTG9jazsKICAgICBMb2Nr
IG1fbG9jYWxBbGxvY2F0b3JzTG9jazsKICAgICBDZWxsQXR0cmlidXRlcyBtX2F0dHJpYnV0ZXM7
CkBAIC0xOTAsNyArMTc0LDYgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIAogICAgIC8v
IEZJWE1FOiBBbGwgb2YgdGhlc2Ugc2hvdWxkIHByb2JhYmx5IGJlIHJlZmVyZW5jZXMuCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njk4OAotICAgIEhl
YXAqIG1faGVhcCB7IG51bGxwdHIgfTsKICAgICBTdWJzcGFjZSogbV9zdWJzcGFjZSB7IG51bGxw
dHIgfTsKICAgICBCbG9ja0RpcmVjdG9yeSogbV9uZXh0RGlyZWN0b3J5IHsgbnVsbHB0ciB9Owog
ICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3RvcnlJblN1YnNwYWNlIHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlC
aXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMjU1Njk0YWViOTRmY2I2NjQwOTY5NWYwNTEyZmRjOWEzYzY2MmFkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlC
aXRzLmgKQEAgLTAsMCArMSwyNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUg
PHd0Zi9GYXN0Qml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2RlZmluZSBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKG1hY3JvKSBc
CisgICAgbWFjcm8obGl2ZSwgTGl2ZSkgLyogVGhlIHNldCBvZiBibG9jayBpbmRpY2VzIHRoYXQg
aGF2ZSBhY3R1YWwgYmxvY2tzLiAqL1wKKyAgICBtYWNybyhlbXB0eSwgRW1wdHkpIC8qIFRoZSBz
ZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGhhdmUgbm8gbGl2ZSBvYmplY3RzLiAqLyBcCisgICAgbWFj
cm8oYWxsb2NhdGVkLCBBbGxvY2F0ZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFy
ZSBmdWxsIG9mIGxpdmUgb2JqZWN0cy4gKi9cCisgICAgbWFjcm8oY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSwgQ2FuQWxsb2NhdGVCdXROb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIGFy
ZSBuZWl0aGVyIGVtcHR5IG5vciByZXRpcmVkIChpLmUuIGFyZSBtb3JlIHRoYW4gbWluTWFya2Vk
QmxvY2tVdGlsaXphdGlvbiBmdWxsKS4gKi8gXAorICAgIG1hY3JvKGRlc3RydWN0aWJsZSwgRGVz
dHJ1Y3RpYmxlKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBtYXkgaGF2ZSBkZXN0cnVj
dG9ycyB0byBydW4uICovXAorICAgIG1hY3JvKGVkZW4sIEVkZW4pIC8qIFRoZSBzZXQgb2YgYWxs
IGJsb2NrcyB0aGF0IGhhdmUgbmV3IG9iamVjdHMgc2luY2UgdGhlIGxhc3QgR0MuICovXAorICAg
IG1hY3JvKHVuc3dlcHQsIFVuc3dlcHQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGNv
dWxkIGJlIHN3ZXB0IGJ5IHRoZSBpbmNyZW1lbnRhbCBzd2VlcGVyLiAqL1wKKyAgICBcCisgICAg
LyogVGhlc2UgYXJlIGNvbXB1dGVkIGR1cmluZyBtYXJraW5nLiAqL1wKKyAgICBtYWNybyhtYXJr
aW5nTm90RW1wdHksIE1hcmtpbmdOb3RFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRo
YXQgYXJlIG5vdCBlbXB0eS4gKi8gXAorICAgIG1hY3JvKG1hcmtpbmdSZXRpcmVkLCBNYXJraW5n
UmV0aXJlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIHJldGlyZWQuICovCisK
K2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRzUGVyU2VnbWVudCA9
IDMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2VnbWVudFNoaWZ0ID0gNTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4TWFzayA9ICgxVSA8PCBzZWdtZW50U2hp
ZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8IHNlZ21lbnRTaGlmdCkgPT0gYml0c1Bl
clNlZ21lbnQpOworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVChsb3dl
ckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSArIDEKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcyA9IDAgRk9SX0VBQ0hfQkxPQ0tfRElS
RUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQpOworI3VuZGVmIEJMT0NL
X0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVAorCisgICAgZW51bSBjbGFzcyBLaW5kIHsKKyNkZWZp
bmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2Fw
aXRhbEJpdE5hbWUpIFwKKyAgICAgICAgY2FwaXRhbEJpdE5hbWUsCisgICAgICAgIEZPUl9FQUNI
X0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9O
KQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTgorICAgIH07CisK
KyAgICBjbGFzcyBTZWdtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNlZ21lbnQoKSA9IGRl
ZmF1bHQ7CisgICAgICAgIHN0ZDo6YXJyYXk8dWludDMyX3QsIG51bWJlck9mQmxvY2tEaXJlY3Rv
cnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8S2luZCBraW5k
PgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHVzaW5nIFZpZXdU
eXBlID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzsKKworICAgICAgICBCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KCkgPSBkZWZhdWx0OworCisgICAgICAgIEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgU2VnbWVudCogc2VnbWVudHMsIHNpemVfdCBu
dW1CaXRzKQorICAgICAgICAgICAgOiBtX3NlZ21lbnRzKHNlZ21lbnRzKQorICAgICAgICAgICAg
LCBtX251bUJpdHMobnVtQml0cykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2l6
ZV90IG51bUJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9udW1C
aXRzOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgd29yZChzaXplX3QgaW5kZXgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IFdURjo6ZmFzdEJpdFZl
Y3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOworICAgICAgICB9
CisKKyAgICAgICAgdWludDMyX3QmIHdvcmQoc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1C
aXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21l
bnRzKVtpbmRleF0ubV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxTZWdtZW50
Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCld
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3Qg
bV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAg
dXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+PjsKKworICAgIHRlbXBsYXRl
PEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiBmaW5hbCA6
IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4geworICAgIHB1YmxpYzoK
KyAgICAgICAgZXhwbGljaXQgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYoQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPiB2aWV3KQorICAgICAgICAgICAgOiBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclZpZXc8a2luZD4odmlldykKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAgICAgICAgQmxvY2tEaXJlY3Rv
cnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShjb25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90
aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVyLm51bUJpdHMoKSk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZp
ZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAgQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkgPSBvdGhlci51
bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVyLm51
bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAg
QmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkg
fD0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAgICAgICAgcmV0dXJuICp0aGlz
OworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS5j
bGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgY2xhc3MgQml0UmVmZXJlbmNlIHsKKyAg
ICAgICAgcHVibGljOgorICAgICAgICAgICAgQml0UmVmZXJlbmNlKCkgeyB9CisKKyAgICAgICAg
ICAgIEJpdFJlZmVyZW5jZSh1aW50MzJfdCogd29yZCwgdWludDMyX3QgbWFzaykKKyAgICAgICAg
ICAgICAgICA6IG1fd29yZCh3b3JkKQorICAgICAgICAgICAgICAgICwgbV9tYXNrKG1hc2spCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAh
ISgqbV93b3JkICYgbV9tYXNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQml0UmVm
ZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2YWx1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICptX3dvcmQgfD0gbV9tYXNrOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKm1fd29yZCAmPSB+bV9t
YXNrOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICBwcml2YXRlOgorICAgICAgICAgICAgdWludDMyX3QqIG1fd29yZCB7IG51bGxwdHIgfTsK
KyAgICAgICAgICAgIHVpbnQzMl90IG1fbWFzayB7IDAgfTsKKyAgICAgICAgfTsKKworICAgICAg
ICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQoaW5kZXggPCBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMo
KSk7CisgICAgICAgICAgICByZXR1cm4gQml0UmVmZXJlbmNlKCZCbG9ja0RpcmVjdG9yeUJpdFZl
Y3RvclZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCkud29yZChpbmRleCA+PiA1KSwgMSA8PCAoaW5k
ZXggJiAzMSkpOworICAgICAgICB9CisKKyAgICAgICAgQml0UmVmZXJlbmNlIG9wZXJhdG9yW10o
c2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXQoaW5kZXgpOwor
ICAgICAgICB9CisgICAgfTsKKworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09S
Uyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBsb3dlckJpdE5hbWUoKVtpbmRleF07IFwKKyAgICB9IFwKKyAgICB2b2lkIHNldElzICMjIGNh
cGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgXAorICAgIHsgXAorICAgICAg
ICBsb3dlckJpdE5hbWUoKVtpbmRleF0gPSB2YWx1ZTsgXAorICAgIH0gXAorICAgIEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkg
Y29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JW
aWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwK
KyAgICB9IFwKKyAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0
TmFtZT4gbG93ZXJCaXROYW1lKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0
VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KG1fc2VnbWVudHMuZGF0YSgpLCBt
X251bUJpdHMpKTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJM
T0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRf
QUNDRVNTT1JTCisKKyAgICB1bnNpZ25lZCBudW1CaXRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1C
aXRzOyB9CisKKyAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBudW1CaXRzKQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgb2xkTnVtQml0cyA9IG1fbnVtQml0czsKKyAgICAgICAgbV9udW1CaXRzID0g
bnVtQml0czsKKyAgICAgICAgbV9zZWdtZW50cy5yZXNpemUoKG51bUJpdHMgKyBiaXRzUGVyU2Vn
bWVudCAtIDEpID4+IHNlZ21lbnRTaGlmdCk7CisgICAgICAgIGlmIChudW1CaXRzIDwgb2xkTnVt
Qml0cyAmJiBudW1CaXRzKSB7CisgICAgICAgICAgICAvLyBDbGVhciB0aGUgbGFzdCBzZWdtZW50
LgorICAgICAgICAgICAgYXV0byYgc2VnbWVudCA9IG1fc2VnbWVudHMubGFzdCgpOworICAgICAg
ICAgICAgdWludDMyX3QgbWFzayA9IHN0YXRpY19jYXN0PHVpbnQzMl90PigoMVVMTCA8PCAobnVt
Qml0cyAmIGluZGV4TWFzaykpIC0gMSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBudW1iZXJPZkJsb2NrRGlyZWN0b3J5Qml0S2luZHM7ICsraW5kZXgpCisg
ICAgICAgICAgICAgICAgc2VnbWVudC5tX2RhdGFbaW5kZXhdICY9IG1hc2s7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFNl
Z21lbnQoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0g
MDsKKyAgICAgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgICAg
IGZ1bmMoaW5kZXgrKywgc2VnbWVudCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxT
ZWdtZW50PiBtX3NlZ21lbnRzOworICAgIHVuc2lnbmVkIG1fbnVtQml0cyB7IDAgfTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9C
bG9ja0RpcmVjdG9yeUlubGluZXMuaAppbmRleCA0MWNiYjQ5YzI2NDk1NjZkZWNkZjc4MjM4M2Jl
Yzg4Y2EyMmJhNTc1Li42ODRiMWE4ZDg2YzRjNzU5NzBkNDg2OGNmZDQwYmM2Nzk2YjAwYjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2soY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICBt
X2JpdHMubGl2ZSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7
CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0pOwpAQCAt
NDEsNyArNDEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdAogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJs
b2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgbV9tYXJraW5nTm90RW1wdHkuZm9y
RWFjaFNldEJpdCgKKyAgICBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkuZm9yRWFjaFNldEJpdCgK
ICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9j
a3NbaW5kZXhdKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2UuY3BwCmluZGV4IDJjYjk1MmY2NzgyZTdkYjgwNTQ3NzE1MzlkNTll
ZGI5YTg5NDEyYmMuLmU0ZGM2MjM2OGFhNDgyYzk5Njk2NmQ0OGJhMzhjNzQxMDUyMzJlMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvY2Fs
QWxsb2NhdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKIApAQCAtNzksNyArODAsNyBA
QCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6
ZSkKICAgICBpZiAoZmFsc2UpCiAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIEJsb2NrRGlyZWN0
b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAiLCBtX25hbWUsICIsICIsIGF0dHJpYnV0ZXMoKSwgIiwg
Iiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAgICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGly
ZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3Nw
YWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rv
cnk+IHVuaXF1ZURpcmVjdG9yeSA9IG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KHNpemVDbGFz
cyk7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQo
KTsKICAgICBtX2RpcmVjdG9yaWVzLmFwcGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwog
ICAgIApAQCAtMTA1LDcgKzEwNiw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxv
Y2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgIH0KICAgICAKICAgICBkaXJlY3RvcnktPnNl
dE5leHREaXJlY3RvcnlJblN1YnNwYWNlKG1fZmlyc3REaXJlY3RvcnkpOwotICAgIG1fYWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBtX2Fs
aWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KG1fc3BhY2UuaGVhcCgpLCBk
aXJlY3RvcnkpOwogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAgICAgbV9maXJzdERpcmVj
dG9yeSA9IGRpcmVjdG9yeTsKICAgICByZXR1cm4gYWxsb2NhdG9yOwpAQCAtMTI3LDcgKzEyOCw3
IEBAIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OnRyeUFsbG9jYXRlU2xvdyhWTSYgdm0sIHNpemVf
dCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCoKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwog
ICAgIAogICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHNpemUsIEFs
bG9jYXRvckZvck1vZGU6OkVuc3VyZUFsbG9jYXRvcikpCi0gICAgICAgIHJldHVybiBhbGxvY2F0
b3IuYWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOworICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVy
cmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAKICAg
ICBpZiAoc2l6ZSA8PSBPcHRpb25zOjpwcmVjaXNlQWxsb2NhdGlvbkN1dG9mZigpCiAgICAgICAg
ICYmIHNpemUgPD0gTWFya2VkU3BhY2U6OmxhcmdlQ3V0b2ZmKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaAppbmRleCBlYWNl
MmE2ZjVjODc3OWFmZGYwNjE2MGEzODE3OGJjYzk5MzIyZjQwLi44NzFkZjJiMjc4OGQzYWVhMTdj
YWIzZDljMmFmNWM2NDZhNTNhY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKQEAgLTM2LDcgKzM2LDcgQEAgQUxXQVlT
X0lOTElORSB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZt
LCBzaXplX3Qgc2l6ZSwgR0MKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBlY3RE
b2VzR0MoKSk7CiAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQotICAg
ICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1v
ZGUpOworICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFs
Q29udGV4dCwgZmFpbHVyZU1vZGUpOwogICAgIHJldHVybiBhbGxvY2F0ZVNsb3codm0sIHNpemUs
IGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmluZGV4IGFhNjJlMTFmZDQ0ZjZhYmNiYmJmNDI1Yjg2ZmRm
MTExODBhODQ3OWMuLjgwYTljZWI2YTM3OTZlOTNlNDZlMzc0MTdjOTlmMmViNjhmMGE0ODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIFJlZjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0Ojpw
YXJhbGxlbE5vdEVtcHR5TWFya2VkQmxvY2tTCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgYXV0byBiaXRzID0gbV9kaXJlY3RvcnkubV9t
YXJraW5nTm90RW1wdHkgJiBtX3NldC5tX2Jsb2Nrc1dpdGhCaXRzOworICAgICAgICAgICAgYXV0
byBiaXRzID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9zZXQubV9i
bG9ja3NXaXRoQml0czsKICAgICAgICAgICAgIG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRl
eCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nr
cy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKaW5kZXggZmM4MTY5Mjg3ZjA1
NjZiZWViODlkMTk4NDcxOTExYTRhNzU5YzRlMS4uZGI3ZThhY2I1NjFiMWQyMmQ0NzYxNjVjYmM0
MDhiYzM4ZjY1NmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0SW5saW5lcy5oCkBAIC03MCw3ICs3MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2
b2lkIElzb0NlbGxTZXQ6OmZvckVhY2hNYXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAg
ICAgQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSA9IG1fc3Vic3BhY2UubV9kaXJlY3Rvcnk7Ci0g
ICAgKGRpcmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0eSAmIG1fYmxvY2tzV2l0aEJpdHMpLmZvckVh
Y2hTZXRCaXQoCisgICAgKGRpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX2Js
b2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBibG9ja0lu
ZGV4KSB7CiAgICAgICAgICAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9y
eS5tX2Jsb2Nrc1tibG9ja0luZGV4XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuY3BwCmluZGV4IDQ1M2U2MDIzM2Q2MTFkNDdjMzE3YmI3M2RjYjliMjY2ZTkwOTZj
ZTQuLmQxY2Y2MWYwNzcyNWI1YzgzOGFiNDZmNmM3YjZjNzRmYTU1MjgyYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKQEAgLTMyLDE3ICszMiwxOCBAQAog
I2luY2x1ZGUgIklzb0NlbGxTZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSXNvU3Vic3BhY2VJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFy
a2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBJc29TdWJzcGFjZTo6SXNv
U3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxs
VHlwZSwgc2l6ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscykKICAgICA6
IFN1YnNwYWNlKG5hbWUsIGhlYXApCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZGlyZWN0
b3J5KCZoZWFwLCBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXpl
PihzaXplKSkKKyAgICAsIG1fZGlyZWN0b3J5KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJr
ZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJl
Y3RvcnkpCiAgICAgLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yPigpKQotICAgICwgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxs
Q291bnQobnVtYmVyT2ZMb3dlclRpZXJDZWxscykKIHsKKyAgICBtX3JlbWFpbmluZ0xvd2VyVGll
ckNlbGxDb3VudCA9IG51bWJlck9mTG93ZXJUaWVyQ2VsbHM7CisgICAgQVNTRVJUKFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXpl
KCkpOwogICAgIEFTU0VSVChudW1iZXJPZkxvd2VyVGllckNlbGxzIDw9IE1hcmtlZEJsb2NrOjpt
YXhOdW1iZXJPZkxvd2VyVGllckNlbGxzKTsKICAgICBtX2lzSXNvU3Vic3BhY2UgPSB0cnVlOwog
ICAgIGluaXRpYWxpemUoaGVhcENlbGxUeXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3Iu
Z2V0KCkpOwpAQCAtNTAsNyArNTEsNyBAQCBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmlu
ZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgcwogICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zcGFjZS5kaXJlY3RvcnlMb2NrKCkpOwogICAgIG1fZGly
ZWN0b3J5LnNldFN1YnNwYWNlKHRoaXMpOwogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3Rvcnko
bG9ja2VyLCAmbV9kaXJlY3RvcnkpOwotICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVn
aXN0ZXJEaXJlY3RvcnkoJm1fZGlyZWN0b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0
b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KGhlYXAsICZtX2RpcmVjdG9yeSk7CiAgICAgbV9maXJzdERp
cmVjdG9yeSA9ICZtX2RpcmVjdG9yeTsKIH0KIApAQCAtMTExLDggKzExMiw3IEBAIHZvaWQqIElz
b1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZyb21Mb3dlclRpZXIoKQogICAgICAgICByZXR1cm4gcmV2
aXZlKGFsbG9jYXRpb24pOwogICAgIH0KICAgICBpZiAobV9yZW1haW5pbmdMb3dlclRpZXJDZWxs
Q291bnQpIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
TWFya2VkU3BhY2U6OnNpemVTdGVwPihtX3NpemUpOwotICAgICAgICBQcmVjaXNlQWxsb2NhdGlv
biogYWxsb2NhdGlvbiA9IFByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIoKm1f
c3BhY2UuaGVhcCgpLCBzaXplLCB0aGlzLCAtLW1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50
KTsKKyAgICAgICAgUHJlY2lzZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBQcmVjaXNlQWxsb2Nh
dGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKG1fc3BhY2UuaGVhcCgpLCBjZWxsU2l6ZSgpLCB0aGlz
LCAtLW1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KTsKICAgICAgICAgcmV0dXJuIHJldml2
ZShhbGxvY2F0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAppbmRleCBjYTc3N2QwOGFmMWRhNWUwMDk1YzI4ODlj
MTI0NGY0ZGU2Y2NhNTYzLi5hNTE0M2JkYWVlY2IzYjljNDJkNThjZGFlYjVmMjRiMzEzN2QwNWU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKQEAgLTQwLDcgKzQw
LDcgQEAgY2xhc3MgSXNvU3Vic3BhY2UgOiBwdWJsaWMgU3Vic3BhY2UgewogICAgIEpTX0VYUE9S
VF9QUklWQVRFIElzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYsIEhlYXBDZWxsVHlwZSos
IHNpemVfdCBzaXplLCB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIH5Jc29TdWJzcGFjZSgpOwogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KKyAgICBzaXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2RpcmVj
dG9yeS5jZWxsU2l6ZSgpOyB9CiAKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yKHNpemVfdCwg
QWxsb2NhdG9yRm9yTW9kZSkgb3ZlcnJpZGU7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKTsKQEAgLTYzLDE4ICs2MywxNiBAQCBj
bGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiAgICAgdm9pZCBkaWRSZW1vdmVC
bG9jayhzaXplX3QgYmxvY2tJbmRleCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRCZWdpblN3ZWVw
aW5nVG9GcmVlTGlzdChNYXJrZWRCbG9jazo6SGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgCi0gICAg
c2l6ZV90IG1fc2l6ZTsKICAgICBCbG9ja0RpcmVjdG9yeSBtX2RpcmVjdG9yeTsKICAgICBMb2Nh
bEFsbG9jYXRvciBtX2xvY2FsQWxsb2NhdG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yPiBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiAgICAgU2Vu
dGluZWxMaW5rZWRMaXN0PFByZWNpc2VBbGxvY2F0aW9uLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8
UHJlY2lzZUFsbG9jYXRpb24+PiBtX2xvd2VyVGllckZyZWVMaXN0OwogICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxJc29DZWxsU2V0LCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4+IG1f
Y2VsbFNldHM7Ci0gICAgdWludDhfdCBtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCB7IDAg
fTsKIH07CiAKIEFMV0FZU19JTkxJTkUgQWxsb2NhdG9yIElzb1N1YnNwYWNlOjphbGxvY2F0b3JG
b3JOb25WaXJ0dWFsKHNpemVfdCBzaXplLCBBbGxvY2F0b3JGb3JNb2RlKQogewotICAgIFJFTEVB
U0VfQVNTRVJUKHNpemUgPT0gdGhpcy0+c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxs
U2l6ZSgpKTsKICAgICByZXR1cm4gQWxsb2NhdG9yKCZtX2xvY2FsQWxsb2NhdG9yKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAppbmRl
eCAwNTE4YTdmZTA2MmQ2MDkxNjlkN2JjM2Y3NTNjNTg0ZGM0ZWVjZjcwLi40NjYwZTc3ODNhYTY3
MmVjOGEyOWY0ZjRmMzNjMjMyY2I0NmRmNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5v
blZpcnR1YWwoVk0mLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29u
dGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQorQUxXQVlTX0lOTElORSB2
b2lkKiBJc29TdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUs
IEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSBmYWlsdXJlTW9kZSkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IHRoaXMtPnNpemUo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJs
b2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7CiAgICAgQWxsb2NhdG9yIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6TXVz
dEFscmVhZHlIYXZlQWxsb2NhdG9yKTsKLSAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3IuYWxs
b2NhdGUoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgdm9pZCogcmVzdWx0ID0g
YWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAKaW5kZXggYjllMTg1MDkwNDJlNzAxNzA3YjY3NmU4ODIx
YjBjNDFhZjVkOGQ4Mi4uYjJmNmJiZDliOTQ3OGMyYTUxYzNmMTM4MTg3MmQxYTZkY2ZiNjZkZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNv
U3Vic3BhY2UgOiBwdWJsaWMgSXNvU3Vic3BhY2UgewogICAgIH5BdXRvcmVtb3ZpbmdJc29TdWJz
cGFjZSgpCiAgICAgewogICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGVyVk0ubV9s
b2NrKTsKLSAgICAgICAgbV9wZXJWTS5tX3N1YnNwYWNlUGVyVk0ucmVtb3ZlKCZzcGFjZSgpLmhl
YXAoKS0+dm0oKSk7CisgICAgICAgIG1fcGVyVk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZSgmc3Bh
Y2UoKS5oZWFwKCkudm0oKSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCmluZGV4IDUzZTA1MDhhYjJmZjAxY2Y0ZDQ5
YTdmZjA3MDE3NzFmMGYwYWM0YWQuLmY1NTU3MWM4NmNmYjJlMGFlNGNiZDFlMGFlMjdmZGI4NTBi
ZDBmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2Nh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5j
cHAKQEAgLTExMCwxMiArMTEwLDExIEBAIHZvaWQgTG9jYWxBbGxvY2F0b3I6OnN0b3BBbGxvY2F0
aW5nRm9yR29vZCgpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFs
bG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQordm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9j
YXRlU2xvd0Nhc2UoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4
dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIFN1cGVyU2FtcGxl
clNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKLSAgICBIZWFwJiBoZWFwID0gKm1fZGly
ZWN0b3J5LT5tX2hlYXA7CiAgICAgQVNTRVJUKGhlYXAudm0oKS5jdXJyZW50VGhyZWFkSXNIb2xk
aW5nQVBJTG9jaygpKTsKLSAgICBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKGRlZmVycmFsQ29u
dGV4dCk7CisgICAgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChoZWFwLCBkZWZlcnJhbENvbnRl
eHQpOwogCiAgICAgQVNTRVJUKCFtX2RpcmVjdG9yeS0+bWFya2VkU3BhY2UoKS5pc0l0ZXJhdGlu
ZygpKTsKICAgICBoZWFwLmRpZEFsbG9jYXRlKG1fZnJlZUxpc3Qub3JpZ2luYWxTaXplKCkpOwpA
QCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNl
KEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jCiAgICAgLy8gR29vZnkg
Y29ybmVyIGNhc2U6IHRoZSBHQyBjYWxsZWQgYSBjYWxsYmFjayBhbmQgbm93IHRoaXMgZGlyZWN0
b3J5IGhhcyBhIGN1cnJlbnRCbG9jay4gVGhpcyBvbmx5CiAgICAgLy8gaGFwcGVucyB3aGVuIHJ1
bm5pbmcgV2ViS2l0IHRlc3RzLCB3aGljaCBpbmplY3QgYSBjYWxsYmFjayBpbnRvIHRoZSBHQydz
IGZpbmFsaXphdGlvbi4KICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50QmxvY2spKQotICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgICAg
IHJldHVybiBhbGxvY2F0ZShoZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAg
ICAKICAgICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAg
ICAgCkBAIC0xNDIsNyArMTQxLDcgQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xv
d0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2MKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUq
IGJsb2NrID0gbV9kaXJlY3RvcnktPnRyeUFsbG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9j
azo6SGFuZGxlKiBibG9jayA9IG1fZGlyZWN0b3J5LT50cnlBbGxvY2F0ZUJsb2NrKGhlYXApOwog
ICAgIGlmICghYmxvY2spIHsKICAgICAgICAgaWYgKGZhaWx1cmVNb2RlID09IEFsbG9jYXRpb25G
YWlsdXJlTW9kZTo6QXNzZXJ0KQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTI0OSwxOCArMjQ4LDE4IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjp0cnlBbGxv
Y2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZl
cnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKK3ZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVz
dENvbGxlY3Rpb25zSWZOZWVkZWQoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVy
cmFsQ29udGV4dCkKIHsKICAgICBpZiAoIU9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdD
cygpKQogICAgICAgICByZXR1cm47CiAKICAgICBzdGF0aWMgdW5zaWduZWQgYWxsb2NhdGlvbkNv
dW50ID0gMDsKICAgICBpZiAoIWFsbG9jYXRpb25Db3VudCkgewotICAgICAgICBpZiAoIW1fZGly
ZWN0b3J5LT5tX2hlYXAtPmlzRGVmZXJyZWQoKSkgeworICAgICAgICBpZiAoIWhlYXAuaXNEZWZl
cnJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoZGVmZXJyYWxDb250ZXh0KQogICAgICAgICAgICAg
ICAgIGRlZmVycmFsQ29udGV4dC0+bV9zaG91bGRHQyA9IHRydWU7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9kaXJlY3RvcnktPm1faGVhcC0+Y29sbGVjdE5vdyhTeW5jLCBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpOworICAgICAgICAgICAgICAgIGhlYXAuY29sbGVjdE5vdyhT
eW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgr
K2FsbG9jYXRpb25Db3VudCA+PSBPcHRpb25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oCmluZGV4IDQzNzI3
M2YzNjY4MGU0YTgwOTY4N2NkZjhjOGU0YThjZjRlY2MxYWQuLjliNjUxYjA3MDM3NjgxNGYyYTM5
N2JiMmExODZlZDcwMDA5OWQzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0xvY2FsQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9j
YWxBbGxvY2F0b3IuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
QmxvY2tEaXJlY3Rvcnk7CiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiAK
IGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2Fs
QWxsb2NhdG9yPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTG9jYWxBbGxvY2F0b3IpOwpA
QCAtNDIsNyArNDMsNyBAQCBjbGFzcyBMb2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRvcj4gewogICAgIExvY2FsQWxsb2NhdG9yKEJsb2NrRGly
ZWN0b3J5Kik7CiAgICAgfkxvY2FsQWxsb2NhdG9yKCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2Nh
dGUoR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOworICAgIHZvaWQq
IGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSk7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyZWVM
aXN0LmNlbGxTaXplKCk7IH0KIApAQCAtNjAsMTIgKzYxLDEyIEBAIGNsYXNzIExvY2FsQWxsb2Nh
dG9yIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAg
ZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0b3J5OwogICAgIAogICAgIHZvaWQgcmVzZXQoKTsKLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250
ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCos
IEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsK
ICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5
QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7CiAgICAgdm9pZCogYWxsb2NhdGVJbihN
YXJrZWRCbG9jazo6SGFuZGxlKik7Ci0gICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRleHQqKTsKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsK
IAogICAgIEJsb2NrRGlyZWN0b3J5KiBtX2RpcmVjdG9yeTsKICAgICBGcmVlTGlzdCBtX2ZyZWVM
aXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0
b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklu
bGluZXMuaAppbmRleCAwMGQ1NTc0NzQyNjlkNTcyNDI3ZmQ3ZDk1NzlhMWYwY2E0YWQ1YWYxLi5j
M2M4Njk1ZTg1ODhjNzkwMzUwOGVhZTlmNTFhMmY3OTlmOTgzZjUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaApAQCAtMzAsMTQg
KzMwLDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIExvY2Fs
QWxsb2NhdG9yOjphbGxvY2F0ZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIExv
Y2FsQWxsb2NhdG9yOjphbGxvY2F0ZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVm
ZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAg
aWYgKHZhbGlkYXRlREZHRG9lc0dDKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2RpcmVjdG9y
eS0+aGVhcCgpLT5leHBlY3REb2VzR0MoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAu
ZXhwZWN0RG9lc0dDKCkpOwogICAgIHJldHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlKAogICAgICAg
ICBbJl0gKCkgLT4gSGVhcENlbGwqIHsKLSAgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTSht
X2RpcmVjdG9yeS0+aGVhcCgpLT52bSgpKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xvd0Nhc2UoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9k
ZSkpOworICAgICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKGhlYXAudm0oKSk7CisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SGVhcENlbGwqPihhbGxvY2F0ZVNsb3dDYXNlKGhlYXAs
IGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCBjNmUxZjZjZGY1MDI3
ZmUxNDBmNjQ0ZWNhNDkxOTBmNDg0OGIyNWEzLi40MjUwNGEwODZhZWRjMjYwOGYwNDRiNjc5ZWEz
ZmYzOTViYmRhMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
Y3BwCkBAIC0zNzcsOCArMzc3LDggQEAgdm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3Rh
dGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgZGlyZWN0
b3J5KCktPmZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgaG9sZExvY2soZGlyZWN0
b3J5KCktPmJpdHZlY3RvckxvY2soKSksCi0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgYml0
dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1lKSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
IG5hbWUsICI6IiwgYml0dmVjdG9yW2luZGV4KCldID8gIllFUyIgOiAibm8iKTsKKyAgICAgICAg
WyZdKGF1dG8gdmVjdG9yUmVmLCBjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIG5hbWUsICI6IiwgdmVjdG9yUmVmW2luZGV4KCldID8gIllFUyIgOiAibm8i
KTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAppbmRleCA5NzAzZTM1NzFlM2Y0Y2RmOGIyMTI4MGMzOTEwNzE5MTNlMzVjOGE4Li5k
NDA4ZDZlZWYxYzM3MjExMDg3ZWY2NmRmNmNhMmQyMmZmOTMxZGU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2Vk
QmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTk1LDggKzE5Niw4IEBA
IHZvaWQgTWFya2VkU3BhY2U6OmluaXRpYWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpCiB9CiAK
IE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFjZShIZWFwKiBoZWFwKQotICAgIDogbV9oZWFwKGhlYXAp
CiB7CisgICAgQVNTRVJUX1VOVVNFRChoZWFwLCBoZWFwID09ICZ0aGlzLT5oZWFwKCkpOwogICAg
IGluaXRpYWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpOwogfQogCkBAIC0yMzQsNyArMjM1LDcg
QEAgdm9pZCBNYXJrZWRTcGFjZTo6bGFzdENoYW5jZVRvRmluYWxpemUoKQogCiB2b2lkIE1hcmtl
ZFNwYWNlOjpzd2VlcEJsb2NrcygpCiB7Ci0gICAgbV9oZWFwLT5zd2VlcGVyKCkuc3RvcFN3ZWVw
aW5nKCk7CisgICAgaGVhcCgpLnN3ZWVwZXIoKS5zdG9wU3dlZXBpbmcoKTsKICAgICBmb3JFYWNo
RGlyZWN0b3J5KAogICAgICAgICBbJl0gKEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkpIC0+IEl0
ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICBkaXJlY3Rvcnkuc3dlZXAoKTsKQEAgLTI3MCwx
MyArMjcxLDEzIEBAIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCkK
IAogdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIEFTU0VS
VCghVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkgfHwgbV9oZWFwLT53b3JsZElzU3RvcHBlZCgpKTsK
KyAgICBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAoKS53b3JsZElzU3Rv
cHBlZCgpKTsKICAgICBmb3IgKFN1YnNwYWNlKiBzdWJzcGFjZSA6IG1fc3Vic3BhY2VzKQogICAg
ICAgICBzdWJzcGFjZS0+cHJlcGFyZUZvckFsbG9jYXRpb24oKTsKIAogICAgIG1fYWN0aXZlV2Vh
a1NldHMudGFrZUZyb20obV9uZXdBY3RpdmVXZWFrU2V0cyk7CiAgICAgCi0gICAgaWYgKG1faGVh
cC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQorICAgIGlmICho
ZWFwKCkuY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAg
ICBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fcHJlY2lzZUFs
bG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fcHJlY2lzZUFsbG9j
YXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gMDsKQEAgLTI5OCw3ICsyOTksNyBAQCB2b2lk
IE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIAog
ICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1f
aGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQorICAgIGlm
IChoZWFwKCkuY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAg
ICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBAIC0zMTAsNyArMzEx
LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cmVhcFdlYWtTZXRzKCkKICAgICAKICAgICBtX25ld0Fj
dGl2ZVdlYWtTZXRzLmZvckVhY2godmlzaXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxl
Y3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKKyAgICBpZiAoaGVhcCgpLmNv
bGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3Rp
dmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApAQCAtMzU2LDcgKzM1Nyw3IEBAIHZvaWQg
TWFya2VkU3BhY2U6OnByZXBhcmVGb3JDb25zZXJ2YXRpdmVTY2FuKCkKIAogdm9pZCBNYXJrZWRT
cGFjZTo6cHJlcGFyZUZvck1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25T
Y29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rp
b25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikKICAgICAgICAgbV9wcmVjaXNlQWxs
b2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9IG1fcHJlY2lzZUFsbG9jYXRpb25zTnVy
c2VyeU9mZnNldDsKICAgICBlbHNlCiAgICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zT2Zmc2V0
Rm9yVGhpc0NvbGxlY3Rpb24gPSAwOwpAQCAtNDE2LDcgKzQxNyw3IEBAIHZvaWQgTWFya2VkU3Bh
Y2U6OnNocmluaygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAg
aWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7
CisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpIHsKICAgICAgICAgZm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAoQmxvY2tE
aXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAg
ICBkaXJlY3RvcnkuYmVnaW5NYXJraW5nRm9yRnVsbENvbGxlY3Rpb24oKTsKQEAgLTU1MSw3ICs1
NTIsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2spCiAKIHZvaWQgTWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCiB7
Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpF
ZGVuKSB7CisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2Nv
cGU6OkVkZW4pIHsKICAgICAgICAgZm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAo
QmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAg
ICAgICAgICBkaXJlY3Rvcnkuc25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCmluZGV4IDAwNjgwNWI0NDdiZTFi
NTIxYmNhNDQ0YzFkY2VhMWVmNzQyNzg0ODguLmFkMzY2MjJmMWI1N2RkNjZiY2NmM2Q5YWE0ZmYy
MTg2MGMzMTI3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaApA
QCAtOTUsNyArOTUsNyBAQCBjbGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgTWFya2VkU3BhY2UoSGVh
cCopOwogICAgIH5NYXJrZWRTcGFjZSgpOwogICAgIAotICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7
IHJldHVybiBtX2hlYXA7IH0KKyAgICBIZWFwJiBoZWFwKCkgY29uc3Q7CiAgICAgCiAgICAgdm9p
ZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOyAvLyBNdXN0IGNhbGwgc3RvcEFsbG9jYXRpbmdGb3JH
b29kIGZpcnN0LgogICAgIHZvaWQgZnJlZU1lbW9yeSgpOwpAQCAtMjEzLDcgKzIxMyw2IEBAIGNs
YXNzIE1hcmtlZFNwYWNlIHsKICAgICBQcmVjaXNlQWxsb2NhdGlvbioqIG1fcHJlY2lzZUFsbG9j
YXRpb25zRm9yVGhpc0NvbGxlY3Rpb25CZWdpbiB7IG51bGxwdHIgfTsKICAgICBQcmVjaXNlQWxs
b2NhdGlvbioqIG1fcHJlY2lzZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQgeyBudWxs
cHRyIH07CiAKLSAgICBIZWFwKiBtX2hlYXA7CiAgICAgc2l6ZV90IG1fY2FwYWNpdHkgeyAwIH07
CiAgICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAg
ICAgSGVhcFZlcnNpb24gbV9uZXdseUFsbG9jYXRlZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaApp
bmRleCBkZjg1MzFkOTdmYzY5NWEyMmNmMjdkMjVhMWE0ODkwZjBiZTM1YWY1Li5lYTg1MTQ2NDkz
MzAyOGM1MDkwOTk2ZjJlNjUxNDc3YTE0MmUzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaApAQCAtMzAsNiArMzAsMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK0FMV0FZU19JTkxJTkUgSGVhcCYgTWFya2VkU3BhY2U6OmhlYXAoKSBj
b25zdAoreworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PEhlYXAqPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90Pih0aGlzKSAtIE9CSkVDVF9PRkZTRVRPRihIZWFwLCBtX29iamVjdFNwYWNlKSk7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpm
b3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJhdGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKIHsKICAgICBBU1NFUlQoaXNJdGVyYXRpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9TdWJzcGFjZS5jcHAKaW5kZXggOTRjMmZmNGM2YjJhY2E2YzE5ZGMxNThjYjRmOGU2MzczNGQw
ZTNhNy4uYWI5OWUyZGE2YzVjM2IzNTEzNmIxN2FlNDRlNTFiYTc4YTk4OTczMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkhlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJN
YXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJQYXJhbGxlbFNvdXJjZUFkYXB0ZXIuaCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVj
dGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJbmxpbmVzLmgiCkBAIC00OSw3ICs1MCw3
IEBAIHZvaWQgU3Vic3BhY2U6OmluaXRpYWxpemUoSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUs
IEFsaWduZWRNZW1vcnlBbGxvY2F0b3IqIGFsCiAgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9y
ID0gYWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKICAgICBtX2RpcmVjdG9yeUZvckVtcHR5QWxsb2Nh
dGlvbiA9IG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+Zmlyc3REaXJlY3RvcnkoKTsKIAotICAg
IEhlYXAmIGhlYXAgPSAqbV9zcGFjZS5oZWFwKCk7CisgICAgSGVhcCYgaGVhcCA9IG1fc3BhY2Uu
aGVhcCgpOwogICAgIGhlYXAub2JqZWN0U3BhY2UoKS5tX3N1YnNwYWNlcy5hcHBlbmQodGhpcyk7
CiAgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlclN1YnNwYWNlKHRoaXMpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKaW5kZXggYjUwODExNDRjZDRjMGIx
MjkxY2QyYzM1M2MyMmM2ZmM0N2MxZmZhYi4uMzRlYTM0MTE4MzFiZTA4N2UzZTUzZWJlNjA3YjRh
OGU2MDNkZGRkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3Bh
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC0xMTks
NiArMTE5LDggQEAgY2xhc3MgU3Vic3BhY2UgewogICAgIENTdHJpbmcgbV9uYW1lOwogCiAgICAg
Ym9vbCBtX2lzSXNvU3Vic3BhY2UgeyBmYWxzZSB9OworcHJvdGVjdGVkOgorICAgIHVpbnQ4X3Qg
bV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCBhOGVkNmI4Mjg5MDBmZTAyMTNiZGVkOWM2
Mzc1Yzk3YjBhMzZjODU5Li40OTRlNjQ4OWZlNGExZGIyMmRiMjc0NjdlNjkxNzJhYTM3MjAyZGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC00MjEsNiArNDIxLDkgQEAgY2xhc3MgRmFzdEJp
dFZlY3RvckltcGwgewogICAgIH0KICAgICAKICAgICB0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUg
d29yZFZpZXcoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzLnZpZXcoKTsgfQorCisgICAgV29yZHMm
IHVuc2FmZVdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQorICAgIGNvbnN0IFdvcmRzJiB1bnNh
ZmVXb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHM7IH0KICAgICAKIHByaXZhdGU6CiAgICAg
Ly8gWW91J2QgdGhpbmsgdGhhdCB3ZSBjb3VsZCByZW1vdmUgdGhpcyBmcmllbmQgaWYgd2UgdXNl
ZCBwcm90ZWN0ZWQsIGJ1dCB5b3UnZCBiZSB3cm9uZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383519</attachid>
            <date>2019-11-13 16:56:12 -0800</date>
            <delta_ts>2019-11-13 17:03:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113165611.patch</filename>
            <type>text/plain</type>
            <size>62027</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li45ZGM1NjUwNDYyNjhiM2E1
OTNiMzdmN2ZjZjQ4ZjY3NDg5ZTE1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBh
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IGFwcGx5aW5nIElzb1N1YnNwYWNlIHRvIGFsbCBKU0NlbGxzLiBUaGlzIG1lYW5zIHRoYXQg
SXNvU3Vic3BhY2Ugc2hvdWxkIGJlIHNtYWxsIGVub3VnaCwKKyAgICAgICAgc28gdGhhdCB3ZSBj
YW4gaG9sZCBtYW55IElzb1N1YnNwYWNlcyB3aXRob3V0IGNvbnNpZGVyaW5nIGFib3V0IG1lbW9y
eSByZWdyZXNzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVjZSBzZXZl
cmFsIHRoaW5ncyB0byBzaHJpbmsgc2l6ZW9mKElzb1N1YnNwYWNlKSBmcm9tIDUyOCB0byAzODQu
CisKKyAgICAgICAgMS4gQWRqdXN0aW5nIG1lbWJlcnMgdG8gcmVtb3ZlIHNvbWUgcGFkZGluZ3Mu
CisgICAgICAgIDIuIFJlbW92ZSBtX2hlYXAgZmllbGQgc2luY2UgdGhpcyBjYW4gYmUgZ290IGZy
b20gdGhlIGNhbGxlciBlYXNpbHkuCisgICAgICAgIDMuIE1ha2UgTWFya2VkU3BhY2U6OmhlYXAo
KSBlZmZpY2llbnQ6IGp1c3QgZG9pbmcgcG9pbnRlciBhcml0aG1ldGljLgorICAgICAgICA0LiBS
ZW1vdmUgbV9zaXplIGZpZWxkIGZyb20gSXNvU3Vic3BhY2Ugc2luY2UgQmxvY2tEaXJlY3Rvcnkg
a25vd3MgY2VsbFNpemUuCisgICAgICAgIDUuIEludHJvZHVjZSBCbG9ja0RpcmVjdG9yeUJpdHMs
IHdoaWNoIHJlcGFsY2VzIDkgRmFzdEJpdFZlY3RvciBpbiBCbG9ja0RpcmVjdG9yeSB0byB0aGlz
IG9uZSBjbGFzcy4KKyAgICAgICAgICAgU2luY2UgYWxsIEZhc3RCaXRWZWN0b3IgaGFzIHRoZSBz
YW1lIHNpemUsIHdlIHNob3VsZCBub3QgaGF2ZSBhIHNpemUgZmllbGQgZm9yIGVhY2ggRmFzdEJp
dFZlY3Rvci4KKyAgICAgICAgICAgV2UgcmV1c2UgRmFzdEJpdFZlY3RvcidzIFZpZXcgbWVjaGFu
aXNtIHRvIGtlZXAgdGhlIHNhbWUgZXJnb25vbWljcyB3aGlsZSBtYWtpbmcgQmxvY2tEaXJlY3Rv
cnlCaXRzCisgICAgICAgICAgIG11Y2ggc21hbGxlci4gV2UgcHV0IDkgdWludDMyX3QgYXMgU2Vn
bWVudCwgYW5kIG1hbmFnZSBWZWN0b3I8U2VnbWVudD4gaW4gdGhpcyBkYXRhIHN0cnVjdHVyZS4g
U2luY2UKKyAgICAgICAgICAgd2UgdG91Y2ggc2V2ZXJhbCBiaXRzIGF0IHRoZSBzYW1lIHRpbWUg
Zm9yIHRoZSBzYW1lIGJsb2NrLWluZGV4LCB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIGNvbXBhY3Qg
YW5kCisgICAgICAgICAgIGVmZmljaWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6cmVnaXN0ZXJEaXJlY3RvcnkpOgorICAgICAgICAqIGhlYXAv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9yLmg6Cisg
ICAgICAgICogaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkFsbG9jYXRv
cjo6YWxsb2NhdGUgY29uc3QpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuY3BwOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpyZW1v
dmVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZv
ckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9j
a1RvU3dlZXApOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c3dlZXApOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmFzc2VydE5vVW5zd2VwdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpw
YXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6ZHVtcEJpdHMpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuaDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmNlbGxLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVj
dG9yeTo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmhlYXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
V29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxsKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpyZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJs
b2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpD
b21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KToKKyAgICAgICAgKEpTQzo6Q29tcGxl
dGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRl
Tm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKToKKyAgICAg
ICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6
OmZvckVhY2hNYXJrZWRDZWxsKToKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKToKKyAgICAgICAgKEpTQzo6SXNv
U3Vic3BhY2U6OnRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcik6CisgICAgICAgICogaGVhcC9Jc29T
dWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6Y2VsbFNpemUpOgorICAgICAg
ICAoSlNDOjpJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbCk6CisgICAgICAgIChK
U0M6Oklzb1N1YnNwYWNlOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZVBlclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92
aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxv
Y2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFs
bG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAqIGhl
YXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpy
ZWFwV2Vha1NldHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtp
bmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aGVhcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmhlYXAgY29uc3QpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5oOgorCiAyMDE5LTExLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CiAKICAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5h
cnkgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA1NWU3OTUxNWEyYmQxOWIzNDM1MGZhNjlkZTk5MzhlZmE2OGUzZTFi
Li5lMWQ3OGQzZGIxZmY1MDhkM2NjNjk1YTYxMjZhMTU1ZjBjNmUxMjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQmxvY2tEaXJlY3RvcnkncyBiaXRzIHNob3VsZCBiZSBjb21wYWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0
Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3Jk
cyk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3JkcyBjb25zdCk6
CisKIDIwMTktMTEtMTEgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgog
CiAgICAgICAgIFVUQyBvZmZzZXQgZm9yIFNhbW9hIGlzIG1pc2NhbGN1bGF0ZWQgd2hlbiAhSEFW
RShUSU1FR00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGNlYjNmYzA5
OTA3MmFjMzY2MTZlMTYzNjk2NmI1M2JiNTM3NWJjMi4uYjZmMGFlZDMwZTI0ZDNhZjVlM2RhYTFl
OTI3MjVlNDJlZTE0M2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NTY5LDYgKzU2OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKICAgICBoZWFwL0FsbG9jYXRvckZvck1v
ZGUuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnkuaAorICAgIGhlYXAvQmxvY2tEaXJlY3RvcnlC
aXRzLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCiAgICAgaGVhcC9DZWxsQXR0
cmlidXRlcy5oCiAgICAgaGVhcC9DZWxsQ29udGFpbmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGQyN2Q5ODEwMTQzNzg5NDRhM2ExNjI4NzVhODU1MzJhOTE2Y2JkNi4uMzYz
YmVmNDE4MTg1NGZjOWZlMmU1OGQyOTJjYTI3ODljYmI4ODM2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw3IEBACiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUx
RkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9u
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVk
SURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsg
fTsKKwkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjUyRTIyMzdD
QTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAv
KiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg5M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyog
QXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzhEOTk5QzIy
MUI3OEJCMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGlibGVQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDk5OUEyMjFCNzg5RjAwRDUwNDc0
IC8qIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzkwMDYyMTIyMDhCRkM0MDAxMDE5Q0YgLyogU3Vic3Bh
Y2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTAwNjIwMjIwOEJGQzMwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00OTQ3LDYgKzQ5NDgsNyBA
QAogCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVySGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUg
LyogQnVpbHRpbk5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODUwQjE0
MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdNaW5pZmllZElESW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR01pbmlmaWVkSURJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVF
RSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQmxvY2tEaXJlY3RvcnlCaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUu
bHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVy
YXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2
MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTAy
LDYgKzYxMDQsNyBAQAogCQkJCTBGQjQ2NzdFMUZEREE2RTUwMDNGQ0IwOSAvKiBBdG9tSW5kaWNl
cy5oICovLAogCQkJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5j
cHAgKi8sCiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5Lmgg
Ki8sCisJCQkJRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5o
ICovLAogCQkJCTBGN0RGMTQ1MUUyQkVGNjgwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQ2VsbEF0dHJpYnV0ZXMu
Y3BwICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5o
ICovLApAQCAtOTAwOCw2ICs5MDExLDcgQEAKIAkJCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY0QjI3MjFBNzg0QkFG
MDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0
REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
ODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29s
ZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkg
LyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCmluZGV4IGU3Yzkz
YzI2MzY3OTc3MGIyZDAxZGYyZGUwYmZlY2ZmODZmMWNjMDguLmVhMzJkZjNjMGJjYzFkZTE3NmVj
ZmE4ZjZmMjdlMDI0YTAyOTU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCkBAIC00MCwxMiArNDAsMTIgQEAgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6fkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKQogewogfQogCi12
b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5KiBkaXJlY3RvcnkpCit2b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGly
ZWN0b3J5KEhlYXAmIGhlYXAsIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpcmVjdG9yeS0+bmV4dERpcmVjdG9yeUluQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcigpKTsKICAgICAKICAgICBpZiAobV9kaXJlY3Rvcmllcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBkaXJlY3RvcnktPmhlYXAoKS0+
d29ybGRJc1N0b3BwZWQoKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaGVhcCwgIVRocmVhZDo6
bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAud29ybGRJc1N0b3BwZWQoKSk7CiAgICAgICAgIGZvciAo
U3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJzcGFjZXMuZmlyc3QoKTsgc3Vic3BhY2U7IHN1YnNw
YWNlID0gc3Vic3BhY2UtPm5leHRTdWJzcGFjZUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKQog
ICAgICAgICAgICAgc3Vic3BhY2UtPmRpZENyZWF0ZUZpcnN0RGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oCmluZGV4IDY2NDQyYWRmMzE4YTU2N2Q4MmFjYzBkZjgyMjJlMzVjYTFiNTRh
ZGMuLjk1NjY5NjM1ZDhkZDUxMzFkOGVmYmFiY2FlYWU2YjBmZTdlZDFiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKQEAg
LTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCbG9ja0RpcmVjdG9yeTsK
K2NsYXNzIEhlYXA7CiBjbGFzcyBTdWJzcGFjZTsKIAogY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9j
YXRvciB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Igewog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgPSAwOwogCi0g
ICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSopOworICAgIHZvaWQgcmVn
aXN0ZXJEaXJlY3RvcnkoSGVhcCYsIEJsb2NrRGlyZWN0b3J5Kik7CiAgICAgQmxvY2tEaXJlY3Rv
cnkqIGZpcnN0RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rvcmllcy5maXJzdCgp
OyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3Vic3BhY2UoU3Vic3BhY2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKaW5kZXggMjI5MTU4ZmNlNDIwZjFlNzk5MjA5ZGMxNDQ4
YjgzMjE4MGEyZjc5YS4uNzIzOWQyMjlmY2U5MmJiYTA0NTQwMDNlNDlkNTI4ZjA3ZTMyN2NmNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7
CiBjbGFzcyBMb2NhbEFsbG9jYXRvcjsKIAogLy8gVGhpcyBhYnN0cmFjdHMgaG93IHdlIHJlZmVy
IHRvIExvY2FsQWxsb2NhdG9yIHNvIHRoYXQgd2UgY291bGQgZXZlbnR1YWxseSBzdXBwb3J0IHRo
cmVhZC1sb2NhbApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBBbGxvY2F0b3IgewogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGUpIGNvbnN0OworICAgIHZvaWQqIGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVy
cmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSkgY29uc3Q7CiAgICAgCiAgICAgdW5z
aWduZWQgY2VsbFNpemUoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsbG9jYXRvcklubGluZXMuaAppbmRleCAxNzU3MzI3M2M0OTlmYmM1OGE3YjRmZWJmZjdh
MGQ5YmM5ZGQ0MmVmLi42OTViMDg5ZDhjNTcxYTdiYjA4MGM3ZDljMWVhNmZjODlkOGU4MzE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9ySW5saW5lcy5oCkBAIC0z
MCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIEFs
bG9jYXRvcjo6YWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqIGNvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZSBtb2RlKSBjb25zdAorQUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFs
bG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBjb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9sb2NhbEFsbG9jYXRvci0+
YWxsb2NhdGUoY29udGV4dCwgbW9kZSk7CisgICAgcmV0dXJuIG1fbG9jYWxBbGxvY2F0b3ItPmFs
bG9jYXRlKGhlYXAsIGNvbnRleHQsIG1vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAppbmRleCA3ZWVl
NGE4NzQ2YjZiZDE4ODUyYTdhYjYyODc0YmJhZjU3YWJlMjg5Li4wY2M0YjQ3OWJmNzE3YjQ2MDA0
M2JiY2YwNGNiNjYwM2MyMzA2M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnkuY3BwCkBAIC0zOCw5ICszOCw4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1CbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkoSGVhcCogaGVhcCwgc2l6ZV90IGNlbGxT
aXplKQorQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5KHNpemVfdCBjZWxsU2l6ZSkKICAg
ICA6IG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNlbGxTaXplKSkKLSAgICAsIG1f
aGVhcChoZWFwKQogewogfQogCkBAIC03Niw3ICs3NSw3IEBAIGJvb2wgQmxvY2tEaXJlY3Rvcnk6
OmlzUGFnZWRPdXQoTW9ub3RvbmljVGltZSBkZWFkbGluZSkKIAogTWFya2VkQmxvY2s6OkhhbmRs
ZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiB7Ci0gICAgbV9lbXB0
eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBtX2Vt
cHR5Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsK
ICAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsKQEAgLTg1LDcg
Kzg0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJs
b2NrVG9TdGVhbCgpCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJs
b2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYgYWxsb2NhdG9yKQogewogICAgIGZvciAo
OzspIHsKLSAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9j
YXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25D
dXJzb3IsIHRydWUpOworICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yID0gKG1f
Yml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgfCBtX2JpdHMuZW1wdHkoKSkuZmluZEJpdChh
bGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKICAgICAgICAgaWYgKGFsbG9jYXRv
ci5tX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAtOTYsMTEgKzk1LDExIEBAIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2Nh
dG9yJiBhbGxvCiAgICAgfQogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9y
eTo6dHJ5QWxsb2NhdGVCbG9jaygpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9y
eTo6dHJ5QWxsb2NhdGVCbG9jayhIZWFwJiBoZWFwKQogewogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIHN1YnNwYWNlKCktPmFs
aWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxl
ID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShoZWFwLCBzdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKCkpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKQEAgLTExOCwyMSArMTE3LDEyIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2Nr
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkg
PSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOwogICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoYmxvY2spOwog
ICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgewotICAgICAg
ICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAgICAgICAgICAgICBOb0xvY2tpbmdOZWNlc3Nh
cnksCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsIHZlY3Rvci5udW1CaXRzKCkgPT0g
b2xkQ2FwYWNpdHkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgCisgICAgICAg
ICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAg
ICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9iaXR2ZWN0b3JMb2NrKTsKICAgICAg
ICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJpdHMobV9ibG9ja3MuY2FwYWNpdHkoKSk7Ci0g
ICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAgICAgICAgICAgICAgIGxvY2tlciwKLSAg
ICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAg
ICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgbV9iaXRzLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRp
Y2VzLnRha2VMYXN0KCk7CkBAIC0xNDIsOCArMTMyLDggQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6
YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgCiAgICAgZm9yRWFjaEJp
dFZlY3RvcigKICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RC
aXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2
ZWN0b3JbaW5kZXhdKTsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmKSB7CisgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKHZlY3RvclJlZiwgIXZlY3RvclJlZltpbmRleF0pOwogICAgICAgICB9
KTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBibG9jayBsZWFybnMg
b2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMoKS4KQEAgLTE2NSw4ICsxNTUsOCBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBob2xkTG9jayhtX2JpdHZl
Y3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAg
ICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICBbJl0oYXV0byB2
ZWN0b3JSZWYpIHsKKyAgICAgICAgICAgIHZlY3RvclJlZltibG9jay0+aW5kZXgoKV0gPSBmYWxz
ZTsKICAgICAgICAgfSk7CiAgICAgCiAgICAgYmxvY2stPmRpZFJlbW92ZUZyb21EaXJlY3Rvcnko
KTsKQEAgLTE5Miw3ICsxODIsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxs
b2NhdGlvbigpCiAgICAgbV91bnN3ZXB0Q3Vyc29yID0gMDsKICAgICBtX2VtcHR5Q3Vyc29yID0g
MDsKICAgICAKLSAgICBtX2VkZW4uY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMuZWRlbigpLmNsZWFy
QWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBhZ2Fpbi4KQEAgLTIzNywyMCAr
MjI3LDIwIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0
aW9uKCkKICAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkg
b2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxsCiAgICAgLy8gY29s
bGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxs
IHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKICAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMg
ZWRlbi4KLSAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOwotICAgIG1fbWFya2luZ1Jl
dGlyZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkuY2xlYXJBbGwo
KTsKKyAgICBtX2JpdHMubWFya2luZ1JldGlyZWQoKS5jbGVhckFsbCgpOwogfQogCiB2b2lkIEJs
b2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIHsKLSAgICBtX2FsbG9jYXRlZC5jbGVhckFsbCgp
OworICAgIG1fYml0cy5hbGxvY2F0ZWQoKS5jbGVhckFsbCgpOwogICAgIAogICAgIC8vIEl0J3Mg
c3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29tcHJlaGVuZCwgYnV0IHRoZSBlbmQtb2Yt
bWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KICAgICAvLyBrbm93IHdoYXQga2luZCBvZiBj
b2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBpcyBhbHJlYWR5IGVuY29kZWQgaW4gdGhl
IG1fbWFya2luZ1hZWgogICAgIC8vIHZlY3RvcnMuCiAgICAgCi0gICAgbV9lbXB0eSA9IG1fbGl2
ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKLSAgICBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBt
X2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIG1fYml0
cy5lbXB0eSgpID0gbV9iaXRzLmxpdmUoKSAmIH5tX2JpdHMubWFya2luZ05vdEVtcHR5KCk7Cisg
ICAgbV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiBtX2Jp
dHMubWFya2luZ05vdEVtcHR5KCkgJiB+bV9iaXRzLm1hcmtpbmdSZXRpcmVkKCk7CiAKICAgICBp
ZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBzb21lIGJsb2Nr
cyB0aGF0IHdlIGRpZG4ndCBhbGxvY2F0ZSBvdXQgb2YgaW4gdGhlIGxhc3QgY3ljbGUsIGJ1dCB3
ZSBzd2VwdCB0aGVtLiBUaGlzCkBAIC0yNTgsNyArMjQ4LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9y
eTo6ZW5kTWFya2luZygpCiAgICAgICAgIC8vIGRlc3RydWN0b3JzIGFnYWluLiBUaGF0J3MgZmlu
ZSBiZWNhdXNlIG9mIHphcHBpbmcuIFRoZSBvbmx5IHRpbWUgd2hlbiB3ZSBjYW5ub3QgZm9yZ2V0
IGlzIHdoZW4KICAgICAgICAgLy8gd2UganVzdCBhbGxvY2F0ZSBhIGJsb2NrIG9yIHdoZW4gd2Ug
bW92ZSBhIGJsb2NrIGZyb20gb25lIHNpemUgY2xhc3MgdG8gYW5vdGhlci4gVGhhdCBkb2Vzbid0
CiAgICAgICAgIC8vIGhhcHBlbiBoZXJlLgotICAgICAgICBtX2Rlc3RydWN0aWJsZSA9IG1fbGl2
ZTsKKyAgICAgICAgbV9iaXRzLmRlc3RydWN0aWJsZSgpID0gbV9iaXRzLmxpdmUoKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKGZhbHNlKSB7CkBAIC0yNjksMTcgKzI1OSwxNyBAQCB2b2lkIEJsb2Nr
RGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RV
bnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKQogewotICAgIG1fdW5zd2VwdCB8PSBtX2VkZW47Cisg
ICAgbV9iaXRzLnVuc3dlcHQoKSB8PSBtX2JpdHMuZWRlbigpOwogfQogCiB2b2lkIEJsb2NrRGly
ZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpCiB7Ci0gICAgbV91bnN3
ZXB0ID0gbV9saXZlOworICAgIG1fYml0cy51bnN3ZXB0KCkgPSBtX2JpdHMubGl2ZSgpOwogfQog
CiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrVG9Td2VlcCgp
CiB7Ci0gICAgbV91bnN3ZXB0Q3Vyc29yID0gbV91bnN3ZXB0LmZpbmRCaXQobV91bnN3ZXB0Q3Vy
c29yLCB0cnVlKTsKKyAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX2JpdHMudW5zd2VwdCgpLmZpbmRC
aXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV91bnN3ZXB0Q3Vyc29yID49IG1f
YmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxv
Y2tzW21fdW5zd2VwdEN1cnNvcl07CkBAIC0yODcsNyArMjc3LDcgQEAgTWFya2VkQmxvY2s6Okhh
bmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja1RvU3dlZXAoKQogCiB2b2lkIEJsb2NrRGly
ZWN0b3J5Ojpzd2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0LmZvckVhY2hTZXRCaXQoCisgICAgbV9i
aXRzLnVuc3dlcHQoKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkg
ewogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRl
eF07CiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVsbHB0cik7CkBAIC0yOTYsNyArMjg2LDcg
QEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpz
aHJpbmsoKQogewotICAgIChtX2VtcHR5ICYgfm1fZGVzdHJ1Y3RpYmxlKS5mb3JFYWNoU2V0Qml0
KAorICAgIChtX2JpdHMuZW1wdHkoKSAmIH5tX2JpdHMuZGVzdHJ1Y3RpYmxlKCkpLmZvckVhY2hT
ZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBtYXJrZWRT
cGFjZSgpLmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTMwNyw3
ICsyOTcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQoKQogICAgIGlm
IChBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAobV91bnN3
ZXB0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9iaXRzLnVuc3dlcHQoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBkYXRhTG9nKCJBc3NlcnRpb24gZmFpbGVkOiB1bnN3ZXB0
IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOwpAQCAtMzI5LDcgKzMxOSw3IEBAIFJlZlB0
cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBCbG9ja0RpcmVjdG9yeTo6cGFy
YWxsZWxOb3RFbXB0eUJsb2NrCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOwotICAgICAgICAgICAgbV9pbmRleCA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVt
cHR5LmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CisgICAgICAgICAgICBtX2luZGV4ID0gbV9kaXJl
Y3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CiAg
ICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nrcy5zaXplKCkpIHsK
ICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMzU3LDE4ICszNDcsMTkgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZHVtcEJp
dHMoUHJpbnRTdHJlYW0mIG91dCkKICAgICB1bnNpZ25lZCBtYXhOYW1lTGVuZ3RoID0gMDsKICAg
ICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwK
LSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAg
ICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIFVO
VVNFRF9QQVJBTSh2ZWN0b3JSZWYpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
bGVuKG5hbWUpOwogICAgICAgICAgICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVM
ZW5ndGgsIGxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3JX
aXRoTmFtZSgKICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RC
aXRWZWN0b3ImIHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0oYXV0byB2
ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiICAg
ICIsIG5hbWUsICI6ICIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF4TmFtZUxl
bmd0aCAtIHN0cmxlbihuYW1lKTsgaS0tOykKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
KTsKLSAgICAgICAgICAgIG91dC5wcmludCh2ZWN0b3IsICJcbiIpOworICAgICAgICAgICAgb3V0
LnByaW50KHZlY3RvclJlZiwgIlxuIik7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAppbmRleCBhN2JjYWE2YjllYmQ0YmFkNjNk
N2U3ODExMDkxOGUzZTQzNjM4N2QxLi4wMjg4ODBiMjdkY2Q1MmM4NTA0ZDY2MWNhMWM3NDAwZGMy
YmMyNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZh
aWx1cmVNb2RlLmgiCisjaW5jbHVkZSAiQmxvY2tEaXJlY3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAi
Q2VsbEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkxvY2Fs
QWxsb2NhdG9yLmgiCkBAIC00NCwxOSArNDUsNiBAQCBjbGFzcyBJc29DZWxsU2V0OwogY2xhc3Mg
TWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9S
X0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykgXAotICAgIG1hY3JvKGxpdmUsIExpdmUp
IC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9c
Ci0gICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBo
YXZlIG5vIGxpdmUgb2JqZWN0cy4gKi8gXAotICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVk
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMu
ICovXAotICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90
RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0
aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCku
ICovIFwKLSAgICBtYWNybyhkZXN0cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBt
YWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBv
YmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKLSAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5j
cmVtZW50YWwgc3dlZXBlci4gKi9cCi0gICAgXAotICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBk
dXJpbmcgbWFya2luZy4gKi9cCi0gICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90
RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwK
LSAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLwotCiAvLyBGSVhNRTogV2UgZGVmaW5lZCBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6CiAvLwogLy8g
ICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCkBAIC03OCw3ICs2Niw3IEBA
IGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiBwdWJsaWM6Ci0gICAgQmxvY2tEaXJlY3RvcnkoSGVhcCosIHNpemVfdCBjZWxs
U2l6ZSk7CisgICAgQmxvY2tEaXJlY3Rvcnkoc2l6ZV90IGNlbGxTaXplKTsKICAgICB+QmxvY2tE
aXJlY3RvcnkoKTsKICAgICB2b2lkIHNldFN1YnNwYWNlKFN1YnNwYWNlKik7CiAgICAgdm9pZCBs
YXN0Q2hhbmNlVG9GaW5hbGl6ZSgpOwpAQCAtOTgsNyArODYsNiBAQCBjbGFzcyBCbG9ja0RpcmVj
dG9yeSB7CiAgICAgYm9vbCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hdHRy
aWJ1dGVzLmRlc3RydWN0aW9uID09IE5lZWRzRGVzdHJ1Y3Rpb247IH0KICAgICBEZXN0cnVjdGlv
bk1vZGUgZGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b247IH0KICAgICBIZWFwQ2VsbDo6S2luZCBjZWxsS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0
cmlidXRlcy5jZWxsS2luZDsgfQotICAgIEhlYXAqIGhlYXAoKSB7IHJldHVybiBtX2hlYXA7IH0K
IAogICAgIGJvb2wgaXNGcmVlTGlzdGVkQ2VsbChjb25zdCB2b2lkKiB0YXJnZXQpOwogCkBAIC0x
MTUsOSArMTAyLDkgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIExvY2smIGJpdHZlY3Rv
ckxvY2soKSB7IHJldHVybiBtX2JpdHZlY3RvckxvY2s7IH0KIAogI2RlZmluZSBCTE9DS19ESVJF
Q1RPUllfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAot
ICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF07IH0gXAor
ICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXpl
X3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cy5pcyAjIyBjYXBpdGFsQml0TmFtZShpbmRl
eCk7IH0gXAogICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImIGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIGNvbnN0IHsgcmV0dXJuIGlz
ICMjIGNhcGl0YWxCaXROYW1lKGxvY2tlciwgYmxvY2stPmluZGV4KCkpOyB9IFwKLSAgICB2b2lk
IHNldElzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKSB7IG1fICMjIGxvd2VyQml0TmFtZVtpbmRleF0gPSB2YWx1ZTsgfSBc
CisgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYs
IHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtX2JpdHMuc2V0SXMgIyMgY2FwaXRhbEJpdE5h
bWUoaW5kZXgsIHZhbHVlKTsgfSBcCiAgICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShj
b25zdCBBYnN0cmFjdExvY2tlciYgbG9ja2VyLCBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaywg
Ym9vbCB2YWx1ZSkgeyBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5pbmRl
eCgpLCB2YWx1ZSk7IH0KICAgICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJ
UkVDVE9SWV9CSVRfQUNDRVNTT1JTKQogI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNT
T1JTCkBAIC0xMjYsNyArMTEzLDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQg
Zm9yRWFjaEJpdFZlY3Rvcihjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMp
CiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0TmFt
ZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOwor
ICAgICAgICBmdW5jKG1fYml0cy5sb3dlckJpdE5hbWUoKSk7CiAgICAgICAgIEZPUl9FQUNIX0JM
T0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYg
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSwogICAgIH0KQEAgLTEzNSw3ICsxMjIsNyBAQCBj
bGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUg
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSBcCi0gICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOwor
ICAgICAgICBmdW5jKG1fYml0cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0YWxCaXROYW1lKTsKICAg
ICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0NB
TExCQUNLKTsKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpAQCAt
MTY2LDE3ICsxNTMsMTQgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIAogICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja0ZvckFsbG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImKTsK
ICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jayhIZWFwJik7CiAgICAgCiAgICAg
VmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKIAogICAgIC8vIE11dGF0b3IgdXNlcyB0aGlzIHRvIGd1
YXJkIHJlc2l6aW5nIHRoZSBiaXR2ZWN0b3JzLiBUaG9zZSB0aGluZ3MgaW4gdGhlIEdDIHRoYXQg
bWF5IHJ1bgogICAgIC8vIGNvbmN1cnJlbnRseSB0byB0aGUgbXV0YXRvciBtdXN0IGxvY2sgdGhp
cyB3aGVuIGFjY2Vzc2luZyB0aGUgYml0dmVjdG9ycy4KLSNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZ
X0JJVF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgRmFz
dEJpdFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7Ci0gICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNU
T1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKQotI3VuZGVmIEJMT0NLX0RJ
UkVDVE9SWV9CSVRfREVDTEFSQVRJT04KKyAgICBCbG9ja0RpcmVjdG9yeUJpdHMgbV9iaXRzOwog
ICAgIExvY2sgbV9iaXR2ZWN0b3JMb2NrOwogICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2Nr
OwogICAgIENlbGxBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKQEAgLTE5MCw3ICsxNzQsNiBAQCBj
bGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgCiAgICAgLy8gRklYTUU6IEFsbCBvZiB0aGVzZSBz
aG91bGQgcHJvYmFibHkgYmUgcmVmZXJlbmNlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTg4Ci0gICAgSGVhcCogbV9oZWFwIHsgbnVsbHB0ciB9
OwogICAgIFN1YnNwYWNlKiBtX3N1YnNwYWNlIHsgbnVsbHB0ciB9OwogICAgIEJsb2NrRGlyZWN0
b3J5KiBtX25leHREaXJlY3RvcnkgeyBudWxscHRyIH07CiAgICAgQmxvY2tEaXJlY3RvcnkqIG1f
bmV4dERpcmVjdG9yeUluU3Vic3BhY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNTU2OTRhZWI5
NGZjYjY2NDA5Njk1ZjA1MTJmZGM5YTNjNjYyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApAQCAtMCwwICsxLDI0MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEZP
Ul9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZl
KSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICov
XAorICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQg
aGF2ZSBubyBsaXZlIG9iamVjdHMuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRl
ZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3Rz
LiAqL1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJl
dGlyZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwp
LiAqLyBcCisgICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQg
b2YgYWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCisgICAg
bWFjcm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcg
b2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2Vw
dCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGlu
Y3JlbWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQg
ZHVyaW5nIG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05v
dEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBc
CisgICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworY2xhc3MgQmxvY2tEaXJlY3RvcnlC
aXRzIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGJpdHNQZXJTZWdtZW50ID0gMzI7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBzZWdtZW50U2hpZnQgPSA1OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgaW5kZXhNYXNrID0gKDFVIDw8IHNlZ21lbnRTaGlmdCkgLSAxOworICAgIHN0YXRpY19h
c3NlcnQoKDEgPDwgc2VnbWVudFNoaWZ0KSA9PSBiaXRzUGVyU2VnbWVudCk7CisKKyNkZWZpbmUg
QkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NPVU5UKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5h
bWUpICsgMQorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZCbG9ja0RpcmVj
dG9yeUJpdEtpbmRzID0gMCBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVD
VE9SWV9CSVRfS0lORF9DT1VOVCk7CisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0NP
VU5UCisKKyAgICBlbnVtIGNsYXNzIEtpbmQgeworI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklU
X0tJTkRfREVDTEFSQVRJT04obG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgXAorICAgICAg
ICBjYXBpdGFsQml0TmFtZSwKKyAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChC
TE9DS19ESVJFQ1RPUllfQklUX0tJTkRfREVDTEFSQVRJT04pCisjdW5kZWYgQkxPQ0tfRElSRUNU
T1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OCisgICAgfTsKKworICAgIGNsYXNzIFNlZ21lbnQgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgU2VnbWVudCgpID0gZGVmYXVsdDsKKyAgICAgICAgc3RkOjph
cnJheTx1aW50MzJfdCwgbnVtYmVyT2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRzPiBtX2RhdGEgeyB9
OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAgY2xhc3MgQmxvY2tEaXJl
Y3RvcnlCaXRWZWN0b3JXb3JkVmlldyB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgdXNpbmcgVmlld1R5cGUgPSBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvcldvcmRWaWV3OworCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXcoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmll
dyhjb25zdCBTZWdtZW50KiBzZWdtZW50cywgc2l6ZV90IG51bUJpdHMpCisgICAgICAgICAgICA6
IG1fc2VnbWVudHMoc2VnbWVudHMpCisgICAgICAgICAgICAsIG1fbnVtQml0cyhudW1CaXRzKQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX251bUJpdHM7CisgICAgICAgIH0KKworICAg
ICAgICB1aW50MzJfdCB3b3JkKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGluZGV4IDwgV1RGOjpmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0
cygpKSk7CisgICAgICAgICAgICByZXR1cm4gbV9zZWdtZW50c1tpbmRleF0ubV9kYXRhW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAgIH0KKworICAgICAgICB1aW50MzJfdCYg
d29yZChzaXplX3QgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8
IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8U2VnbWVudCo+KG1fc2VnbWVudHMpW2luZGV4XS5tX2RhdGFbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpXTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY2xl
YXJBbGwoKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGlu
ZGV4IDwgV1RGOjpmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cygpKTsgKytpbmRleCkK
KyAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21lbnRzKVtpbmRleF0u
bV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV0gPSAwOworICAgICAgICB9CisKKyAg
ICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldyB2aWV3KCkgY29uc3QgeyByZXR1
cm4gKnRoaXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IFNlZ21lbnQqIG1fc2Vn
bWVudHMgeyBudWxscHRyIH07CisgICAgICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CisgICAg
fTsKKworICAgIHRlbXBsYXRlPEtpbmQga2luZD4KKyAgICB1c2luZyBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclZpZXcgPSBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPEJsb2NrRGlyZWN0b3J5Qml0VmVj
dG9yV29yZFZpZXc8a2luZD4+OworCisgICAgdGVtcGxhdGU8S2luZCBraW5kPgorICAgIGNsYXNz
IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVmIGZpbmFsIDogcHVibGljIEJsb2NrRGlyZWN0b3J5
Qml0VmVjdG9yVmlldzxraW5kPiB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclJlZihCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtp
bmQ+IHZpZXcpCisgICAgICAgICAgICA6IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5k
Pih2aWV3KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0
b3I9KGNvbnN0IFdURjo6RmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90aGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtp
bmQ+OjpudW1CaXRzKCkgPT0gb3RoZXIubnVtQml0cygpKTsKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6YXJyYXlMZW5ndGgo
KTsgaS0tOykKKyAgICAgICAgICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2lu
ZD46OnVuc2FmZVdvcmRzKCkud29yZChpKSA9IG90aGVyLnVuc2FmZVdvcmRzKCkud29yZChpKTsK
KyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIE90aGVyV29yZHM+CisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yUmVm
JiBvcGVyYXRvcnw9KGNvbnN0IFdURjo6RmFzdEJpdFZlY3RvckltcGw8T3RoZXJXb3Jkcz4mIG90
aGVyKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JWaWV3PGtpbmQ+OjpudW1CaXRzKCkgPT0gb3RoZXIubnVtQml0cygpKTsKKyAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6YXJy
YXlMZW5ndGgoKTsgaS0tOykKKyAgICAgICAgICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
clZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCkud29yZChpKSB8PSBvdGhlci51bnNhZmVXb3Jkcygp
LndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlC
aXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLmNsZWFyQWxsKCk7CisgICAgICAgIH0K
KworICAgICAgICBjbGFzcyBCaXRSZWZlcmVuY2UgeworICAgICAgICBwdWJsaWM6CisgICAgICAg
ICAgICBCaXRSZWZlcmVuY2UoKSB7IH0KKworICAgICAgICAgICAgQml0UmVmZXJlbmNlKHVpbnQz
Ml90KiB3b3JkLCB1aW50MzJfdCBtYXNrKQorICAgICAgICAgICAgICAgIDogbV93b3JkKHdvcmQp
CisgICAgICAgICAgICAgICAgLCBtX21hc2sobWFzaykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEhKCptX3dvcmQgJiBtX21hc2spOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBCaXRSZWZlcmVuY2UmIG9wZXJhdG9yPShib29s
IHZhbHVlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAg
ICAgICAgICAgICAgICAgKm1fd29yZCB8PSBtX21hc2s7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAqbV93b3JkICY9IH5tX21hc2s7CisgICAgICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAg
ICAgICB1aW50MzJfdCogbV93b3JkIHsgbnVsbHB0ciB9OworICAgICAgICAgICAgdWludDMyX3Qg
bV9tYXNrIHsgMCB9OworICAgICAgICB9OworCisgICAgICAgIEJpdFJlZmVyZW5jZSBhdChzaXpl
X3QgaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpKTsKKyAgICAgICAgICAgIHJldHVy
biBCaXRSZWZlcmVuY2UoJkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6dW5zYWZl
V29yZHMoKS53b3JkKGluZGV4ID4+IDUpLCAxIDw8IChpbmRleCAmIDMxKSk7CisgICAgICAgIH0K
KworICAgICAgICBCaXRSZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhdChpbmRleCk7CisgICAgICAgIH0KKyAgICB9OworCisj
ZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKGxvd2VyQml0TmFtZSwgY2FwaXRh
bEJpdE5hbWUpICAgICBcCisgICAgYm9vbCBpcyAjIyBjYXBpdGFsQml0TmFtZShzaXplX3QgaW5k
ZXgpIGNvbnN0IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGxvd2VyQml0TmFtZSgpW2luZGV4
XTsgXAorICAgIH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGlu
ZGV4LCBib29sIHZhbHVlKSBcCisgICAgeyBcCisgICAgICAgIGxvd2VyQml0TmFtZSgpW2luZGV4
XSA9IHZhbHVlOyBcCisgICAgfSBcCisgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtp
bmQ6OmNhcGl0YWxCaXROYW1lPiBsb3dlckJpdE5hbWUoKSBjb25zdCBcCisgICAgeyBcCisgICAg
ICAgIHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8S2luZDo6Y2FwaXRhbEJpdE5h
bWU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+
KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0gXAorICAgIEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yUmVmPEtpbmQ6OmNhcGl0YWxCaXROYW1lPiBsb3dlckJpdE5hbWUoKSBc
CisgICAgeyBcCisgICAgICAgIHJldHVybiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZjxLaW5k
OjpjYXBpdGFsQml0TmFtZT4oQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxLaW5kOjpj
YXBpdGFsQml0TmFtZT4obV9zZWdtZW50cy5kYXRhKCksIG1fbnVtQml0cykpOyBcCisgICAgfQor
ICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NF
U1NPUlMpCisjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMKKworICAgIHVuc2ln
bmVkIG51bUJpdHMoKSBjb25zdCB7IHJldHVybiBtX251bUJpdHM7IH0KKworICAgIHZvaWQgcmVz
aXplKHVuc2lnbmVkIG51bUJpdHMpCisgICAgeworICAgICAgICB1bnNpZ25lZCBvbGROdW1CaXRz
ID0gbV9udW1CaXRzOworICAgICAgICBtX251bUJpdHMgPSBudW1CaXRzOworICAgICAgICBtX3Nl
Z21lbnRzLnJlc2l6ZSgobnVtQml0cyArIGJpdHNQZXJTZWdtZW50IC0gMSkgPj4gc2VnbWVudFNo
aWZ0KTsKKyAgICAgICAgaWYgKG51bUJpdHMgPCBvbGROdW1CaXRzICYmIG51bUJpdHMpIHsKKyAg
ICAgICAgICAgIC8vIENsZWFyIHRoZSBsYXN0IHNlZ21lbnQuCisgICAgICAgICAgICBhdXRvJiBz
ZWdtZW50ID0gbV9zZWdtZW50cy5sYXN0KCk7CisgICAgICAgICAgICB1aW50MzJfdCBtYXNrID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KCgxVUxMIDw8IChudW1CaXRzICYgaW5kZXhNYXNrKSkgLSAx
KTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9m
QmxvY2tEaXJlY3RvcnlCaXRLaW5kczsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBzZWdtZW50
Lm1fZGF0YVtpbmRleF0gJj0gbWFzazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jJiBmdW5j
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBmb3IgKGF1dG8m
IHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICAgICAgZnVuYyhpbmRleCsrLCBzZWdtZW50
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFNlZ21lbnQ+IG1fc2VnbWVudHM7Cisg
ICAgdW5zaWduZWQgbV9udW1CaXRzIHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5o
CmluZGV4IDQxY2JiNDljMjY0OTU2NmRlY2RmNzgyMzgzYmVjODhjYTIyYmE1NzUuLjY4NGIxYThk
ODZjNGM3NTk3MGQ0ODY4Y2ZkNDBiYzY3OTZiMDBiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCkBAIC0zMyw3ICszMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZv
aWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewotICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAorICAgIG1fYml0cy5saXZlKCkuZm9yRWFjaFNl
dEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAgICAgICAgICAgIGZ1bmN0b3Io
bV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7CkBAIC00MSw3ICs0MSw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJs
b2NrKGNvbnN0IEZ1bmN0CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaE5vdEVtcHR5QmxvY2soY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKIHsKLSAgICBtX21hcmtpbmdOb3RFbXB0eS5mb3JFYWNoU2V0Qml0KAorICAgIG1fYml0
cy5tYXJraW5nTm90RW1wdHkoKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBp
bmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3Bh
Y2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAK
aW5kZXggMmNiOTUyZjY3ODJlN2RiODA1NDc3MTUzOWQ1OWVkYjlhODk0MTJiYy4uZTRkYzYyMzY4
YWE0ODJjOTk2OTY2ZDQ4YmEzOGM3NDEwNTIzMmUwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiUHJldmVudENvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1ZGUgIlN1
YnNwYWNlSW5saW5lcy5oIgogCkBAIC03OSw3ICs4MCw3IEBAIEFsbG9jYXRvciBDb21wbGV0ZVN1
YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQogICAgIGlmIChmYWxzZSkKICAg
ICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tEaXJlY3RvcnkvTG9jYWxBbGxvY2F0b3IgZm9y
ICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygpLCAiLCAiLCBzaXplQ2xhc3MsICIuXG4iKTsK
ICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9y
eSA9IG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2UuaGVhcCgpLCBzaXplQ2xhc3Mp
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0g
bWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4oc2l6ZUNsYXNzKTsKICAgICBCbG9ja0RpcmVjdG9y
eSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwogICAgIG1fZGlyZWN0b3JpZXMu
YXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAgCkBAIC0xMDUsNyArMTA2LDcg
QEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNp
emUpCiAgICAgfQogICAgIAogICAgIGRpcmVjdG9yeS0+c2V0TmV4dERpcmVjdG9yeUluU3Vic3Bh
Y2UobV9maXJzdERpcmVjdG9yeSk7Ci0gICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdp
c3RlckRpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+
cmVnaXN0ZXJEaXJlY3RvcnkobV9zcGFjZS5oZWFwKCksIGRpcmVjdG9yeSk7CiAgICAgV1RGOjpz
dG9yZVN0b3JlRmVuY2UoKTsKICAgICBtX2ZpcnN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5OwogICAg
IHJldHVybiBhbGxvY2F0b3I7CkBAIC0xMjcsNyArMTI4LDcgQEAgdm9pZCogQ29tcGxldGVTdWJz
cGFjZTo6dHJ5QWxsb2NhdGVTbG93KFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250
ZXh0KgogICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAgICAgCiAgICAgaWYgKEFsbG9jYXRv
ciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6RW5zdXJl
QWxsb2NhdG9yKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZShkZWZlcnJhbENv
bnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHJldHVy
biBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIAogICAgIGlmIChzaXplIDw9IE9wdGlvbnM6
OnByZWNpc2VBbGxvY2F0aW9uQ3V0b2ZmKCkKICAgICAgICAgJiYgc2l6ZSA8PSBNYXJrZWRTcGFj
ZTo6bGFyZ2VDdXRvZmYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCmluZGV4IGVhY2UyYTZmNWM4Nzc5YWZkZjA2MTYwYTM4
MTc4YmNjOTkzMjJmNDAuLjg3MWRmMmIyNzg4ZDNhZWExN2NhYjNkOWMyYWY1YzY0NmE1M2FjZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFj
ZUlubGluZXMuaApAQCAtMzYsNyArMzYsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIENvbXBsZXRl
U3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbChWTSYgdm0sIHNpemVfdCBzaXplLCBHQwogICAg
ICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNHQygpKTsKIAogICAgIGlmIChB
bGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0
b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3Iu
YWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgICAgIHJldHVybiBh
bGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7
CiAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdyh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBmYWls
dXJlTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAK
aW5kZXggYWE2MmUxMWZkNDRmNmFiY2JiYmY0MjViODZmZGYxMTE4MGE4NDc5Yy4uODBhOWNlYjZh
Mzc5NmU5M2U0NmUzNzQxN2M5OWYyZWI2OGYwYTQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPFNoYXJlZFRhc2s8TWFy
a2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFsbGVsTm90RW1wdHlNYXJrZWRC
bG9ja1MKICAgICAgICAgICAgIGlmIChtX2RvbmUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7Ci0gICAg
ICAgICAgICBhdXRvIGJpdHMgPSBtX2RpcmVjdG9yeS5tX21hcmtpbmdOb3RFbXB0eSAmIG1fc2V0
Lm1fYmxvY2tzV2l0aEJpdHM7CisgICAgICAgICAgICBhdXRvIGJpdHMgPSBtX2RpcmVjdG9yeS5t
X2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX3NldC5tX2Jsb2Nrc1dpdGhCaXRzOwogICAgICAg
ICAgICAgbV9pbmRleCA9IGJpdHMuZmluZEJpdChtX2luZGV4LCB0cnVlKTsKICAgICAgICAgICAg
IGlmIChtX2luZGV4ID49IG1fZGlyZWN0b3J5Lm1fYmxvY2tzLnNpemUoKSkgewogICAgICAgICAg
ICAgICAgIG1fZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
Q2VsbFNldElubGluZXMuaAppbmRleCBmYzgxNjkyODdmMDU2NmJlZWI4OWQxOTg0NzE5MTFhNGE3
NTljNGUxLi5kYjdlOGFjYjU2MWIxZDIyZDQ3NjE2NWNiYzQwOGJjMzhmNjU2YzJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKQEAgLTcwLDcg
KzcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIHZvaWQgSXNvQ2VsbFNldDo6Zm9yRWFj
aE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBCbG9ja0RpcmVjdG9yeSYgZGly
ZWN0b3J5ID0gbV9zdWJzcGFjZS5tX2RpcmVjdG9yeTsKLSAgICAoZGlyZWN0b3J5Lm1fbWFya2lu
Z05vdEVtcHR5ICYgbV9ibG9ja3NXaXRoQml0cykuZm9yRWFjaFNldEJpdCgKKyAgICAoZGlyZWN0
b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fYmxvY2tzV2l0aEJpdHMpLmZvckVhY2hT
ZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGJsb2NrSW5kZXgpIHsKICAgICAgICAgICAgIE1h
cmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZGlyZWN0b3J5Lm1fYmxvY2tzW2Jsb2NrSW5kZXhd
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKaW5kZXggNDUz
ZTYwMjMzZDYxMWQ0N2MzMTdiYjczZGNiOWIyNjZlOTA5NmNlNC4uZDFjZjYxZjA3NzI1YjVjODM4
YWI0NmY2YzdiNmM3NGZhNTUyODJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b1N1YnNwYWNlLmNwcApAQCAtMzIsMTcgKzMyLDE4IEBACiAjaW5jbHVkZSAiSXNvQ2VsbFNldElu
bGluZXMuaCIKICNpbmNsdWRlICJJc29TdWJzcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJMb2Nh
bEFsbG9jYXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKIElzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUs
IEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzaXplX3Qgc2l6ZSwgdWlu
dDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzKQogICAgIDogU3Vic3BhY2UobmFtZSwgaGVhcCkK
LSAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9kaXJlY3RvcnkoJmhlYXAsIFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpKQorICAgICwgbV9kaXJl
Y3RvcnkoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6
ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9yeSkKICAgICAsIG1faXNvQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+
KCkpCi0gICAgLCBtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudChudW1iZXJPZkxvd2VyVGll
ckNlbGxzKQogeworICAgIG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50ID0gbnVtYmVyT2ZM
b3dlclRpZXJDZWxsczsKKyAgICBBU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtl
ZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7CiAgICAgQVNTRVJUKG51bWJl
ck9mTG93ZXJUaWVyQ2VsbHMgPD0gTWFya2VkQmxvY2s6Om1heE51bWJlck9mTG93ZXJUaWVyQ2Vs
bHMpOwogICAgIG1faXNJc29TdWJzcGFjZSA9IHRydWU7CiAgICAgaW5pdGlhbGl6ZShoZWFwQ2Vs
bFR5cGUsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5nZXQoKSk7CkBAIC01MCw3ICs1MSw3
IEBAIElzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhl
YXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzCiAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3NwYWNlLmRpcmVjdG9yeUxvY2soKSk7CiAgICAgbV9kaXJlY3Rvcnkuc2V0U3Vic3BhY2UodGhp
cyk7CiAgICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9yeShsb2NrZXIsICZtX2RpcmVjdG9yeSk7
Ci0gICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeSgmbV9kaXJl
Y3RvcnkpOworICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJEaXJlY3Rvcnko
aGVhcCwgJm1fZGlyZWN0b3J5KTsKICAgICBtX2ZpcnN0RGlyZWN0b3J5ID0gJm1fZGlyZWN0b3J5
OwogfQogCkBAIC0xMTEsOCArMTEyLDcgQEAgdm9pZCogSXNvU3Vic3BhY2U6OnRyeUFsbG9jYXRl
RnJvbUxvd2VyVGllcigpCiAgICAgICAgIHJldHVybiByZXZpdmUoYWxsb2NhdGlvbik7CiAgICAg
fQogICAgIGlmIChtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCkgewotICAgICAgICBzaXpl
X3Qgc2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRTcGFjZTo6c2l6ZVN0ZXA+
KG1fc2l6ZSk7Ci0gICAgICAgIFByZWNpc2VBbGxvY2F0aW9uKiBhbGxvY2F0aW9uID0gUHJlY2lz
ZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcigqbV9zcGFjZS5oZWFwKCksIHNpemUsIHRo
aXMsIC0tbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQpOworICAgICAgICBQcmVjaXNlQWxs
b2NhdGlvbiogYWxsb2NhdGlvbiA9IFByZWNpc2VBbGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRp
ZXIobV9zcGFjZS5oZWFwKCksIGNlbGxTaXplKCksIHRoaXMsIC0tbV9yZW1haW5pbmdMb3dlclRp
ZXJDZWxsQ291bnQpOwogICAgICAgICByZXR1cm4gcmV2aXZlKGFsbG9jYXRpb24pOwogICAgIH0K
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZS5oCmluZGV4IGNhNzc3ZDA4YWYxZGE1ZTAwOTVjMjg4OWMxMjQ0ZjRkZTZjY2E1NjMuLmE1MTQz
YmRhZWVjYjNiOWM0MmQ1OGNkYWViNWYyNGIzMTM3ZDA1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSXNvU3Vic3BhY2UuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBJc29TdWJzcGFj
ZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSXNvU3Vic3BhY2Uo
Q1N0cmluZyBuYW1lLCBIZWFwJiwgSGVhcENlbGxUeXBlKiwgc2l6ZV90IHNpemUsIHVpbnQ4X3Qg
bnVtYmVyT2ZMb3dlclRpZXJDZWxscyk7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgfklzb1N1YnNw
YWNlKCk7CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAg
IHNpemVfdCBjZWxsU2l6ZSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5LmNlbGxTaXplKCk7IH0KIAog
ICAgIEFsbG9jYXRvciBhbGxvY2F0b3JGb3Ioc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKSBvdmVy
cmlkZTsKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplX3QsIEFsbG9j
YXRvckZvck1vZGUpOwpAQCAtNjMsMTggKzYzLDE2IEBAIGNsYXNzIElzb1N1YnNwYWNlIDogcHVi
bGljIFN1YnNwYWNlIHsKICAgICB2b2lkIGRpZFJlbW92ZUJsb2NrKHNpemVfdCBibG9ja0luZGV4
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEJlZ2luU3dlZXBpbmdUb0ZyZWVMaXN0KE1hcmtlZEJs
b2NrOjpIYW5kbGUqKSBvdmVycmlkZTsKICAgICAKLSAgICBzaXplX3QgbV9zaXplOwogICAgIEJs
b2NrRGlyZWN0b3J5IG1fZGlyZWN0b3J5OwogICAgIExvY2FsQWxsb2NhdG9yIG1fbG9jYWxBbGxv
Y2F0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3I+IG1f
aXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8UHJlY2lz
ZUFsbG9jYXRpb24sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxQcmVjaXNlQWxsb2NhdGlvbj4+IG1f
bG93ZXJUaWVyRnJlZUxpc3Q7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PElzb0NlbGxTZXQsIFBh
Y2tlZFJhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0Pj4gbV9jZWxsU2V0czsKLSAgICB1aW50OF90
IG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50IHsgMCB9OwogfTsKIAogQUxXQVlTX0lOTElO
RSBBbGxvY2F0b3IgSXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZV90IHNp
emUsIEFsbG9jYXRvckZvck1vZGUpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSB0aGlz
LT5zaXplKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxN
YXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXplKCkpOwogICAgIHJldHVybiBB
bGxvY2F0b3IoJm1fbG9jYWxBbGxvY2F0b3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCmluZGV4IDA1MThhN2ZlMDYyZDYwOTE2OWQ3
YmMzZjc1M2M1ODRkYzRlZWNmNzAuLjQ2NjBlNzc4M2FhNjcyZWM4YTI5ZjRmNGYzM2MyMzJjYjQ2
ZGY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5s
aW5lcy5oCkBAIC0yNywxMSArMjcsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19J
TkxJTkUgdm9pZCogSXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbChWTSYsIHNpemVfdCBz
aXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGUgZmFpbHVyZU1vZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIElzb1N1YnNwYWNlOjphbGxv
Y2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRl
ZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewotICAg
IFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gdGhpcy0+c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9
PSBjZWxsU2l6ZSgpKTsKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yTm9u
VmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpNdXN0QWxyZWFkeUhhdmVBbGxvY2F0b3Ip
OwotICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci5hbGxvY2F0ZShkZWZlcnJhbENvbnRleHQs
IGZhaWx1cmVNb2RlKTsKKyAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUodm0u
aGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQ
ZXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNw
cAppbmRleCBiOWUxODUwOTA0MmU3MDE3MDdiNjc2ZTg4MjFiMGM0MWFmNWQ4ZDgyLi5iMmY2YmJk
OWI5NDc4YzJhNTFjM2YxMzgxODcyZDFhNmRjZmI2NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcApAQCAtNDEsNyArNDEsNyBAQCBjbGFz
cyBJc29TdWJzcGFjZVBlclZNOjpBdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSA6IHB1YmxpYyBJc29T
dWJzcGFjZSB7CiAgICAgfkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlKCkKICAgICB7CiAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wZXJWTS5tX2xvY2spOwotICAgICAgICBtX3BlclZN
Lm1fc3Vic3BhY2VQZXJWTS5yZW1vdmUoJnNwYWNlKCkuaGVhcCgpLT52bSgpKTsKKyAgICAgICAg
bV9wZXJWTS5tX3N1YnNwYWNlUGVyVk0ucmVtb3ZlKCZzcGFjZSgpLmhlYXAoKS52bSgpKTsKICAg
ICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9j
YXRvci5jcHAKaW5kZXggNTNlMDUwOGFiMmZmMDFjZjRkNDlhN2ZmMDcwMTc3MWYwZjBhYzRhZC4u
ZjU1NTcxYzg2Y2ZiMmUwYWU0Y2JkMWUwYWUyN2ZkYjg1MGJkMGZhZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcApAQCAtMTEwLDEyICsxMTAsMTEg
QEAgdm9pZCBMb2NhbEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmdGb3JHb29kKCkKICAgICByZXNl
dCgpOwogfQogCi12b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShHQ0RlZmVy
cmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVy
ZU1vZGUpCit2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShIZWFwJiBoZWFw
LCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJTYW1wbGVyU2Nv
cGUoZmFsc2UpOwotICAgIEhlYXAmIGhlYXAgPSAqbV9kaXJlY3RvcnktPm1faGVhcDsKICAgICBB
U1NFUlQoaGVhcC52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdBUElMb2NrKCkpOwotICAgIGRv
VGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoZGVmZXJyYWxDb250ZXh0KTsKKyAgICBkb1Rlc3RDb2xs
ZWN0aW9uc0lmTmVlZGVkKGhlYXAsIGRlZmVycmFsQ29udGV4dCk7CiAKICAgICBBU1NFUlQoIW1f
ZGlyZWN0b3J5LT5tYXJrZWRTcGFjZSgpLmlzSXRlcmF0aW5nKCkpOwogICAgIGhlYXAuZGlkQWxs
b2NhdGUobV9mcmVlTGlzdC5vcmlnaW5hbFNpemUoKSk7CkBAIC0xMjksNyArMTI4LDcgQEAgdm9p
ZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqIGRl
ZmVycmFsQ29udGV4dCwgQWxsb2MKICAgICAvLyBHb29meSBjb3JuZXIgY2FzZTogdGhlIEdDIGNh
bGxlZCBhIGNhbGxiYWNrIGFuZCBub3cgdGhpcyBkaXJlY3RvcnkgaGFzIGEgY3VycmVudEJsb2Nr
LiBUaGlzIG9ubHkKICAgICAvLyBoYXBwZW5zIHdoZW4gcnVubmluZyBXZWJLaXQgdGVzdHMsIHdo
aWNoIGluamVjdCBhIGNhbGxiYWNrIGludG8gdGhlIEdDJ3MgZmluYWxpemF0aW9uLgogICAgIGlm
IChVTkxJS0VMWShtX2N1cnJlbnRCbG9jaykpCi0gICAgICAgIHJldHVybiBhbGxvY2F0ZShkZWZl
cnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlKGhlYXAs
IGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwogICAgIAogICAgIHZvaWQqIHJlc3VsdCA9
IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICAKQEAgLTE0Miw3ICsxNDEsNyBA
QCB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4
dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvYwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2RpcmVjdG9yeS0+
dHJ5QWxsb2NhdGVCbG9jaygpOworICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9k
aXJlY3RvcnktPnRyeUFsbG9jYXRlQmxvY2soaGVhcCk7CiAgICAgaWYgKCFibG9jaykgewogICAg
ICAgICBpZiAoZmFpbHVyZU1vZGUgPT0gQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpCiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjQ5LDE4ICsyNDgs
MTggQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OnRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6Okhh
bmRsZSogYmxvY2spCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBMb2NhbEFsbG9jYXRv
cjo6ZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxD
b250ZXh0KQordm9pZCBMb2NhbEFsbG9jYXRvcjo6ZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChI
ZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0KQogewogICAgIGlm
ICghT3B0aW9uczo6c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHN0YXRpYyB1bnNpZ25lZCBhbGxvY2F0aW9uQ291bnQgPSAwOwogICAgIGlmICghYWxs
b2NhdGlvbkNvdW50KSB7Ci0gICAgICAgIGlmICghbV9kaXJlY3RvcnktPm1faGVhcC0+aXNEZWZl
cnJlZCgpKSB7CisgICAgICAgIGlmICghaGVhcC5pc0RlZmVycmVkKCkpIHsKICAgICAgICAgICAg
IGlmIChkZWZlcnJhbENvbnRleHQpCiAgICAgICAgICAgICAgICAgZGVmZXJyYWxDb250ZXh0LT5t
X3Nob3VsZEdDID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2Rp
cmVjdG9yeS0+bV9oZWFwLT5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7
CisgICAgICAgICAgICAgICAgaGVhcC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6
RnVsbCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCsrYWxsb2NhdGlvbkNvdW50ID49IE9w
dGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgKaW5kZXggNDM3MjczZjM2NjgwZTRhODA5Njg3Y2RmOGM4
ZTRhOGNmNGVjYzFhZC4uOWI2NTFiMDcwMzc2ODE0ZjJhMzk3YmIyYTE4NmVkNzAwMDk5ZDM4MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oCkBAIC0zNCw2
ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCbG9ja0RpcmVjdG9yeTsKIGNsYXNz
IEdDRGVmZXJyYWxDb250ZXh0OworY2xhc3MgSGVhcDsKIAogY2xhc3MgTG9jYWxBbGxvY2F0b3Ig
OiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TG9jYWxBbGxvY2F0b3I+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShMb2NhbEFsbG9jYXRvcik7CkBAIC00Miw3ICs0Myw3IEBAIGNsYXNz
IExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2Nh
dG9yPiB7CiAgICAgTG9jYWxBbGxvY2F0b3IoQmxvY2tEaXJlY3RvcnkqKTsKICAgICB+TG9jYWxB
bGxvY2F0b3IoKTsKICAgICAKLSAgICB2b2lkKiBhbGxvY2F0ZShHQ0RlZmVycmFsQ29udGV4dCos
IEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CisgICAgdm9pZCogYWxsb2NhdGUoSGVhcCYsIEdDRGVm
ZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKTsKICAgICAKICAgICB1bnNpZ25l
ZCBjZWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJlZUxpc3QuY2VsbFNpemUoKTsgfQogCkBA
IC02MCwxMiArNjEsMTIgQEAgY2xhc3MgTG9jYWxBbGxvY2F0b3IgOiBwdWJsaWMgQmFzaWNSYXdT
ZW50aW5lbE5vZGU8TG9jYWxBbGxvY2F0b3I+IHsKICAgICBmcmllbmQgY2xhc3MgQmxvY2tEaXJl
Y3Rvcnk7CiAgICAgCiAgICAgdm9pZCByZXNldCgpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQqIGFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGUgZmFpbHVyZU1vZGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRl
U2xvd0Nhc2UoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
KTsKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdCgpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRl
V2l0aG91dENvbGxlY3RpbmcoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2Nr
OjpIYW5kbGUqKTsKICAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChHQ0RlZmVy
cmFsQ29udGV4dCopOworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xsZWN0aW9uc0lm
TmVlZGVkKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogCiAgICAgQmxvY2tEaXJlY3Rvcnkq
IG1fZGlyZWN0b3J5OwogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCmluZGV4IDAwZDU1NzQ3
NDI2OWQ1NzI0MjdmZDdkOTU3OWExZjBjYTRhZDVhZjEuLmMzYzg2OTVlODU4OGM3OTAzNTA4ZWFl
OWY1MWEyZjc5OWY5ODNmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCkBAIC0zMCwxNCArMzAsMTQgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlKEdD
RGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBm
YWlsdXJlTW9kZSkKK0FMV0FZU19JTkxJTkUgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRl
KEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBpZiAodmFsaWRhdGVERkdEb2VzR0Mp
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZGlyZWN0b3J5LT5oZWFwKCktPmV4cGVjdERvZXNH
QygpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5leHBlY3REb2VzR0MoKSk7CiAgICAg
cmV0dXJuIG1fZnJlZUxpc3QuYWxsb2NhdGUoCiAgICAgICAgIFsmXSAoKSAtPiBIZWFwQ2VsbCog
ewotICAgICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKG1fZGlyZWN0b3J5LT5oZWFwKCktPnZt
KCkpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhlYXBDZWxsKj4oYWxsb2NhdGVT
bG93Q2FzZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKSk7CisgICAgICAgICAgICBzYW5p
dGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgpKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xvd0Nhc2UoaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWls
dXJlTW9kZSkpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suY3BwCmluZGV4IGM2ZTFmNmNkZjUwMjdmZTE0MGY2NDRlY2E0OTE5MGY0ODQ4
YjI1YTMuLjQyNTA0YTA4NmFlZGMyNjA4ZjA0NGI2NzllYTNmZjM5NWJiZGEwZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKQEAgLTM3Nyw4ICszNzcsOCBA
QCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmR1bXBTdGF0ZShQcmludFN0cmVhbSYgb3V0KQog
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICBkaXJlY3RvcnkoKS0+Zm9yRWFjaEJpdFZlY3Rv
cldpdGhOYW1lKAogICAgICAgICBob2xkTG9jayhkaXJlY3RvcnkoKS0+Yml0dmVjdG9yTG9jaygp
KSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiBiaXR2ZWN0b3IsIGNvbnN0IGNoYXIqIG5h
bWUpIHsKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgbmFtZSwgIjoiLCBiaXR2ZWN0b3Jb
aW5kZXgoKV0gPyAiWUVTIiA6ICJubyIpOworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNv
bnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgbmFtZSwgIjoi
LCB2ZWN0b3JSZWZbaW5kZXgoKV0gPyAiWUVTIiA6ICJubyIpOwogICAgICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCmluZGV4IDk3MDNlMzU3
MWUzZjRjZGY4YjIxMjgwYzM5MTA3MTkxM2UzNWM4YTguLmQ0MDhkNmVlZjFjMzcyMTEwODdlZjY2
ZGY2Y2EyZDIyZmY5MzFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNs
dWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0xOTUsOCArMTk2LDggQEAgdm9pZCBNYXJrZWRTcGFjZTo6aW5p
dGlhbGl6ZVNpemVDbGFzc0ZvclN0ZXBTaXplKCkKIH0KIAogTWFya2VkU3BhY2U6Ok1hcmtlZFNw
YWNlKEhlYXAqIGhlYXApCi0gICAgOiBtX2hlYXAoaGVhcCkKIHsKKyAgICBBU1NFUlRfVU5VU0VE
KGhlYXAsIGhlYXAgPT0gJnRoaXMtPmhlYXAoKSk7CiAgICAgaW5pdGlhbGl6ZVNpemVDbGFzc0Zv
clN0ZXBTaXplKCk7CiB9CiAKQEAgLTIzNCw3ICsyMzUsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjps
YXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAKIHZvaWQgTWFya2VkU3BhY2U6OnN3ZWVwQmxvY2tzKCkK
IHsKLSAgICBtX2hlYXAtPnN3ZWVwZXIoKS5zdG9wU3dlZXBpbmcoKTsKKyAgICBoZWFwKCkuc3dl
ZXBlcigpLnN0b3BTd2VlcGluZygpOwogICAgIGZvckVhY2hEaXJlY3RvcnkoCiAgICAgICAgIFsm
XSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAg
ICAgICAgIGRpcmVjdG9yeS5zd2VlcCgpOwpAQCAtMjcwLDEzICsyNzEsMTMgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6c3dlZXBQcmVjaXNlQWxsb2NhdGlvbnMoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpw
cmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJl
YWQoKSB8fCBtX2hlYXAtPndvcmxkSXNTdG9wcGVkKCkpOworICAgIEFTU0VSVCghVGhyZWFkOjpt
YXlCZUdDVGhyZWFkKCkgfHwgaGVhcCgpLndvcmxkSXNTdG9wcGVkKCkpOwogICAgIGZvciAoU3Vi
c3BhY2UqIHN1YnNwYWNlIDogbV9zdWJzcGFjZXMpCiAgICAgICAgIHN1YnNwYWNlLT5wcmVwYXJl
Rm9yQWxsb2NhdGlvbigpOwogCiAgICAgbV9hY3RpdmVXZWFrU2V0cy50YWtlRnJvbShtX25ld0Fj
dGl2ZVdlYWtTZXRzKTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9
PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUo
KSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCiAgICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25z
TnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9wcmVjaXNlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0
OwogICAgIGVsc2UKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0Rm9y
U3dlZXAgPSAwOwpAQCAtMjk4LDcgKzI5OSw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnZpc2l0V2Vh
a1NldHMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0
cy5mb3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUo
KSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2Nv
cGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fYWN0aXZlV2Vha1NldHMu
Zm9yRWFjaCh2aXNpdCk7CiB9CiAKQEAgLTMxMCw3ICszMTEsNyBAQCB2b2lkIE1hcmtlZFNwYWNl
OjpyZWFwV2Vha1NldHMoKQogICAgIAogICAgIG1fbmV3QWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2
aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVj
dGlvblNjb3BlOjpGdWxsKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNjb3BlKCkgPT0gQ29s
bGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlz
aXQpOwogfQogCkBAIC0zNTYsNyArMzU3LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZv
ckNvbnNlcnZhdGl2ZVNjYW4oKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yTWFya2lu
ZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNj
b3BlOjpFZGVuKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlv
blNjb3BlOjpFZGVuKQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXND
b2xsZWN0aW9uID0gbV9wcmVjaXNlQWxsb2NhdGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UK
ICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29sbGVjdGlvbiA9IDA7
CkBAIC00MTYsNyArNDE3LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c2hyaW5rKCkKIAogdm9pZCBN
YXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9u
U2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKKyAgICBpZiAoaGVhcCgpLmNvbGxl
Y3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgewogICAgICAgICBmb3JFYWNo
RGlyZWN0b3J5KAogICAgICAgICAgICAgWyZdIChCbG9ja0RpcmVjdG9yeSYgZGlyZWN0b3J5KSAt
PiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgICAgIGRpcmVjdG9yeS5iZWdpbk1hcmtp
bmdGb3JGdWxsQ29sbGVjdGlvbigpOwpAQCAtNTUxLDcgKzU1Miw3IEBAIHZvaWQgTWFya2VkU3Bh
Y2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKIAogdm9p
ZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkKIHsKLSAgICBpZiAobV9oZWFwLT5jb2xs
ZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pIHsKKyAgICBpZiAoaGVhcCgp
LmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikgewogICAgICAgICBm
b3JFYWNoRGlyZWN0b3J5KAogICAgICAgICAgICAgWyZdIChCbG9ja0RpcmVjdG9yeSYgZGlyZWN0
b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgICAgIGRpcmVjdG9yeS5zbmFw
c2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgKaW5kZXggMDA2ODA1YjQ0N2JlMWI1MjFiY2E0NDRjMWRjZWExZWY3NDI3
ODQ4OC4uYWQzNjYyMmYxYjU3ZGQ2NmJjY2YzZDlhYTRmZjIxODYwYzMxMjcwYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC05NSw3ICs5NSw3IEBAIGNsYXNz
IE1hcmtlZFNwYWNlIHsKICAgICBNYXJrZWRTcGFjZShIZWFwKik7CiAgICAgfk1hcmtlZFNwYWNl
KCk7CiAgICAgCi0gICAgSGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhcDsgfQorICAg
IEhlYXAmIGhlYXAoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXpl
KCk7IC8vIE11c3QgY2FsbCBzdG9wQWxsb2NhdGluZ0Zvckdvb2QgZmlyc3QuCiAgICAgdm9pZCBm
cmVlTWVtb3J5KCk7CkBAIC0yMTMsNyArMjEzLDYgQEAgY2xhc3MgTWFya2VkU3BhY2UgewogICAg
IFByZWNpc2VBbGxvY2F0aW9uKiogbV9wcmVjaXNlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlv
bkJlZ2luIHsgbnVsbHB0ciB9OwogICAgIFByZWNpc2VBbGxvY2F0aW9uKiogbV9wcmVjaXNlQWxs
b2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCB7IG51bGxwdHIgfTsKIAotICAgIEhlYXAqIG1f
aGVhcDsKICAgICBzaXplX3QgbV9jYXBhY2l0eSB7IDAgfTsKICAgICBIZWFwVmVyc2lvbiBtX21h
cmtpbmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKICAgICBIZWFwVmVyc2lvbiBtX25ld2x5
QWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCmluZGV4IGRmODUzMWQ5N2ZjNjk1YTIy
Y2YyN2QyNWExYTQ4OTBmMGJlMzVhZjUuLmVhODUxNDY0OTMzMDI4YzUwOTA5OTZmMmU2NTE0Nzdh
MTQyZTNkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
SW5saW5lcy5oCkBAIC0zMCw2ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQUxXQVlT
X0lOTElORSBIZWFwJiBNYXJrZWRTcGFjZTo6aGVhcCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICpi
aXR3aXNlX2Nhc3Q8SGVhcCo+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpIC0gT0JKRUNU
X09GRlNFVE9GKEhlYXAsIG1fb2JqZWN0U3BhY2UpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVhY2hMaXZlQ2VsbChIZWFwSXRl
cmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEFTU0VSVChpc0l0
ZXJhdGluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNw
YWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAppbmRleCA5
NGMyZmY0YzZiMmFjYTZjMTlkYzE1OGNiNGY4ZTYzNzM0ZDBlM2E3Li5hYjk5ZTJkYTZjNWMzYjM1
MTM2YjE3YWU0NGU1MWJhNzhhOTg5NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vi
c3BhY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSGVhcENlbGxUeXBlLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgor
I2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcmFsbGVsU291cmNl
QWRhcHRlci5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJTdWJzcGFjZUlubGluZXMuaCIKQEAgLTQ5LDcgKzUwLDcgQEAgdm9pZCBTdWJzcGFjZTo6aW5p
dGlhbGl6ZShIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgQWxpZ25lZE1lbW9yeUFsbG9jYXRv
ciogYWwKICAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3IgPSBhbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yOwogICAgIG1fZGlyZWN0b3J5Rm9yRW1wdHlBbGxvY2F0aW9uID0gbV9hbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLT5maXJzdERpcmVjdG9yeSgpOwogCi0gICAgSGVhcCYgaGVhcCA9ICptX3NwYWNl
LmhlYXAoKTsKKyAgICBIZWFwJiBoZWFwID0gbV9zcGFjZS5oZWFwKCk7CiAgICAgaGVhcC5vYmpl
Y3RTcGFjZSgpLm1fc3Vic3BhY2VzLmFwcGVuZCh0aGlzKTsKICAgICBtX2FsaWduZWRNZW1vcnlB
bGxvY2F0b3ItPnJlZ2lzdGVyU3Vic3BhY2UodGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU3Vic3BhY2UuaAppbmRleCBiNTA4MTE0NGNkNGMwYjEyOTFjZDJjMzUzYzIyYzZmYzQ3YzFm
ZmFiLi4zNGVhMzQxMTgzMWJlMDg3ZTNlNTNlYmU2MDdiNGE4ZTYwM2RkZGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKQEAgLTExOSw2ICsxMTksOCBAQCBjbGFzcyBTdWJz
cGFjZSB7CiAgICAgQ1N0cmluZyBtX25hbWU7CiAKICAgICBib29sIG1faXNJc29TdWJzcGFjZSB7
IGZhbHNlIH07Citwcm90ZWN0ZWQ6CisgICAgdWludDhfdCBtX3JlbWFpbmluZ0xvd2VyVGllckNl
bGxDb3VudCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rv
ci5oCmluZGV4IGE4ZWQ2YjgyODkwMGZlMDIxM2JkZWQ5YzYzNzVjOTdiMGEzNmM4NTkuLjQ5NGU2
NDg5ZmU0YTFkYjIyZGIyNzQ2N2U2OTE3MmFhMzcyMDJkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmgKQEAgLTQyMSw2ICs0MjEsOSBAQCBjbGFzcyBGYXN0Qml0VmVjdG9ySW1wbCB7CiAgICAgfQog
ICAgIAogICAgIHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSB3b3JkVmlldygpIGNvbnN0IHsgcmV0
dXJuIG1fd29yZHMudmlldygpOyB9CisKKyAgICBXb3JkcyYgdW5zYWZlV29yZHMoKSB7IHJldHVy
biBtX3dvcmRzOyB9CisgICAgY29uc3QgV29yZHMmIHVuc2FmZVdvcmRzKCkgY29uc3QgeyByZXR1
cm4gbV93b3JkczsgfQogICAgIAogcHJpdmF0ZToKICAgICAvLyBZb3UnZCB0aGluayB0aGF0IHdl
IGNvdWxkIHJlbW92ZSB0aGlzIGZyaWVuZCBpZiB3ZSB1c2VkIHByb3RlY3RlZCwgYnV0IHlvdSdk
IGJlIHdyb25nLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383520</attachid>
            <date>2019-11-13 17:03:06 -0800</date>
            <delta_ts>2019-11-13 17:14:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113170305.patch</filename>
            <type>text/plain</type>
            <size>63222</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li45ZGM1NjUwNDYyNjhiM2E1
OTNiMzdmN2ZjZjQ4ZjY3NDg5ZTE1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBh
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IGFwcGx5aW5nIElzb1N1YnNwYWNlIHRvIGFsbCBKU0NlbGxzLiBUaGlzIG1lYW5zIHRoYXQg
SXNvU3Vic3BhY2Ugc2hvdWxkIGJlIHNtYWxsIGVub3VnaCwKKyAgICAgICAgc28gdGhhdCB3ZSBj
YW4gaG9sZCBtYW55IElzb1N1YnNwYWNlcyB3aXRob3V0IGNvbnNpZGVyaW5nIGFib3V0IG1lbW9y
eSByZWdyZXNzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVjZSBzZXZl
cmFsIHRoaW5ncyB0byBzaHJpbmsgc2l6ZW9mKElzb1N1YnNwYWNlKSBmcm9tIDUyOCB0byAzODQu
CisKKyAgICAgICAgMS4gQWRqdXN0aW5nIG1lbWJlcnMgdG8gcmVtb3ZlIHNvbWUgcGFkZGluZ3Mu
CisgICAgICAgIDIuIFJlbW92ZSBtX2hlYXAgZmllbGQgc2luY2UgdGhpcyBjYW4gYmUgZ290IGZy
b20gdGhlIGNhbGxlciBlYXNpbHkuCisgICAgICAgIDMuIE1ha2UgTWFya2VkU3BhY2U6OmhlYXAo
KSBlZmZpY2llbnQ6IGp1c3QgZG9pbmcgcG9pbnRlciBhcml0aG1ldGljLgorICAgICAgICA0LiBS
ZW1vdmUgbV9zaXplIGZpZWxkIGZyb20gSXNvU3Vic3BhY2Ugc2luY2UgQmxvY2tEaXJlY3Rvcnkg
a25vd3MgY2VsbFNpemUuCisgICAgICAgIDUuIEludHJvZHVjZSBCbG9ja0RpcmVjdG9yeUJpdHMs
IHdoaWNoIHJlcGFsY2VzIDkgRmFzdEJpdFZlY3RvciBpbiBCbG9ja0RpcmVjdG9yeSB0byB0aGlz
IG9uZSBjbGFzcy4KKyAgICAgICAgICAgU2luY2UgYWxsIEZhc3RCaXRWZWN0b3IgaGFzIHRoZSBz
YW1lIHNpemUsIHdlIHNob3VsZCBub3QgaGF2ZSBhIHNpemUgZmllbGQgZm9yIGVhY2ggRmFzdEJp
dFZlY3Rvci4KKyAgICAgICAgICAgV2UgcmV1c2UgRmFzdEJpdFZlY3RvcidzIFZpZXcgbWVjaGFu
aXNtIHRvIGtlZXAgdGhlIHNhbWUgZXJnb25vbWljcyB3aGlsZSBtYWtpbmcgQmxvY2tEaXJlY3Rv
cnlCaXRzCisgICAgICAgICAgIG11Y2ggc21hbGxlci4gV2UgcHV0IDkgdWludDMyX3QgYXMgU2Vn
bWVudCwgYW5kIG1hbmFnZSBWZWN0b3I8U2VnbWVudD4gaW4gdGhpcyBkYXRhIHN0cnVjdHVyZS4g
U2luY2UKKyAgICAgICAgICAgd2UgdG91Y2ggc2V2ZXJhbCBiaXRzIGF0IHRoZSBzYW1lIHRpbWUg
Zm9yIHRoZSBzYW1lIGJsb2NrLWluZGV4LCB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIGNvbXBhY3Qg
YW5kCisgICAgICAgICAgIGVmZmljaWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6cmVnaXN0ZXJEaXJlY3RvcnkpOgorICAgICAgICAqIGhlYXAv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9yLmg6Cisg
ICAgICAgICogaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkFsbG9jYXRv
cjo6YWxsb2NhdGUgY29uc3QpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuY3BwOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpyZW1v
dmVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZv
ckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9j
a1RvU3dlZXApOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c3dlZXApOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmFzc2VydE5vVW5zd2VwdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpw
YXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6ZHVtcEJpdHMpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuaDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmNlbGxLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVj
dG9yeTo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmhlYXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
V29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxsKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpyZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJs
b2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpD
b21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KToKKyAgICAgICAgKEpTQzo6Q29tcGxl
dGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRl
Tm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKToKKyAgICAg
ICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6
OmZvckVhY2hNYXJrZWRDZWxsKToKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKToKKyAgICAgICAgKEpTQzo6SXNv
U3Vic3BhY2U6OnRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcik6CisgICAgICAgICogaGVhcC9Jc29T
dWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6Y2VsbFNpemUpOgorICAgICAg
ICAoSlNDOjpJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbCk6CisgICAgICAgIChK
U0M6Oklzb1N1YnNwYWNlOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZVBlclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92
aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxv
Y2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFs
bG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAqIGhl
YXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpy
ZWFwV2Vha1NldHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtp
bmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aGVhcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmhlYXAgY29uc3QpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5oOgorCiAyMDE5LTExLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CiAKICAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5h
cnkgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA1NWU3OTUxNWEyYmQxOWIzNDM1MGZhNjlkZTk5MzhlZmE2OGUzZTFi
Li5lMWQ3OGQzZGIxZmY1MDhkM2NjNjk1YTYxMjZhMTU1ZjBjNmUxMjcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE5LTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQmxvY2tEaXJlY3RvcnkncyBiaXRzIHNob3VsZCBiZSBjb21wYWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0
Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3Jk
cyk6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3JkcyBjb25zdCk6
CisKIDIwMTktMTEtMTEgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgog
CiAgICAgICAgIFVUQyBvZmZzZXQgZm9yIFNhbW9hIGlzIG1pc2NhbGN1bGF0ZWQgd2hlbiAhSEFW
RShUSU1FR00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGNlYjNmYzA5
OTA3MmFjMzY2MTZlMTYzNjk2NmI1M2JiNTM3NWJjMi4uYjZmMGFlZDMwZTI0ZDNhZjVlM2RhYTFl
OTI3MjVlNDJlZTE0M2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NTY5LDYgKzU2OSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKICAgICBoZWFwL0FsbG9jYXRvckZvck1v
ZGUuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnkuaAorICAgIGhlYXAvQmxvY2tEaXJlY3RvcnlC
aXRzLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCiAgICAgaGVhcC9DZWxsQXR0
cmlidXRlcy5oCiAgICAgaGVhcC9DZWxsQ29udGFpbmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNGQyN2Q5ODEwMTQzNzg5NDRhM2ExNjI4NzVhODU1MzJhOTE2Y2JkNi4uMzYz
YmVmNDE4MTg1NGZjOWZlMmU1OGQyOTJjYTI3ODljYmI4ODM2YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw3IEBACiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUx
RkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9u
TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVk
SURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsg
fTsKKwkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjUyRTIyMzdD
QTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAv
KiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg5M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyog
QXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzhEOTk5QzIy
MUI3OEJCMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGlibGVQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDk5OUEyMjFCNzg5RjAwRDUwNDc0
IC8qIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzkwMDYyMTIyMDhCRkM0MDAxMDE5Q0YgLyogU3Vic3Bh
Y2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTAwNjIwMjIwOEJGQzMwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00OTQ3LDYgKzQ5NDgsNyBA
QAogCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVySGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUg
LyogQnVpbHRpbk5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODUwQjE0
MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5pZmllZElESW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBERkdNaW5pZmllZElESW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR01pbmlmaWVkSURJbmxpbmVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVF
RSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQmxvY2tEaXJlY3RvcnlCaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUu
bHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVy
YXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2
MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBTY3Jp
cHRGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTAy
LDYgKzYxMDQsNyBAQAogCQkJCTBGQjQ2NzdFMUZEREE2RTUwMDNGQ0IwOSAvKiBBdG9tSW5kaWNl
cy5oICovLAogCQkJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5j
cHAgKi8sCiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5Lmgg
Ki8sCisJCQkJRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5o
ICovLAogCQkJCTBGN0RGMTQ1MUUyQkVGNjgwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQ2VsbEF0dHJpYnV0ZXMu
Y3BwICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5o
ICovLApAQCAtOTAwOCw2ICs5MDExLDcgQEAKIAkJCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEg
LyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY0QjI3MjFBNzg0QkFG
MDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0
REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
ODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29s
ZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkg
LyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCmluZGV4IGU3Yzkz
YzI2MzY3OTc3MGIyZDAxZGYyZGUwYmZlY2ZmODZmMWNjMDguLmVhMzJkZjNjMGJjYzFkZTE3NmVj
ZmE4ZjZmMjdlMDI0YTAyOTU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCkBAIC00MCwxMiArNDAsMTIgQEAgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6fkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKQogewogfQogCi12
b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5KiBkaXJlY3RvcnkpCit2b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGly
ZWN0b3J5KEhlYXAmIGhlYXAsIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQoIWRpcmVjdG9yeS0+bmV4dERpcmVjdG9yeUluQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcigpKTsKICAgICAKICAgICBpZiAobV9kaXJlY3Rvcmllcy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBkaXJlY3RvcnktPmhlYXAoKS0+
d29ybGRJc1N0b3BwZWQoKSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaGVhcCwgIVRocmVhZDo6
bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAud29ybGRJc1N0b3BwZWQoKSk7CiAgICAgICAgIGZvciAo
U3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJzcGFjZXMuZmlyc3QoKTsgc3Vic3BhY2U7IHN1YnNw
YWNlID0gc3Vic3BhY2UtPm5leHRTdWJzcGFjZUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKQog
ICAgICAgICAgICAgc3Vic3BhY2UtPmRpZENyZWF0ZUZpcnN0RGlyZWN0b3J5KGRpcmVjdG9yeSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1l
bW9yeUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9y
eUFsbG9jYXRvci5oCmluZGV4IDY2NDQyYWRmMzE4YTU2N2Q4MmFjYzBkZjgyMjJlMzVjYTFiNTRh
ZGMuLjk1NjY5NjM1ZDhkZDUxMzFkOGVmYmFiY2FlYWU2YjBmZTdlZDFiOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKQEAg
LTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCbG9ja0RpcmVjdG9yeTsK
K2NsYXNzIEhlYXA7CiBjbGFzcyBTdWJzcGFjZTsKIAogY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9j
YXRvciB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Igewog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgPSAwOwogCi0g
ICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSopOworICAgIHZvaWQgcmVn
aXN0ZXJEaXJlY3RvcnkoSGVhcCYsIEJsb2NrRGlyZWN0b3J5Kik7CiAgICAgQmxvY2tEaXJlY3Rv
cnkqIGZpcnN0RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rvcmllcy5maXJzdCgp
OyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3Vic3BhY2UoU3Vic3BhY2UqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKaW5kZXggMjI5MTU4ZmNlNDIwZjFlNzk5MjA5ZGMxNDQ4
YjgzMjE4MGEyZjc5YS4uNzIzOWQyMjlmY2U5MmJiYTA0NTQwMDNlNDlkNTI4ZjA3ZTMyN2NmNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7
CiBjbGFzcyBMb2NhbEFsbG9jYXRvcjsKIAogLy8gVGhpcyBhYnN0cmFjdHMgaG93IHdlIHJlZmVy
IHRvIExvY2FsQWxsb2NhdG9yIHNvIHRoYXQgd2UgY291bGQgZXZlbnR1YWxseSBzdXBwb3J0IHRo
cmVhZC1sb2NhbApAQCAtNDUsNyArNDYsNyBAQCBjbGFzcyBBbGxvY2F0b3IgewogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGUpIGNvbnN0OworICAgIHZvaWQqIGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVy
cmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSkgY29uc3Q7CiAgICAgCiAgICAgdW5z
aWduZWQgY2VsbFNpemUoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsbG9jYXRvcklubGluZXMuaAppbmRleCAxNzU3MzI3M2M0OTlmYmM1OGE3YjRmZWJmZjdh
MGQ5YmM5ZGQ0MmVmLi42OTViMDg5ZDhjNTcxYTdiYjA4MGM3ZDljMWVhNmZjODlkOGU4MzE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9ySW5saW5lcy5oCkBAIC0z
MCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIEFs
bG9jYXRvcjo6YWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqIGNvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZSBtb2RlKSBjb25zdAorQUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFs
bG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBjb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9sb2NhbEFsbG9jYXRvci0+
YWxsb2NhdGUoY29udGV4dCwgbW9kZSk7CisgICAgcmV0dXJuIG1fbG9jYWxBbGxvY2F0b3ItPmFs
bG9jYXRlKGhlYXAsIGNvbnRleHQsIG1vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAppbmRleCA3ZWVl
NGE4NzQ2YjZiZDE4ODUyYTdhYjYyODc0YmJhZjU3YWJlMjg5Li4wY2M0YjQ3OWJmNzE3YjQ2MDA0
M2JiY2YwNGNiNjYwM2MyMzA2M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnkuY3BwCkBAIC0zOCw5ICszOCw4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1CbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkoSGVhcCogaGVhcCwgc2l6ZV90IGNlbGxT
aXplKQorQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0b3J5KHNpemVfdCBjZWxsU2l6ZSkKICAg
ICA6IG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNlbGxTaXplKSkKLSAgICAsIG1f
aGVhcChoZWFwKQogewogfQogCkBAIC03Niw3ICs3NSw3IEBAIGJvb2wgQmxvY2tEaXJlY3Rvcnk6
OmlzUGFnZWRPdXQoTW9ub3RvbmljVGltZSBkZWFkbGluZSkKIAogTWFya2VkQmxvY2s6OkhhbmRs
ZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiB7Ci0gICAgbV9lbXB0
eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBtX2Vt
cHR5Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsK
ICAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsKQEAgLTg1LDcg
Kzg0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJs
b2NrVG9TdGVhbCgpCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJs
b2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYgYWxsb2NhdG9yKQogewogICAgIGZvciAo
OzspIHsKLSAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9j
YXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25D
dXJzb3IsIHRydWUpOworICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yID0gKG1f
Yml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgfCBtX2JpdHMuZW1wdHkoKSkuZmluZEJpdChh
bGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVlKTsKICAgICAgICAgaWYgKGFsbG9jYXRv
ci5tX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAtOTYsMTEgKzk1LDExIEBAIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2Nh
dG9yJiBhbGxvCiAgICAgfQogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9y
eTo6dHJ5QWxsb2NhdGVCbG9jaygpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9y
eTo6dHJ5QWxsb2NhdGVCbG9jayhIZWFwJiBoZWFwKQogewogICAgIFN1cGVyU2FtcGxlclNjb3Bl
IHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxl
KiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIHN1YnNwYWNlKCktPmFs
aWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxl
ID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShoZWFwLCBzdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5
QWxsb2NhdG9yKCkpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAKQEAgLTExOCwyMSArMTE3LDEyIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2Nr
KE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAgICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkg
PSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOwogICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoYmxvY2spOwog
ICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgewotICAgICAg
ICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAgICAgICAgICAgICBOb0xvY2tpbmdOZWNlc3Nh
cnksCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsIHZlY3Rvci5udW1CaXRzKCkgPT0g
b2xkQ2FwYWNpdHkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgCisgICAgICAg
ICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAg
ICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9iaXR2ZWN0b3JMb2NrKTsKICAgICAg
ICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJpdHMobV9ibG9ja3MuY2FwYWNpdHkoKSk7Ci0g
ICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAgICAgICAgICAgICAgIGxvY2tlciwKLSAg
ICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAg
ICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgbV9iaXRzLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRp
Y2VzLnRha2VMYXN0KCk7CkBAIC0xNDIsOCArMTMyLDggQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6
YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgCiAgICAgZm9yRWFjaEJp
dFZlY3RvcigKICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RC
aXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2
ZWN0b3JbaW5kZXhdKTsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmKSB7CisgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKHZlY3RvclJlZiwgIXZlY3RvclJlZltpbmRleF0pOwogICAgICAgICB9
KTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBibG9jayBsZWFybnMg
b2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMoKS4KQEAgLTE2NSw4ICsxNTUsOCBAQCB2
b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9j
aykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAogICAgICAgICBob2xkTG9jayhtX2JpdHZl
Y3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAg
ICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICBbJl0oYXV0byB2
ZWN0b3JSZWYpIHsKKyAgICAgICAgICAgIHZlY3RvclJlZltibG9jay0+aW5kZXgoKV0gPSBmYWxz
ZTsKICAgICAgICAgfSk7CiAgICAgCiAgICAgYmxvY2stPmRpZFJlbW92ZUZyb21EaXJlY3Rvcnko
KTsKQEAgLTE5Miw3ICsxODIsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxs
b2NhdGlvbigpCiAgICAgbV91bnN3ZXB0Q3Vyc29yID0gMDsKICAgICBtX2VtcHR5Q3Vyc29yID0g
MDsKICAgICAKLSAgICBtX2VkZW4uY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMuZWRlbigpLmNsZWFy
QWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBhZ2Fpbi4KQEAgLTIzNywyMCAr
MjI3LDIwIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0
aW9uKCkKICAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkg
b2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxsCiAgICAgLy8gY29s
bGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxs
IHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKICAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMg
ZWRlbi4KLSAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOwotICAgIG1fbWFya2luZ1Jl
dGlyZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkuY2xlYXJBbGwo
KTsKKyAgICBtX2JpdHMubWFya2luZ1JldGlyZWQoKS5jbGVhckFsbCgpOwogfQogCiB2b2lkIEJs
b2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIHsKLSAgICBtX2FsbG9jYXRlZC5jbGVhckFsbCgp
OworICAgIG1fYml0cy5hbGxvY2F0ZWQoKS5jbGVhckFsbCgpOwogICAgIAogICAgIC8vIEl0J3Mg
c3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29tcHJlaGVuZCwgYnV0IHRoZSBlbmQtb2Yt
bWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KICAgICAvLyBrbm93IHdoYXQga2luZCBvZiBj
b2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBpcyBhbHJlYWR5IGVuY29kZWQgaW4gdGhl
IG1fbWFya2luZ1hZWgogICAgIC8vIHZlY3RvcnMuCiAgICAgCi0gICAgbV9lbXB0eSA9IG1fbGl2
ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKLSAgICBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBt
X2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIG1fYml0
cy5lbXB0eSgpID0gbV9iaXRzLmxpdmUoKSAmIH5tX2JpdHMubWFya2luZ05vdEVtcHR5KCk7Cisg
ICAgbV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiBtX2Jp
dHMubWFya2luZ05vdEVtcHR5KCkgJiB+bV9iaXRzLm1hcmtpbmdSZXRpcmVkKCk7CiAKICAgICBp
ZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBzb21lIGJsb2Nr
cyB0aGF0IHdlIGRpZG4ndCBhbGxvY2F0ZSBvdXQgb2YgaW4gdGhlIGxhc3QgY3ljbGUsIGJ1dCB3
ZSBzd2VwdCB0aGVtLiBUaGlzCkBAIC0yNTgsNyArMjQ4LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9y
eTo6ZW5kTWFya2luZygpCiAgICAgICAgIC8vIGRlc3RydWN0b3JzIGFnYWluLiBUaGF0J3MgZmlu
ZSBiZWNhdXNlIG9mIHphcHBpbmcuIFRoZSBvbmx5IHRpbWUgd2hlbiB3ZSBjYW5ub3QgZm9yZ2V0
IGlzIHdoZW4KICAgICAgICAgLy8gd2UganVzdCBhbGxvY2F0ZSBhIGJsb2NrIG9yIHdoZW4gd2Ug
bW92ZSBhIGJsb2NrIGZyb20gb25lIHNpemUgY2xhc3MgdG8gYW5vdGhlci4gVGhhdCBkb2Vzbid0
CiAgICAgICAgIC8vIGhhcHBlbiBoZXJlLgotICAgICAgICBtX2Rlc3RydWN0aWJsZSA9IG1fbGl2
ZTsKKyAgICAgICAgbV9iaXRzLmRlc3RydWN0aWJsZSgpID0gbV9iaXRzLmxpdmUoKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKGZhbHNlKSB7CkBAIC0yNjksMTcgKzI1OSwxNyBAQCB2b2lkIEJsb2Nr
RGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RV
bnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKQogewotICAgIG1fdW5zd2VwdCB8PSBtX2VkZW47Cisg
ICAgbV9iaXRzLnVuc3dlcHQoKSB8PSBtX2JpdHMuZWRlbigpOwogfQogCiB2b2lkIEJsb2NrRGly
ZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpCiB7Ci0gICAgbV91bnN3
ZXB0ID0gbV9saXZlOworICAgIG1fYml0cy51bnN3ZXB0KCkgPSBtX2JpdHMubGl2ZSgpOwogfQog
CiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrVG9Td2VlcCgp
CiB7Ci0gICAgbV91bnN3ZXB0Q3Vyc29yID0gbV91bnN3ZXB0LmZpbmRCaXQobV91bnN3ZXB0Q3Vy
c29yLCB0cnVlKTsKKyAgICBtX3Vuc3dlcHRDdXJzb3IgPSBtX2JpdHMudW5zd2VwdCgpLmZpbmRC
aXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV91bnN3ZXB0Q3Vyc29yID49IG1f
YmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxv
Y2tzW21fdW5zd2VwdEN1cnNvcl07CkBAIC0yODcsNyArMjc3LDcgQEAgTWFya2VkQmxvY2s6Okhh
bmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja1RvU3dlZXAoKQogCiB2b2lkIEJsb2NrRGly
ZWN0b3J5Ojpzd2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0LmZvckVhY2hTZXRCaXQoCisgICAgbV9i
aXRzLnVuc3dlcHQoKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkg
ewogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRl
eF07CiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVsbHB0cik7CkBAIC0yOTYsNyArMjg2LDcg
QEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpz
aHJpbmsoKQogewotICAgIChtX2VtcHR5ICYgfm1fZGVzdHJ1Y3RpYmxlKS5mb3JFYWNoU2V0Qml0
KAorICAgIChtX2JpdHMuZW1wdHkoKSAmIH5tX2JpdHMuZGVzdHJ1Y3RpYmxlKCkpLmZvckVhY2hT
ZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBtYXJrZWRT
cGFjZSgpLmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTMwNyw3
ICsyOTcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQoKQogICAgIGlm
IChBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAobV91bnN3
ZXB0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9iaXRzLnVuc3dlcHQoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBkYXRhTG9nKCJBc3NlcnRpb24gZmFpbGVkOiB1bnN3ZXB0
IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOwpAQCAtMzI5LDcgKzMxOSw3IEBAIFJlZlB0
cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBCbG9ja0RpcmVjdG9yeTo6cGFy
YWxsZWxOb3RFbXB0eUJsb2NrCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2xvY2spOwotICAgICAgICAgICAgbV9pbmRleCA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVt
cHR5LmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CisgICAgICAgICAgICBtX2luZGV4ID0gbV9kaXJl
Y3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CiAg
ICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nrcy5zaXplKCkpIHsK
ICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMzU3LDE4ICszNDcsMTkgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZHVtcEJp
dHMoUHJpbnRTdHJlYW0mIG91dCkKICAgICB1bnNpZ25lZCBtYXhOYW1lTGVuZ3RoID0gMDsKICAg
ICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwK
LSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAg
ICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIFVO
VVNFRF9QQVJBTSh2ZWN0b3JSZWYpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
bGVuKG5hbWUpOwogICAgICAgICAgICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVM
ZW5ndGgsIGxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3JX
aXRoTmFtZSgKICAgICAgICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RC
aXRWZWN0b3ImIHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0oYXV0byB2
ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiICAg
ICIsIG5hbWUsICI6ICIpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF4TmFtZUxl
bmd0aCAtIHN0cmxlbihuYW1lKTsgaS0tOykKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAi
KTsKLSAgICAgICAgICAgIG91dC5wcmludCh2ZWN0b3IsICJcbiIpOworICAgICAgICAgICAgb3V0
LnByaW50KHZlY3RvclJlZiwgIlxuIik7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaAppbmRleCBhN2JjYWE2YjllYmQ0YmFkNjNk
N2U3ODExMDkxOGUzZTQzNjM4N2QxLi5jYjcyY2IxZGQ4ZTRlYzEzNjYxNDhkNzRmOTgwMjY1Nzk0
ZWVkNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZh
aWx1cmVNb2RlLmgiCisjaW5jbHVkZSAiQmxvY2tEaXJlY3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAi
Q2VsbEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkxvY2Fs
QWxsb2NhdG9yLmgiCkBAIC00NCwzMyArNDUsNiBAQCBjbGFzcyBJc29DZWxsU2V0OwogY2xhc3Mg
TWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9S
X0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykgXAotICAgIG1hY3JvKGxpdmUsIExpdmUp
IC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9c
Ci0gICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBo
YXZlIG5vIGxpdmUgb2JqZWN0cy4gKi8gXAotICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVk
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMu
ICovXAotICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90
RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0
aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCku
ICovIFwKLSAgICBtYWNybyhkZXN0cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBv
ZiBhbGwgYmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBt
YWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBv
YmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKLSAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5j
cmVtZW50YWwgc3dlZXBlci4gKi9cCi0gICAgXAotICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBk
dXJpbmcgbWFya2luZy4gKi9cCi0gICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90
RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwK
LSAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2Yg
YWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLwotCi0vLyBGSVhNRTogV2UgZGVmaW5lZCBj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6Ci0vLwotLy8g
ICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCi0vLwotLy8gSW5zdGVhZCBv
ZiBjYWxsaW5nIGl0IGNhbkFsbG9jYXRlIGFuZCBtYWtpbmcgaXQgaW5jbHVzaXZlOgotLy8KLS8v
ICAgICBjYW5BbGxvY2F0ZSAmIGVtcHR5ID09IGVtcHR5Ci0vLwotLy8gVGhlIGxhdHRlciBpcyBw
cm9iYWJseSBiZXR0ZXIuIEknbGwgbGVhdmUgaXQgdG8gYSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0
LCBzaW5jZSBicmVhdGhpbmcgb24KLS8vIHRoaXMgY29kZSBsZWFkcyB0byByZWdyZXNzaW9ucyBm
b3IgZGF5cywgYW5kIGl0J3Mgbm90IGNsZWFyIHRoYXQgbWFraW5nIHRoaXMgY2hhbmdlIHdvdWxk
Ci0vLyBpbXByb3ZlIHBlcmYgc2luY2UgaXQgd291bGQgbm90IGNoYW5nZSB0aGUgY29sbGVjdG9y
J3MgYmVoYXZpb3IsIGFuZCBlaXRoZXIgd2F5IHRoZSBkaXJlY3RvcnkKLS8vIGhhcyB0byBsb29r
IGF0IGJvdGggYml0dmVjdG9ycy4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjIxMjEKLQogY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEJsb2NrRGlyZWN0b3J5KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTc4LDcgKzUyLDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1YmxpYzoKLSAgICBCbG9ja0RpcmVjdG9yeShI
ZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICBCbG9ja0RpcmVjdG9yeShzaXplX3QgY2VsbFNp
emUpOwogICAgIH5CbG9ja0RpcmVjdG9yeSgpOwogICAgIHZvaWQgc2V0U3Vic3BhY2UoU3Vic3Bh
Y2UqKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC05OCw3ICs3Miw2IEBA
IGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsg
fQogICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0
cmlidXRlcy5kZXN0cnVjdGlvbjsgfQogICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29u
c3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmNlbGxLaW5kOyB9Ci0gICAgSGVhcCogaGVhcCgpIHsg
cmV0dXJuIG1faGVhcDsgfQogCiAgICAgYm9vbCBpc0ZyZWVMaXN0ZWRDZWxsKGNvbnN0IHZvaWQq
IHRhcmdldCk7CiAKQEAgLTExNSw5ICs4OCw5IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAg
ICBMb2NrJiBiaXR2ZWN0b3JMb2NrKCkgeyByZXR1cm4gbV9iaXR2ZWN0b3JMb2NrOyB9CiAKICNk
ZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFs
Qml0TmFtZSkgICAgIFwKLSAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5h
bWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3Ry
YWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXMgIyMgY2Fw
aXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKICAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNv
bnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBj
b25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5pbmRleCgp
KTsgfSBcCi0gICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExv
Y2tlciYsIHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5hbWVbaW5k
ZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV9iaXRzLnNldElz
ICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7IH0gXAogICAgIHZvaWQgc2V0SXMgIyMg
Y2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2VkQmxvY2s6
OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUobG9j
a2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CiAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNU
T1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUykKICN1bmRlZiBCTE9DS19ESVJF
Q1RPUllfQklUX0FDQ0VTU09SUwpAQCAtMTI2LDcgKzk5LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3Rv
cnkgewogICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihjb25zdCBBYnN0cmFjdExvY2tlciYsIGNv
bnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExC
QUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICAgICAgZnVuYyhtXyAjIyBs
b3dlckJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0cy5sb3dlckJpdE5hbWUoKSk7CiAgICAg
ICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxM
QkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSwogICAgIH0KQEAgLTEz
NSw3ICsxMDgsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgdm9pZCBmb3JFYWNoQml0
VmVjdG9yV2l0aE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jJiBmdW5jKQog
ICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUs
IGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lLCAjY2Fw
aXRhbEJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0
YWxCaXROYW1lKTsKICAgICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19E
SVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExC
QUNLCiAgICAgfQpAQCAtMTY2LDE3ICsxMzksMTQgQEAgY2xhc3MgQmxvY2tEaXJlY3Rvcnkgewog
ICAgIAogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja0ZvckFsbG9jYXRpb24oTG9j
YWxBbGxvY2F0b3ImKTsKICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0
ZUJsb2NrKCk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jayhIZWFw
Jik7CiAgICAgCiAgICAgVmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKICAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKIAogICAgIC8vIE11dGF0b3Ig
dXNlcyB0aGlzIHRvIGd1YXJkIHJlc2l6aW5nIHRoZSBiaXR2ZWN0b3JzLiBUaG9zZSB0aGluZ3Mg
aW4gdGhlIEdDIHRoYXQgbWF5IHJ1bgogICAgIC8vIGNvbmN1cnJlbnRseSB0byB0aGUgbXV0YXRv
ciBtdXN0IGxvY2sgdGhpcyB3aGVuIGFjY2Vzc2luZyB0aGUgYml0dmVjdG9ycy4KLSNkZWZpbmUg
QkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXRO
YW1lKSBcCi0gICAgRmFzdEJpdFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7Ci0gICAgRk9SX0VB
Q0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKQot
I3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfREVDTEFSQVRJT04KKyAgICBCbG9ja0RpcmVjdG9y
eUJpdHMgbV9iaXRzOwogICAgIExvY2sgbV9iaXR2ZWN0b3JMb2NrOwogICAgIExvY2sgbV9sb2Nh
bEFsbG9jYXRvcnNMb2NrOwogICAgIENlbGxBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKQEAgLTE5
MCw3ICsxNjAsNiBAQCBjbGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgCiAgICAgLy8gRklYTUU6
IEFsbCBvZiB0aGVzZSBzaG91bGQgcHJvYmFibHkgYmUgcmVmZXJlbmNlcy4KICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTg4Ci0gICAgSGVhcCogbV9o
ZWFwIHsgbnVsbHB0ciB9OwogICAgIFN1YnNwYWNlKiBtX3N1YnNwYWNlIHsgbnVsbHB0ciB9Owog
ICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3RvcnkgeyBudWxscHRyIH07CiAgICAgQmxv
Y2tEaXJlY3RvcnkqIG1fbmV4dERpcmVjdG9yeUluU3Vic3BhY2UgeyBudWxscHRyIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdjNzI5YTA1NzQwMmE1OTdhMzViZDRkMDMxZTFmNTNhYjNhMDMzOWIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApA
QCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zh
c3RCaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCisjZGVmaW5lIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwKKyAgICBt
YWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFj
dHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVjdHMuICovIFwKKyAgICBtYWNybyhhbGxv
Y2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwg
b2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBD
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJlIG5laXRo
ZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0
aWxpemF0aW9uIGZ1bGwpLiAqLyBcCisgICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGli
bGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0b3JzIHRv
IHJ1bi4gKi9cCisgICAgbWFjcm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tz
IHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8o
dW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUg
c3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVz
ZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RF
bXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUg
bm90IGVtcHR5LiAqLyBcCisgICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVk
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworLy8gRklY
TUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhbmQgZW1wdHkgdG8gYmUgZXhj
bHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ICYgZW1wdHkgPT0gMAor
Ly8KKy8vIEluc3RlYWQgb2YgY2FsbGluZyBpdCBjYW5BbGxvY2F0ZSBhbmQgbWFraW5nIGl0IGlu
Y2x1c2l2ZToKKy8vCisvLyAgICAgY2FuQWxsb2NhdGUgJiBlbXB0eSA9PSBlbXB0eQorLy8KKy8v
IFRoZSBsYXR0ZXIgaXMgcHJvYmFibHkgYmV0dGVyLiBJJ2xsIGxlYXZlIGl0IHRvIGEgZnV0dXJl
IGJ1ZyB0byBmaXggdGhhdCwgc2luY2UgYnJlYXRoaW5nIG9uCisvLyB0aGlzIGNvZGUgbGVhZHMg
dG8gcmVncmVzc2lvbnMgZm9yIGRheXMsIGFuZCBpdCdzIG5vdCBjbGVhciB0aGF0IG1ha2luZyB0
aGlzIGNoYW5nZSB3b3VsZAorLy8gaW1wcm92ZSBwZXJmIHNpbmNlIGl0IHdvdWxkIG5vdCBjaGFu
Z2UgdGhlIGNvbGxlY3RvcidzIGJlaGF2aW9yLCBhbmQgZWl0aGVyIHdheSB0aGUgZGlyZWN0b3J5
CisvLyBoYXMgdG8gbG9vayBhdCBib3RoIGJpdHZlY3RvcnMuCisvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIxCisKK2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0
cyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBiaXRzUGVyU2VnbWVudCA9IDMyOworICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgc2VnbWVudFNoaWZ0ID0gNTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGluZGV4TWFzayA9ICgxVSA8PCBzZWdtZW50U2hpZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KCgxIDw8IHNlZ21lbnRTaGlmdCkgPT0gYml0c1BlclNlZ21lbnQpOworCisjZGVmaW5lIEJM
T0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVChsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSArIDEKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQmxvY2tEaXJlY3Rv
cnlCaXRLaW5kcyA9IDAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RP
UllfQklUX0tJTkRfQ09VTlQpOworI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VO
VAorCisgICAgZW51bSBjbGFzcyBLaW5kIHsKKyNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9L
SU5EX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAg
Y2FwaXRhbEJpdE5hbWUsCisgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxP
Q0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9S
WV9CSVRfS0lORF9ERUNMQVJBVElPTgorICAgIH07CisKKyAgICBjbGFzcyBTZWdtZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFNlZ21lbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHN0ZDo6YXJy
YXk8dWludDMyX3QsIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsK
KyAgICB9OworCisgICAgdGVtcGxhdGU8S2luZCBraW5kPgorICAgIGNsYXNzIEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXcgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBwdWJsaWM6CisgICAgICAgIHVzaW5nIFZpZXdUeXBlID0gQmxvY2tEaXJlY3RvcnlCaXRW
ZWN0b3JXb3JkVmlldzsKKworICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3
KCkgPSBkZWZhdWx0OworCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXco
Y29uc3QgU2VnbWVudCogc2VnbWVudHMsIHNpemVfdCBudW1CaXRzKQorICAgICAgICAgICAgOiBt
X3NlZ21lbnRzKHNlZ21lbnRzKQorICAgICAgICAgICAgLCBtX251bUJpdHMobnVtQml0cykKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdAorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9udW1CaXRzOworICAgICAgICB9CisKKyAgICAg
ICAgdWludDMyX3Qgd29yZChzaXplX3QgaW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChpbmRleCA8IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMo
KSkpOworICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVudHNbaW5kZXhdLm1fZGF0YVtzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oa2luZCldOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3QmIHdv
cmQoc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBX
VEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21lbnRzKVtpbmRleF0ubV9kYXRhW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFy
QWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRl
eCA8IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSk7ICsraW5kZXgpCisg
ICAgICAgICAgICAgICAgY29uc3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhdLm1f
ZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldID0gMDsKKyAgICAgICAgfQorCisgICAg
ICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcgdmlldygpIGNvbnN0IHsgcmV0dXJu
ICp0aGlzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBTZWdtZW50KiBtX3NlZ21l
bnRzIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OworICAgIH07
CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAgdXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRW
ZWN0b3JWaWV3ID0gV1RGOjpGYXN0Qml0VmVjdG9ySW1wbDxCbG9ja0RpcmVjdG9yeUJpdFZlY3Rv
cldvcmRWaWV3PGtpbmQ+PjsKKworICAgIHRlbXBsYXRlPEtpbmQga2luZD4KKyAgICBjbGFzcyBC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiBmaW5hbCA6IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclZpZXc8a2luZD4geworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQmxvY2tE
aXJlY3RvcnlCaXRWZWN0b3JSZWYoQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5k
PiB2aWV3KQorICAgICAgICAgICAgOiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4o
dmlldykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3RoZXJXb3Jkcz4KKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9y
PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5k
Pjo6bnVtQml0cygpID09IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7
IGktLTspCisgICAgICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+
Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkgPSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7Cisg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiYg
b3BlcmF0b3J8PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhl
cikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
VmlldzxraW5kPjo6bnVtQml0cygpID09IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5
TGVuZ3RoKCk7IGktLTspCisgICAgICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JW
aWV3PGtpbmQ+Ojp1bnNhZmVXb3JkcygpLndvcmQoaSkgfD0gb3RoZXIudW5zYWZlV29yZHMoKS53
b3JkKGkpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBjbGVhckFsbCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0
VmVjdG9yVmlldzxraW5kPjo6dW5zYWZlV29yZHMoKS5jbGVhckFsbCgpOworICAgICAgICB9CisK
KyAgICAgICAgY2xhc3MgQml0UmVmZXJlbmNlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAg
ICAgQml0UmVmZXJlbmNlKCkgeyB9CisKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSh1aW50MzJf
dCogd29yZCwgdWludDMyX3QgbWFzaykKKyAgICAgICAgICAgICAgICA6IG1fd29yZCh3b3JkKQor
ICAgICAgICAgICAgICAgICwgbV9tYXNrKG1hc2spCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAhISgqbV93b3JkICYgbV9tYXNrKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgQml0UmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2
YWx1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAg
ICAgICAgICAgICAgICptX3dvcmQgfD0gbV9tYXNrOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgKm1fd29yZCAmPSB+bV9tYXNrOworICAgICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAg
ICAgdWludDMyX3QqIG1fd29yZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1f
bWFzayB7IDAgfTsKKyAgICAgICAgfTsKKworICAgICAgICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90
IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclZpZXc8a2luZD46Om51bUJpdHMoKSk7CisgICAgICAgICAgICByZXR1cm4g
Qml0UmVmZXJlbmNlKCZCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVuc2FmZVdv
cmRzKCkud29yZChpbmRleCA+PiA1KSwgMSA8PCAoaW5kZXggJiAzMSkpOworICAgICAgICB9CisK
KyAgICAgICAgQml0UmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgICAgICB9CisgICAgfTsKKworI2Rl
ZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxC
aXROYW1lKSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4
KSBjb25zdCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBsb3dlckJpdE5hbWUoKVtpbmRleF07
IFwKKyAgICB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRl
eCwgYm9vbCB2YWx1ZSkgXAorICAgIHsgXAorICAgICAgICBsb3dlckJpdE5hbWUoKVtpbmRleF0g
PSB2YWx1ZTsgXAorICAgIH0gXAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5k
OjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgY29uc3QgXAorICAgIHsgXAorICAgICAg
ICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1l
PihCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPiht
X3NlZ21lbnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwKKyAgICB9IFwKKyAgICBCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgXAor
ICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6
Y2FwaXRhbEJpdE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2Fw
aXRhbEJpdE5hbWU+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0KKyAg
ICBGT1JfRUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNT
T1JTKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCisKKyAgICB1bnNpZ25l
ZCBudW1CaXRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1CaXRzOyB9CisKKyAgICB2b2lkIHJlc2l6
ZSh1bnNpZ25lZCBudW1CaXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgb2xkTnVtQml0cyA9
IG1fbnVtQml0czsKKyAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKKyAgICAgICAgbV9zZWdt
ZW50cy5yZXNpemUoKG51bUJpdHMgKyBiaXRzUGVyU2VnbWVudCAtIDEpID4+IHNlZ21lbnRTaGlm
dCk7CisgICAgICAgIGlmIChudW1CaXRzIDwgb2xkTnVtQml0cyAmJiBudW1CaXRzKSB7CisgICAg
ICAgICAgICAvLyBDbGVhciB0aGUgbGFzdCBzZWdtZW50LgorICAgICAgICAgICAgYXV0byYgc2Vn
bWVudCA9IG1fc2VnbWVudHMubGFzdCgpOworICAgICAgICAgICAgdWludDMyX3QgbWFzayA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PigoMVVMTCA8PCAobnVtQml0cyAmIGluZGV4TWFzaykpIC0gMSk7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZkJs
b2NrRGlyZWN0b3J5Qml0S2luZHM7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgc2VnbWVudC5t
X2RhdGFbaW5kZXhdICY9IG1hc2s7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuYyYgZnVuYykK
KyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBz
ZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgICAgIGZ1bmMoaW5kZXgrKywgc2VnbWVudCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxTZWdtZW50PiBtX3NlZ21lbnRzOworICAg
IHVuc2lnbmVkIG1fbnVtQml0cyB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaApp
bmRleCA0MWNiYjQ5YzI2NDk1NjZkZWNkZjc4MjM4M2JlYzg4Y2EyMmJhNTc1Li42ODRiMWE4ZDg2
YzRjNzU5NzBkNDg2OGNmZDQwYmM2Nzk2YjAwYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUlubGluZXMuaApAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lk
IEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2soY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsK
LSAgICBtX2xpdmUuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMubGl2ZSgpLmZvckVhY2hTZXRC
aXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1f
YmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0pOwpAQCAtNDEsNyArNDEsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9j
ayhjb25zdCBGdW5jdAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQg
QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7Ci0gICAgbV9tYXJraW5nTm90RW1wdHkuZm9yRWFjaFNldEJpdCgKKyAgICBtX2JpdHMu
bWFya2luZ05vdEVtcHR5KCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5k
ZXgpIHsKICAgICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCmlu
ZGV4IDJjYjk1MmY2NzgyZTdkYjgwNTQ3NzE1MzlkNTllZGI5YTg5NDEyYmMuLmU0ZGM2MjM2OGFh
NDgyYzk5Njk2NmQ0OGJhMzhjNzQxMDUyMzJlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9ySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5l
cy5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJTdWJz
cGFjZUlubGluZXMuaCIKIApAQCAtNzksNyArODAsNyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJz
cGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAgICBpZiAoZmFsc2UpCiAgICAg
ICAgIGRhdGFMb2coIkNyZWF0aW5nIEJsb2NrRGlyZWN0b3J5L0xvY2FsQWxsb2NhdG9yIGZvciAi
LCBtX25hbWUsICIsICIsIGF0dHJpYnV0ZXMoKSwgIiwgIiwgc2l6ZUNsYXNzLCAiLlxuIik7CiAg
ICAgCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3Rvcnkg
PSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihtX3NwYWNlLmhlYXAoKSwgc2l6ZUNsYXNzKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rvcnk+IHVuaXF1ZURpcmVjdG9yeSA9IG1h
a2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KHNpemVDbGFzcyk7CiAgICAgQmxvY2tEaXJlY3Rvcnkq
IGRpcmVjdG9yeSA9IHVuaXF1ZURpcmVjdG9yeS5nZXQoKTsKICAgICBtX2RpcmVjdG9yaWVzLmFw
cGVuZChXVEZNb3ZlKHVuaXF1ZURpcmVjdG9yeSkpOwogICAgIApAQCAtMTA1LDcgKzEwNiw3IEBA
IEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXpl
KQogICAgIH0KICAgICAKICAgICBkaXJlY3RvcnktPnNldE5leHREaXJlY3RvcnlJblN1YnNwYWNl
KG1fZmlyc3REaXJlY3RvcnkpOwotICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0
ZXJEaXJlY3RvcnkoZGlyZWN0b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJl
Z2lzdGVyRGlyZWN0b3J5KG1fc3BhY2UuaGVhcCgpLCBkaXJlY3RvcnkpOwogICAgIFdURjo6c3Rv
cmVTdG9yZUZlbmNlKCk7CiAgICAgbV9maXJzdERpcmVjdG9yeSA9IGRpcmVjdG9yeTsKICAgICBy
ZXR1cm4gYWxsb2NhdG9yOwpAQCAtMTI3LDcgKzEyOCw3IEBAIHZvaWQqIENvbXBsZXRlU3Vic3Bh
Y2U6OnRyeUFsbG9jYXRlU2xvdyhWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4
dCoKICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIAogICAgIGlmIChBbGxvY2F0b3Ig
YWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkVuc3VyZUFs
bG9jYXRvcikpCi0gICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUoZGVmZXJyYWxDb250
ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgICAgICByZXR1cm4g
YWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZh
aWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICAKICAgICBpZiAoc2l6ZSA8PSBPcHRpb25zOjpw
cmVjaXNlQWxsb2NhdGlvbkN1dG9mZigpCiAgICAgICAgICYmIHNpemUgPD0gTWFya2VkU3BhY2U6
OmxhcmdlQ3V0b2ZmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29t
cGxldGVTdWJzcGFjZUlubGluZXMuaAppbmRleCBlYWNlMmE2ZjVjODc3OWFmZGYwNjE2MGEzODE3
OGJjYzk5MzIyZjQwLi44NzFkZjJiMjc4OGQzYWVhMTdjYWIzZDljMmFmNWM2NDZhNTNhY2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJ
bmxpbmVzLmgKQEAgLTM2LDcgKzM2LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkKiBDb21wbGV0ZVN1
YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0MKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC5leHBlY3REb2VzR0MoKSk7CiAKICAgICBpZiAoQWxs
b2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9y
Rm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFs
bG9jYXRlKGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOworICAgICAgICByZXR1cm4gYWxs
b2NhdG9yLmFsbG9jYXRlKHZtLmhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwog
ICAgIHJldHVybiBhbGxvY2F0ZVNsb3codm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVy
ZU1vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29D
ZWxsU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCmlu
ZGV4IGFhNjJlMTFmZDQ0ZjZhYmNiYmJmNDI1Yjg2ZmRmMTExODBhODQ3OWMuLjgwYTljZWI2YTM3
OTZlOTNlNDZlMzc0MTdjOTlmMmViNjhmMGE0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb0NlbGxTZXQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFJlZjxTaGFyZWRUYXNrPE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKCk+PiBJc29DZWxsU2V0OjpwYXJhbGxlbE5vdEVtcHR5TWFya2VkQmxv
Y2tTCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgICAg
ICAgICAgYXV0byBiaXRzID0gbV9kaXJlY3RvcnkubV9tYXJraW5nTm90RW1wdHkgJiBtX3NldC5t
X2Jsb2Nrc1dpdGhCaXRzOworICAgICAgICAgICAgYXV0byBiaXRzID0gbV9kaXJlY3RvcnkubV9i
aXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9zZXQubV9ibG9ja3NXaXRoQml0czsKICAgICAgICAg
ICAgIG1faW5kZXggPSBiaXRzLmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CiAgICAgICAgICAgICBp
ZiAobV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nrcy5zaXplKCkpIHsKICAgICAgICAgICAg
ICAgICBtX2RvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvQ2VsbFNldElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0Nl
bGxTZXRJbmxpbmVzLmgKaW5kZXggZmM4MTY5Mjg3ZjA1NjZiZWViODlkMTk4NDcxOTExYTRhNzU5
YzRlMS4uZGI3ZThhY2I1NjFiMWQyMmQ0NzYxNjVjYmM0MDhiYzM4ZjY1NmMyZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oCkBAIC03MCw3ICs3
MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiB2b2lkIElzb0NlbGxTZXQ6OmZvckVhY2hN
YXJrZWRDZWxsKGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgQmxvY2tEaXJlY3RvcnkmIGRpcmVj
dG9yeSA9IG1fc3Vic3BhY2UubV9kaXJlY3Rvcnk7Ci0gICAgKGRpcmVjdG9yeS5tX21hcmtpbmdO
b3RFbXB0eSAmIG1fYmxvY2tzV2l0aEJpdHMpLmZvckVhY2hTZXRCaXQoCisgICAgKGRpcmVjdG9y
eS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0
Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBibG9ja0luZGV4KSB7CiAgICAgICAgICAgICBNYXJr
ZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IGRpcmVjdG9yeS5tX2Jsb2Nrc1tibG9ja0luZGV4XTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCmluZGV4IDQ1M2U2
MDIzM2Q2MTFkNDdjMzE3YmI3M2RjYjliMjY2ZTkwOTZjZTQuLmQxY2Y2MWYwNzcyNWI1YzgzOGFi
NDZmNmM3YjZjNzRmYTU1MjgyYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29T
dWJzcGFjZS5jcHAKQEAgLTMyLDE3ICszMiwxOCBAQAogI2luY2x1ZGUgIklzb0NlbGxTZXRJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSXNvU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9jYWxB
bGxvY2F0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCiBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBI
ZWFwJiBoZWFwLCBIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgc2l6ZV90IHNpemUsIHVpbnQ4
X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscykKICAgICA6IFN1YnNwYWNlKG5hbWUsIGhlYXApCi0g
ICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fZGlyZWN0b3J5KCZoZWFwLCBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKKyAgICAsIG1fZGlyZWN0
b3J5KFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUp
KQogICAgICwgbV9sb2NhbEFsbG9jYXRvcigmbV9kaXJlY3RvcnkpCiAgICAgLCBtX2lzb0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IobWFrZVVuaXF1ZTxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPigp
KQotICAgICwgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQobnVtYmVyT2ZMb3dlclRpZXJD
ZWxscykKIHsKKyAgICBtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCA9IG51bWJlck9mTG93
ZXJUaWVyQ2VsbHM7CisgICAgQVNTRVJUKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRC
bG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXplKCkpOwogICAgIEFTU0VSVChudW1iZXJP
Zkxvd2VyVGllckNlbGxzIDw9IE1hcmtlZEJsb2NrOjptYXhOdW1iZXJPZkxvd2VyVGllckNlbGxz
KTsKICAgICBtX2lzSXNvU3Vic3BhY2UgPSB0cnVlOwogICAgIGluaXRpYWxpemUoaGVhcENlbGxU
eXBlLCBtX2lzb0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuZ2V0KCkpOwpAQCAtNTAsNyArNTEsNyBA
QCBJc29TdWJzcGFjZTo6SXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiBoZWFwLCBIZWFw
Q2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgcwogICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9z
cGFjZS5kaXJlY3RvcnlMb2NrKCkpOwogICAgIG1fZGlyZWN0b3J5LnNldFN1YnNwYWNlKHRoaXMp
OwogICAgIG1fc3BhY2UuYWRkQmxvY2tEaXJlY3RvcnkobG9ja2VyLCAmbV9kaXJlY3RvcnkpOwot
ICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJEaXJlY3RvcnkoJm1fZGlyZWN0
b3J5KTsKKyAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KGhl
YXAsICZtX2RpcmVjdG9yeSk7CiAgICAgbV9maXJzdERpcmVjdG9yeSA9ICZtX2RpcmVjdG9yeTsK
IH0KIApAQCAtMTExLDggKzExMiw3IEBAIHZvaWQqIElzb1N1YnNwYWNlOjp0cnlBbGxvY2F0ZUZy
b21Mb3dlclRpZXIoKQogICAgICAgICByZXR1cm4gcmV2aXZlKGFsbG9jYXRpb24pOwogICAgIH0K
ICAgICBpZiAobV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQpIHsKLSAgICAgICAgc2l6ZV90
IHNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkU3BhY2U6OnNpemVTdGVwPiht
X3NpemUpOwotICAgICAgICBQcmVjaXNlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA9IFByZWNpc2VB
bGxvY2F0aW9uOjpjcmVhdGVGb3JMb3dlclRpZXIoKm1fc3BhY2UuaGVhcCgpLCBzaXplLCB0aGlz
LCAtLW1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KTsKKyAgICAgICAgUHJlY2lzZUFsbG9j
YXRpb24qIGFsbG9jYXRpb24gPSBQcmVjaXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVy
KG1fc3BhY2UuaGVhcCgpLCBjZWxsU2l6ZSgpLCB0aGlzLCAtLW1fcmVtYWluaW5nTG93ZXJUaWVy
Q2VsbENvdW50KTsKICAgICAgICAgcmV0dXJuIHJldml2ZShhbGxvY2F0aW9uKTsKICAgICB9CiAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29TdWJzcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2Uu
aAppbmRleCBjYTc3N2QwOGFmMWRhNWUwMDk1YzI4ODljMTI0NGY0ZGU2Y2NhNTYzLi5hNTE0M2Jk
YWVlY2IzYjljNDJkNThjZGFlYjVmMjRiMzEzN2QwNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSXNvU3Vic3BhY2Ug
OiBwdWJsaWMgU3Vic3BhY2UgewogICAgIEpTX0VYUE9SVF9QUklWQVRFIElzb1N1YnNwYWNlKENT
dHJpbmcgbmFtZSwgSGVhcCYsIEhlYXBDZWxsVHlwZSosIHNpemVfdCBzaXplLCB1aW50OF90IG51
bWJlck9mTG93ZXJUaWVyQ2VsbHMpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIH5Jc29TdWJzcGFj
ZSgpOwogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBz
aXplX3QgY2VsbFNpemUoKSB7IHJldHVybiBtX2RpcmVjdG9yeS5jZWxsU2l6ZSgpOyB9CiAKICAg
ICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yKHNpemVfdCwgQWxsb2NhdG9yRm9yTW9kZSkgb3ZlcnJp
ZGU7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZV90LCBBbGxvY2F0
b3JGb3JNb2RlKTsKQEAgLTYzLDE4ICs2MywxNiBAQCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1Ymxp
YyBTdWJzcGFjZSB7CiAgICAgdm9pZCBkaWRSZW1vdmVCbG9jayhzaXplX3QgYmxvY2tJbmRleCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRCZWdpblN3ZWVwaW5nVG9GcmVlTGlzdChNYXJrZWRCbG9j
azo6SGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgCi0gICAgc2l6ZV90IG1fc2l6ZTsKICAgICBCbG9j
a0RpcmVjdG9yeSBtX2RpcmVjdG9yeTsKICAgICBMb2NhbEFsbG9jYXRvciBtX2xvY2FsQWxsb2Nh
dG9yOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yPiBtX2lz
b0FsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiAgICAgU2VudGluZWxMaW5rZWRMaXN0PFByZWNpc2VB
bGxvY2F0aW9uLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8UHJlY2lzZUFsbG9jYXRpb24+PiBtX2xv
d2VyVGllckZyZWVMaXN0OwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxJc29DZWxsU2V0LCBQYWNr
ZWRSYXdTZW50aW5lbE5vZGU8SXNvQ2VsbFNldD4+IG1fY2VsbFNldHM7Ci0gICAgdWludDhfdCBt
X3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCB7IDAgfTsKIH07CiAKIEFMV0FZU19JTkxJTkUg
QWxsb2NhdG9yIElzb1N1YnNwYWNlOjphbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVfdCBzaXpl
LCBBbGxvY2F0b3JGb3JNb2RlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gdGhpcy0+
c2l6ZSgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFy
a2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICByZXR1cm4gQWxs
b2NhdG9yKCZtX2xvY2FsQWxsb2NhdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaAppbmRleCAwNTE4YTdmZTA2MmQ2MDkxNjlkN2Jj
M2Y3NTNjNTg0ZGM0ZWVjZjcwLi40NjYwZTc3ODNhYTY3MmVjOGEyOWY0ZjRmMzNjMjMyY2I0NmRm
NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlu
bGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGlu
ZXMuaApAQCAtMjcsMTEgKzI3LDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5M
SU5FIHZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mLCBzaXplX3Qgc2l6
ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlIGZhaWx1cmVNb2RlKQorQUxXQVlTX0lOTElORSB2b2lkKiBJc29TdWJzcGFjZTo6YWxsb2Nh
dGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKLSAgICBS
RUxFQVNFX0FTU0VSVChzaXplID09IHRoaXMtPnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0g
Y2VsbFNpemUoKSk7CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZp
cnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6TXVzdEFscmVhZHlIYXZlQWxsb2NhdG9yKTsK
LSAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBm
YWlsdXJlTW9kZSk7CisgICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLmFsbG9jYXRlKHZtLmhl
YXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVy
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAK
aW5kZXggYjllMTg1MDkwNDJlNzAxNzA3YjY3NmU4ODIxYjBjNDFhZjVkOGQ4Mi4uYjJmNmJiZDli
OTQ3OGMyYTUxYzNmMTM4MTg3MmQxYTZkY2ZiNjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3Mg
SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UgOiBwdWJsaWMgSXNvU3Vi
c3BhY2UgewogICAgIH5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSgpCiAgICAgewogICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGVyVk0ubV9sb2NrKTsKLSAgICAgICAgbV9wZXJWTS5t
X3N1YnNwYWNlUGVyVk0ucmVtb3ZlKCZzcGFjZSgpLmhlYXAoKS0+dm0oKSk7CisgICAgICAgIG1f
cGVyVk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZSgmc3BhY2UoKS5oZWFwKCkudm0oKSk7CiAgICAg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9j
YWxBbGxvY2F0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0
b3IuY3BwCmluZGV4IDUzZTA1MDhhYjJmZjAxY2Y0ZDQ5YTdmZjA3MDE3NzFmMGYwYWM0YWQuLmY1
NTU3MWM4NmNmYjJlMGFlNGNiZDFlMGFlMjdmZGI4NTBiZDBmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKQEAgLTExMCwxMiArMTEwLDExIEBA
IHZvaWQgTG9jYWxBbGxvY2F0b3I6OnN0b3BBbGxvY2F0aW5nRm9yR29vZCgpCiAgICAgcmVzZXQo
KTsKIH0KIAotdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJh
bENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVN
b2RlKQordm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoSGVhcCYgaGVhcCwg
R0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
IGZhaWx1cmVNb2RlKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3Bl
KGZhbHNlKTsKLSAgICBIZWFwJiBoZWFwID0gKm1fZGlyZWN0b3J5LT5tX2hlYXA7CiAgICAgQVNT
RVJUKGhlYXAudm0oKS5jdXJyZW50VGhyZWFkSXNIb2xkaW5nQVBJTG9jaygpKTsKLSAgICBkb1Rl
c3RDb2xsZWN0aW9uc0lmTmVlZGVkKGRlZmVycmFsQ29udGV4dCk7CisgICAgZG9UZXN0Q29sbGVj
dGlvbnNJZk5lZWRlZChoZWFwLCBkZWZlcnJhbENvbnRleHQpOwogCiAgICAgQVNTRVJUKCFtX2Rp
cmVjdG9yeS0+bWFya2VkU3BhY2UoKS5pc0l0ZXJhdGluZygpKTsKICAgICBoZWFwLmRpZEFsbG9j
YXRlKG1fZnJlZUxpc3Qub3JpZ2luYWxTaXplKCkpOwpAQCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQq
IExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jCiAgICAgLy8gR29vZnkgY29ybmVyIGNhc2U6IHRoZSBHQyBjYWxs
ZWQgYSBjYWxsYmFjayBhbmQgbm93IHRoaXMgZGlyZWN0b3J5IGhhcyBhIGN1cnJlbnRCbG9jay4g
VGhpcyBvbmx5CiAgICAgLy8gaGFwcGVucyB3aGVuIHJ1bm5pbmcgV2ViS2l0IHRlc3RzLCB3aGlj
aCBpbmplY3QgYSBjYWxsYmFjayBpbnRvIHRoZSBHQydzIGZpbmFsaXphdGlvbi4KICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50QmxvY2spKQotICAgICAgICByZXR1cm4gYWxsb2NhdGUoZGVmZXJy
YWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZShoZWFwLCBk
ZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICAKICAgICB2b2lkKiByZXN1bHQgPSB0
cnlBbGxvY2F0ZVdpdGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgCkBAIC0xNDIsNyArMTQxLDcgQEAg
dm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQq
IGRlZmVycmFsQ29udGV4dCwgQWxsb2MKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIAotICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gbV9kaXJlY3RvcnktPnRy
eUFsbG9jYXRlQmxvY2soKTsKKyAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fZGly
ZWN0b3J5LT50cnlBbGxvY2F0ZUJsb2NrKGhlYXApOwogICAgIGlmICghYmxvY2spIHsKICAgICAg
ICAgaWYgKGZhaWx1cmVNb2RlID09IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KQogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI0OSwxOCArMjQ4LDE4
IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjp0cnlBbGxvY2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5k
bGUqIGJsb2NrKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgTG9jYWxBbGxvY2F0b3I6
OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29u
dGV4dCkKK3ZvaWQgTG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoSGVh
cCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBpZiAo
IU9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcygpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBzdGF0aWMgdW5zaWduZWQgYWxsb2NhdGlvbkNvdW50ID0gMDsKICAgICBpZiAoIWFsbG9j
YXRpb25Db3VudCkgewotICAgICAgICBpZiAoIW1fZGlyZWN0b3J5LT5tX2hlYXAtPmlzRGVmZXJy
ZWQoKSkgeworICAgICAgICBpZiAoIWhlYXAuaXNEZWZlcnJlZCgpKSB7CiAgICAgICAgICAgICBp
ZiAoZGVmZXJyYWxDb250ZXh0KQogICAgICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dC0+bV9z
aG91bGRHQyA9IHRydWU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9kaXJl
Y3RvcnktPm1faGVhcC0+Y29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwor
ICAgICAgICAgICAgICAgIGhlYXAuY29sbGVjdE5vdyhTeW5jLCBDb2xsZWN0aW9uU2NvcGU6OkZ1
bGwpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICgrK2FsbG9jYXRpb25Db3VudCA+PSBPcHRp
b25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Mb2NhbEFsbG9jYXRvci5oCmluZGV4IDQzNzI3M2YzNjY4MGU0YTgwOTY4N2NkZjhjOGU0
YThjZjRlY2MxYWQuLjliNjUxYjA3MDM3NjgxNGYyYTM5N2JiMmExODZlZDcwMDA5OWQzODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQmxvY2tEaXJlY3Rvcnk7CiBjbGFzcyBH
Q0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiAKIGNsYXNzIExvY2FsQWxsb2NhdG9yIDog
cHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTG9jYWxBbGxvY2F0b3IpOwpAQCAtNDIsNyArNDMsNyBAQCBjbGFzcyBM
b2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRv
cj4gewogICAgIExvY2FsQWxsb2NhdG9yKEJsb2NrRGlyZWN0b3J5Kik7CiAgICAgfkxvY2FsQWxs
b2NhdG9yKCk7CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqLCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGUpOworICAgIHZvaWQqIGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVy
cmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CiAgICAgCiAgICAgdW5zaWduZWQg
Y2VsbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyZWVMaXN0LmNlbGxTaXplKCk7IH0KIApAQCAt
NjAsMTIgKzYxLDEyIEBAIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2Vu
dGluZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgZnJpZW5kIGNsYXNzIEJsb2NrRGlyZWN0
b3J5OwogICAgIAogICAgIHZvaWQgcmVzZXQoKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
KiBhbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlIGZhaWx1cmVNb2RlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNs
b3dDYXNlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7
CiAgICAgdm9pZCBkaWRDb25zdW1lRnJlZUxpc3QoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZVdp
dGhvdXRDb2xsZWN0aW5nKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6
SGFuZGxlKik7CiAgICAgdm9pZCogYWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKik7Ci0g
ICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoR0NEZWZlcnJh
bENvbnRleHQqKTsKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlvbnNJZk5l
ZWRlZChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqKTsKIAogICAgIEJsb2NrRGlyZWN0b3J5KiBt
X2RpcmVjdG9yeTsKICAgICBGcmVlTGlzdCBtX2ZyZWVMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklubGluZXMuaAppbmRleCAwMGQ1NTc0NzQy
NjlkNTcyNDI3ZmQ3ZDk1NzlhMWYwY2E0YWQ1YWYxLi5jM2M4Njk1ZTg1ODhjNzkwMzUwOGVhZTlm
NTFhMmY3OTlmOTgzZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9M
b2NhbEFsbG9jYXRvcklubGluZXMuaApAQCAtMzAsMTQgKzMwLDE0IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZShHQ0Rl
ZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFp
bHVyZU1vZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZShI
ZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKQot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2RpcmVjdG9yeS0+aGVhcCgpLT5leHBlY3REb2VzR0Mo
KSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGhlYXAuZXhwZWN0RG9lc0dDKCkpOwogICAgIHJl
dHVybiBtX2ZyZWVMaXN0LmFsbG9jYXRlKAogICAgICAgICBbJl0gKCkgLT4gSGVhcENlbGwqIHsK
LSAgICAgICAgICAgIHNhbml0aXplU3RhY2tGb3JWTShtX2RpcmVjdG9yeS0+aGVhcCgpLT52bSgp
KTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xv
d0Nhc2UoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSkpOworICAgICAgICAgICAgc2FuaXRp
emVTdGFja0ZvclZNKGhlYXAudm0oKSk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SGVhcENlbGwqPihhbGxvY2F0ZVNsb3dDYXNlKGhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVy
ZU1vZGUpKTsKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmNwcAppbmRleCBjNmUxZjZjZGY1MDI3ZmUxNDBmNjQ0ZWNhNDkxOTBmNDg0OGIy
NWEzLi40MjUwNGEwODZhZWRjMjYwOGYwNDRiNjc5ZWEzZmYzOTViYmRhMGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCkBAIC0zNzcsOCArMzc3LDggQEAg
dm9pZCBNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUoUHJpbnRTdHJlYW0mIG91dCkKICAg
ICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgZGlyZWN0b3J5KCktPmZvckVhY2hCaXRWZWN0b3JX
aXRoTmFtZSgKICAgICAgICAgaG9sZExvY2soZGlyZWN0b3J5KCktPmJpdHZlY3RvckxvY2soKSks
Ci0gICAgICAgIFsmXSAoRmFzdEJpdFZlY3RvciYgYml0dmVjdG9yLCBjb25zdCBjaGFyKiBuYW1l
KSB7Ci0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5hbWUsICI6IiwgYml0dmVjdG9yW2lu
ZGV4KCldID8gIllFUyIgOiAibm8iKTsKKyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmLCBjb25z
dCBjaGFyKiBuYW1lKSB7CisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5hbWUsICI6Iiwg
dmVjdG9yUmVmW2luZGV4KCldID8gIllFUyIgOiAibm8iKTsKICAgICAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAppbmRleCA5NzAzZTM1NzFl
M2Y0Y2RmOGIyMTI4MGMzOTEwNzE5MTNlMzVjOGE4Li5kNDA4ZDZlZWYxYzM3MjExMDg3ZWY2NmRm
NmNhMmQyMmZmOTMxZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtMTk1LDggKzE5Niw4IEBAIHZvaWQgTWFya2VkU3BhY2U6OmluaXRp
YWxpemVTaXplQ2xhc3NGb3JTdGVwU2l6ZSgpCiB9CiAKIE1hcmtlZFNwYWNlOjpNYXJrZWRTcGFj
ZShIZWFwKiBoZWFwKQotICAgIDogbV9oZWFwKGhlYXApCiB7CisgICAgQVNTRVJUX1VOVVNFRCho
ZWFwLCBoZWFwID09ICZ0aGlzLT5oZWFwKCkpOwogICAgIGluaXRpYWxpemVTaXplQ2xhc3NGb3JT
dGVwU2l6ZSgpOwogfQogCkBAIC0yMzQsNyArMjM1LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6bGFz
dENoYW5jZVRvRmluYWxpemUoKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpzd2VlcEJsb2NrcygpCiB7
Ci0gICAgbV9oZWFwLT5zd2VlcGVyKCkuc3RvcFN3ZWVwaW5nKCk7CisgICAgaGVhcCgpLnN3ZWVw
ZXIoKS5zdG9wU3dlZXBpbmcoKTsKICAgICBmb3JFYWNoRGlyZWN0b3J5KAogICAgICAgICBbJl0g
KEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAg
ICAgICBkaXJlY3Rvcnkuc3dlZXAoKTsKQEAgLTI3MCwxMyArMjcxLDEzIEBAIHZvaWQgTWFya2Vk
U3BhY2U6OnN3ZWVwUHJlY2lzZUFsbG9jYXRpb25zKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6cHJl
cGFyZUZvckFsbG9jYXRpb24oKQogewotICAgIEFTU0VSVCghVGhyZWFkOjptYXlCZUdDVGhyZWFk
KCkgfHwgbV9oZWFwLT53b3JsZElzU3RvcHBlZCgpKTsKKyAgICBBU1NFUlQoIVRocmVhZDo6bWF5
QmVHQ1RocmVhZCgpIHx8IGhlYXAoKS53b3JsZElzU3RvcHBlZCgpKTsKICAgICBmb3IgKFN1YnNw
YWNlKiBzdWJzcGFjZSA6IG1fc3Vic3BhY2VzKQogICAgICAgICBzdWJzcGFjZS0+cHJlcGFyZUZv
ckFsbG9jYXRpb24oKTsKIAogICAgIG1fYWN0aXZlV2Vha1NldHMudGFrZUZyb20obV9uZXdBY3Rp
dmVXZWFrU2V0cyk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkgPT0g
Q29sbGVjdGlvblNjb3BlOjpFZGVuKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc051
cnNlcnlPZmZzZXRGb3JTd2VlcCA9IG1fcHJlY2lzZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsK
ICAgICBlbHNlCiAgICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3
ZWVwID0gMDsKQEAgLTI5OCw3ICsyOTksNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtT
ZXRzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIAogICAgIG1fbmV3QWN0aXZlV2Vha1NldHMu
Zm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3BlKCkg
PT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNjb3Bl
KCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdlYWtTZXRzLmZv
ckVhY2godmlzaXQpOwogfQogCkBAIC0zMTAsNyArMzExLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6
cmVhcFdlYWtTZXRzKCkKICAgICAKICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZvckVhY2godmlz
aXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rp
b25TY29wZTo6RnVsbCkKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxl
Y3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0
KTsKIH0KIApAQCAtMzU2LDcgKzM1Nyw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JD
b25zZXJ2YXRpdmVTY2FuKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtpbmco
KQogewotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29w
ZTo6RWRlbikKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25T
Y29wZTo6RWRlbikKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNPZmZzZXRGb3JUaGlzQ29s
bGVjdGlvbiA9IG1fcHJlY2lzZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldDsKICAgICBlbHNlCiAg
ICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rpb24gPSAwOwpA
QCAtNDE2LDcgKzQxNyw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnNocmluaygpCiAKIHZvaWQgTWFy
a2VkU3BhY2U6OmJlZ2luTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CisgICAgaWYgKGhlYXAoKS5jb2xsZWN0
aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKICAgICAgICAgZm9yRWFjaERp
cmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4g
SXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuYmVnaW5NYXJraW5n
Rm9yRnVsbENvbGxlY3Rpb24oKTsKQEAgLTU1MSw3ICs1NTIsNyBAQCB2b2lkIE1hcmtlZFNwYWNl
OjpkaWRBbGxvY2F0ZUluQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAKIHZvaWQg
TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCgpCiB7Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVj
dGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CisgICAgaWYgKGhlYXAoKS5j
b2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pIHsKICAgICAgICAgZm9y
RWFjaERpcmVjdG9yeSgKICAgICAgICAgICAgIFsmXSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9y
eSkgLT4gSXRlcmF0aW9uU3RhdHVzIHsKICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkuc25hcHNo
b3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCmluZGV4IDAwNjgwNWI0NDdiZTFiNTIxYmNhNDQ0YzFkY2VhMWVmNzQyNzg0
ODguLmFkMzY2MjJmMWI1N2RkNjZiY2NmM2Q5YWE0ZmYyMTg2MGMzMTI3MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaApAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBN
YXJrZWRTcGFjZSB7CiAgICAgTWFya2VkU3BhY2UoSGVhcCopOwogICAgIH5NYXJrZWRTcGFjZSgp
OwogICAgIAotICAgIEhlYXAqIGhlYXAoKSBjb25zdCB7IHJldHVybiBtX2hlYXA7IH0KKyAgICBI
ZWFwJiBoZWFwKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgp
OyAvLyBNdXN0IGNhbGwgc3RvcEFsbG9jYXRpbmdGb3JHb29kIGZpcnN0LgogICAgIHZvaWQgZnJl
ZU1lbW9yeSgpOwpAQCAtMjEzLDcgKzIxMyw2IEBAIGNsYXNzIE1hcmtlZFNwYWNlIHsKICAgICBQ
cmVjaXNlQWxsb2NhdGlvbioqIG1fcHJlY2lzZUFsbG9jYXRpb25zRm9yVGhpc0NvbGxlY3Rpb25C
ZWdpbiB7IG51bGxwdHIgfTsKICAgICBQcmVjaXNlQWxsb2NhdGlvbioqIG1fcHJlY2lzZUFsbG9j
YXRpb25zRm9yVGhpc0NvbGxlY3Rpb25FbmQgeyBudWxscHRyIH07CiAKLSAgICBIZWFwKiBtX2hl
YXA7CiAgICAgc2l6ZV90IG1fY2FwYWNpdHkgeyAwIH07CiAgICAgSGVhcFZlcnNpb24gbV9tYXJr
aW5nVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CiAgICAgSGVhcFZlcnNpb24gbV9uZXdseUFs
bG9jYXRlZFZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaAppbmRleCBkZjg1MzFkOTdmYzY5NWEyMmNm
MjdkMjVhMWE0ODkwZjBiZTM1YWY1Li5lYTg1MTQ2NDkzMzAyOGM1MDkwOTk2ZjJlNjUxNDc3YTE0
MmUzZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlu
bGluZXMuaApAQCAtMzAsNiArMzAsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0FMV0FZU19J
TkxJTkUgSGVhcCYgTWFya2VkU3BhY2U6OmhlYXAoKSBjb25zdAoreworICAgIHJldHVybiAqYml0
d2lzZV9jYXN0PEhlYXAqPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSAtIE9CSkVDVF9P
RkZTRVRPRihIZWFwLCBtX29iamVjdFNwYWNlKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IGlubGluZSB2b2lkIE1hcmtlZFNwYWNlOjpmb3JFYWNoTGl2ZUNlbGwoSGVhcEl0ZXJh
dGlvblNjb3BlJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBBU1NFUlQoaXNJdGVy
YXRpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFj
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKaW5kZXggOTRj
MmZmNGM2YjJhY2E2YzE5ZGMxNThjYjRmOGU2MzczNGQwZTNhNy4uYWI5OWUyZGE2YzVjM2IzNTEz
NmIxN2FlNDRlNTFiYTc4YTk4OTczMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNw
YWNlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkhlYXBDZWxsVHlwZS5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJQYXJhbGxlbFNvdXJjZUFk
YXB0ZXIuaCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
U3Vic3BhY2VJbmxpbmVzLmgiCkBAIC00OSw3ICs1MCw3IEBAIHZvaWQgU3Vic3BhY2U6OmluaXRp
YWxpemUoSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIEFsaWduZWRNZW1vcnlBbGxvY2F0b3Iq
IGFsCiAgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yID0gYWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjsKICAgICBtX2RpcmVjdG9yeUZvckVtcHR5QWxsb2NhdGlvbiA9IG1fYWxpZ25lZE1lbW9yeUFs
bG9jYXRvci0+Zmlyc3REaXJlY3RvcnkoKTsKIAotICAgIEhlYXAmIGhlYXAgPSAqbV9zcGFjZS5o
ZWFwKCk7CisgICAgSGVhcCYgaGVhcCA9IG1fc3BhY2UuaGVhcCgpOwogICAgIGhlYXAub2JqZWN0
U3BhY2UoKS5tX3N1YnNwYWNlcy5hcHBlbmQodGhpcyk7CiAgICAgbV9hbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLT5yZWdpc3RlclN1YnNwYWNlKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1N1YnNwYWNlLmgKaW5kZXggYjUwODExNDRjZDRjMGIxMjkxY2QyYzM1M2MyMmM2ZmM0N2MxZmZh
Yi4uMzRlYTM0MTE4MzFiZTA4N2UzZTUzZWJlNjA3YjRhOGU2MDNkZGRkZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oCkBAIC0xMTksNiArMTE5LDggQEAgY2xhc3MgU3Vic3Bh
Y2UgewogICAgIENTdHJpbmcgbV9uYW1lOwogCiAgICAgYm9vbCBtX2lzSXNvU3Vic3BhY2UgeyBm
YWxzZSB9OworcHJvdGVjdGVkOgorICAgIHVpbnQ4X3QgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxs
Q291bnQgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aAppbmRleCBhOGVkNmI4Mjg5MDBmZTAyMTNiZGVkOWM2Mzc1Yzk3YjBhMzZjODU5Li40OTRlNjQ4
OWZlNGExZGIyMmRiMjc0NjdlNjkxNzJhYTM3MjAyZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CkBAIC00MjEsNiArNDIxLDkgQEAgY2xhc3MgRmFzdEJpdFZlY3RvckltcGwgewogICAgIH0KICAg
ICAKICAgICB0eXBlbmFtZSBXb3Jkczo6Vmlld1R5cGUgd29yZFZpZXcoKSBjb25zdCB7IHJldHVy
biBtX3dvcmRzLnZpZXcoKTsgfQorCisgICAgV29yZHMmIHVuc2FmZVdvcmRzKCkgeyByZXR1cm4g
bV93b3JkczsgfQorICAgIGNvbnN0IFdvcmRzJiB1bnNhZmVXb3JkcygpIGNvbnN0IHsgcmV0dXJu
IG1fd29yZHM7IH0KICAgICAKIHByaXZhdGU6CiAgICAgLy8gWW91J2QgdGhpbmsgdGhhdCB3ZSBj
b3VsZCByZW1vdmUgdGhpcyBmcmllbmQgaWYgd2UgdXNlZCBwcm90ZWN0ZWQsIGJ1dCB5b3UnZCBi
ZSB3cm9uZywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383521</attachid>
            <date>2019-11-13 17:14:01 -0800</date>
            <delta_ts>2019-11-13 17:49:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113171401.patch</filename>
            <type>text/plain</type>
            <size>63695</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li45ZGM1NjUwNDYyNjhiM2E1
OTNiMzdmN2ZjZjQ4ZjY3NDg5ZTE1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBh
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IGFwcGx5aW5nIElzb1N1YnNwYWNlIHRvIGFsbCBKU0NlbGxzLiBUaGlzIG1lYW5zIHRoYXQg
SXNvU3Vic3BhY2Ugc2hvdWxkIGJlIHNtYWxsIGVub3VnaCwKKyAgICAgICAgc28gdGhhdCB3ZSBj
YW4gaG9sZCBtYW55IElzb1N1YnNwYWNlcyB3aXRob3V0IGNvbnNpZGVyaW5nIGFib3V0IG1lbW9y
eSByZWdyZXNzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVjZSBzZXZl
cmFsIHRoaW5ncyB0byBzaHJpbmsgc2l6ZW9mKElzb1N1YnNwYWNlKSBmcm9tIDUyOCB0byAzODQu
CisKKyAgICAgICAgMS4gQWRqdXN0aW5nIG1lbWJlcnMgdG8gcmVtb3ZlIHNvbWUgcGFkZGluZ3Mu
CisgICAgICAgIDIuIFJlbW92ZSBtX2hlYXAgZmllbGQgc2luY2UgdGhpcyBjYW4gYmUgZ290IGZy
b20gdGhlIGNhbGxlciBlYXNpbHkuCisgICAgICAgIDMuIE1ha2UgTWFya2VkU3BhY2U6OmhlYXAo
KSBlZmZpY2llbnQ6IGp1c3QgZG9pbmcgcG9pbnRlciBhcml0aG1ldGljLgorICAgICAgICA0LiBS
ZW1vdmUgbV9zaXplIGZpZWxkIGZyb20gSXNvU3Vic3BhY2Ugc2luY2UgQmxvY2tEaXJlY3Rvcnkg
a25vd3MgY2VsbFNpemUuCisgICAgICAgIDUuIEludHJvZHVjZSBCbG9ja0RpcmVjdG9yeUJpdHMs
IHdoaWNoIHJlcGFsY2VzIDkgRmFzdEJpdFZlY3RvciBpbiBCbG9ja0RpcmVjdG9yeSB0byB0aGlz
IG9uZSBjbGFzcy4KKyAgICAgICAgICAgU2luY2UgYWxsIEZhc3RCaXRWZWN0b3IgaGFzIHRoZSBz
YW1lIHNpemUsIHdlIHNob3VsZCBub3QgaGF2ZSBhIHNpemUgZmllbGQgZm9yIGVhY2ggRmFzdEJp
dFZlY3Rvci4KKyAgICAgICAgICAgV2UgcmV1c2UgRmFzdEJpdFZlY3RvcidzIFZpZXcgbWVjaGFu
aXNtIHRvIGtlZXAgdGhlIHNhbWUgZXJnb25vbWljcyB3aGlsZSBtYWtpbmcgQmxvY2tEaXJlY3Rv
cnlCaXRzCisgICAgICAgICAgIG11Y2ggc21hbGxlci4gV2UgcHV0IDkgdWludDMyX3QgYXMgU2Vn
bWVudCwgYW5kIG1hbmFnZSBWZWN0b3I8U2VnbWVudD4gaW4gdGhpcyBkYXRhIHN0cnVjdHVyZS4g
U2luY2UKKyAgICAgICAgICAgd2UgdG91Y2ggc2V2ZXJhbCBiaXRzIGF0IHRoZSBzYW1lIHRpbWUg
Zm9yIHRoZSBzYW1lIGJsb2NrLWluZGV4LCB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIGNvbXBhY3Qg
YW5kCisgICAgICAgICAgIGVmZmljaWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6cmVnaXN0ZXJEaXJlY3RvcnkpOgorICAgICAgICAqIGhlYXAv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9yLmg6Cisg
ICAgICAgICogaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkFsbG9jYXRv
cjo6YWxsb2NhdGUgY29uc3QpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuY3BwOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpyZW1v
dmVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZv
ckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9j
a1RvU3dlZXApOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c3dlZXApOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmFzc2VydE5vVW5zd2VwdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpw
YXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6ZHVtcEJpdHMpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuaDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmNlbGxLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVj
dG9yeTo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmhlYXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
V29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxsKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpyZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJs
b2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpD
b21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KToKKyAgICAgICAgKEpTQzo6Q29tcGxl
dGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRl
Tm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKToKKyAgICAg
ICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6
OmZvckVhY2hNYXJrZWRDZWxsKToKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKToKKyAgICAgICAgKEpTQzo6SXNv
U3Vic3BhY2U6OnRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcik6CisgICAgICAgICogaGVhcC9Jc29T
dWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6Y2VsbFNpemUpOgorICAgICAg
ICAoSlNDOjpJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbCk6CisgICAgICAgIChK
U0M6Oklzb1N1YnNwYWNlOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZVBlclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92
aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxv
Y2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFs
bG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAqIGhl
YXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpy
ZWFwV2Vha1NldHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtp
bmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aGVhcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmhlYXAgY29uc3QpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5oOgorCiAyMDE5LTExLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CiAKICAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5h
cnkgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA1NWU3OTUxNWEyYmQxOWIzNDM1MGZhNjlkZTk5MzhlZmE2OGUzZTFi
Li44YTMzMTI0ZTZjZmU0MGZiMzBiOTdmMDJlODFhN2E3ZDg0MzMxZjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDE5LTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQmxvY2tEaXJlY3RvcnkncyBiaXRzIHNob3VsZCBiZSBjb21wYWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0
Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3Jkcyk6CisgICAgICAgIChX
VEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3JkcyBjb25zdCk6CisKIDIwMTktMTEtMTEg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFVUQyBv
ZmZzZXQgZm9yIFNhbW9hIGlzIG1pc2NhbGN1bGF0ZWQgd2hlbiAhSEFWRShUSU1FR00pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGNlYjNmYzA5OTA3MmFjMzY2MTZlMTYz
Njk2NmI1M2JiNTM3NWJjMi4uYjZmMGFlZDMwZTI0ZDNhZjVlM2RhYTFlOTI3MjVlNDJlZTE0M2Vk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTY5LDYgKzU2OSw3IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGVhcC9B
bGxvY2F0b3JJbmxpbmVzLmgKICAgICBoZWFwL0FsbG9jYXRvckZvck1vZGUuaAogICAgIGhlYXAv
QmxvY2tEaXJlY3RvcnkuaAorICAgIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKICAgICBoZWFw
L0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oCiAgICAgaGVhcC9DZWxsQXR0cmlidXRlcy5oCiAgICAg
aGVhcC9DZWxsQ29udGFpbmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGQy
N2Q5ODEwMTQzNzg5NDRhM2ExNjI4NzVhODU1MzJhOTE2Y2JkNi4uMzYzYmVmNDE4MTg1NGZjOWZl
MmU1OGQyOTJjYTI3ODljYmI4ODM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTE4MTcsNiArMTgxNyw3IEBACiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3Jl
YXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzZDQzk0NjIwODYzMTRGMDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFu
YWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM4NTBCMTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVE
NjNFMDA5QUJGOUMgLyogREZHTWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKKwkJRTM4NjUyRTMy
MzdDQTBDOTAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8q
IEJsb2NrRGlyZWN0b3J5Qml0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5j
SXRlcmF0b3JQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzg5M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0
ZXJhdG9yUHJvdG90eXBlLmx1dC5oICovOyB9OwogCQlFMzhEOTk5QzIyMUI3OEJCMDBENTA0NzQg
LyogSlNOb25EZXN0cnVjdGlibGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM4RDk5OUEyMjFCNzg5RjAwRDUwNDc0IC8qIEpTTm9uRGVzdHJ1
Y3RpYmxlUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzkwMDYyMTIyMDhCRkM0MDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTAwNjIwMjIwOEJG
QzMwMDEwMTlDRiAvKiBTdWJzcGFjZUFjY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00OTQ3LDYgKzQ5NDgsNyBAQAogCQlFMzgwQTc2QjFE
Q0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hY3JvQXNzZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5hbWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5
QyAvKiBERkdNaW5pZmllZElESW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElE
SW5saW5lcy5oOyBwYXRoID0gZGZnL0RGR01pbmlmaWVkSURJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVj
dG9yeUJpdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tEaXJlY3Rv
cnlCaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODkzQTFDMjIwM0E3QzYw
MEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5s
dXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5
Q0YyIC8qIEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOEQwNjBDMUY4RTgxNDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTAyLDYgKzYxMDQsNyBAQAog
CQkJCTBGQjQ2NzdFMUZEREE2RTUwMDNGQ0IwOSAvKiBBdG9tSW5kaWNlcy5oICovLAogCQkJCUMy
QjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5jcHAgKi8sCiAJCQkJQzJC
OTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIEJsb2NrRGlyZWN0b3J5LmggKi8sCisJCQkJRTM4NjUy
RTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICovLAogCQkJCTBGN0RG
MTQ1MUUyQkVGNjgwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCAqLywKIAkJCQkw
Rjk2MzAzNTFENDE5MkMzMDA1NjA5RDkgLyogQ2VsbEF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBG
OTYzMDM2MUQ0MTkyQzMwMDU2MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5oICovLApAQCAtOTAwOCw2
ICs5MDExLDcgQEAKIAkJCQk4Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYgLyogQmlu
YXJ5U3dpdGNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYg
LyogQmxvY2tEaXJlY3RvcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzODY1MkUzMjM3Q0EwQzkw
MEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RG
MTQ2MUUyQkVGNkEwMDk1OTUxQiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMThDM0VDMEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCmluZGV4IGU3YzkzYzI2MzY3OTc3MGIyZDAx
ZGYyZGUwYmZlY2ZmODZmMWNjMDguLmVhMzJkZjNjMGJjYzFkZTE3NmVjZmE4ZjZmMjdlMDI0YTAy
OTU4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1v
cnlBbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3IuY3BwCkBAIC00MCwxMiArNDAsMTIgQEAgQWxpZ25lZE1lbW9yeUFsbG9j
YXRvcjo6fkFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKQogewogfQogCi12b2lkIEFsaWduZWRNZW1v
cnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEJsb2NrRGlyZWN0b3J5KiBkaXJlY3Rvcnkp
Cit2b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEhlYXAmIGhl
YXAsIEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWRp
cmVjdG9yeS0+bmV4dERpcmVjdG9yeUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICAK
ICAgICBpZiAobV9kaXJlY3Rvcmllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFUaHJl
YWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBkaXJlY3RvcnktPmhlYXAoKS0+d29ybGRJc1N0b3BwZWQo
KSk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoaGVhcCwgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgp
IHx8IGhlYXAud29ybGRJc1N0b3BwZWQoKSk7CiAgICAgICAgIGZvciAoU3Vic3BhY2UqIHN1YnNw
YWNlID0gbV9zdWJzcGFjZXMuZmlyc3QoKTsgc3Vic3BhY2U7IHN1YnNwYWNlID0gc3Vic3BhY2Ut
Pm5leHRTdWJzcGFjZUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKQogICAgICAgICAgICAgc3Vi
c3BhY2UtPmRpZENyZWF0ZUZpcnN0RGlyZWN0b3J5KGRpcmVjdG9yeSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCmlu
ZGV4IDY2NDQyYWRmMzE4YTU2N2Q4MmFjYzBkZjgyMjJlMzVjYTFiNTRhZGMuLjk1NjY5NjM1ZDhk
ZDUxMzFkOGVmYmFiY2FlYWU2YjBmZTdlZDFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCbG9ja0RpcmVjdG9yeTsKK2NsYXNzIEhlYXA7CiBj
bGFzcyBTdWJzcGFjZTsKIAogY2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CkBAIC00NSw3
ICs0Niw3IEBAIGNsYXNzIEFsaWduZWRNZW1vcnlBbGxvY2F0b3IgewogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3QgPSAwOwogCi0gICAgdm9pZCByZWdpc3Rl
ckRpcmVjdG9yeShCbG9ja0RpcmVjdG9yeSopOworICAgIHZvaWQgcmVnaXN0ZXJEaXJlY3Rvcnko
SGVhcCYsIEJsb2NrRGlyZWN0b3J5Kik7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGZpcnN0RGlyZWN0
b3J5KCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rvcmllcy5maXJzdCgpOyB9CiAKICAgICB2b2lk
IHJlZ2lzdGVyU3Vic3BhY2UoU3Vic3BhY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxs
b2NhdG9yLmgKaW5kZXggMjI5MTU4ZmNlNDIwZjFlNzk5MjA5ZGMxNDQ4YjgzMjE4MGEyZjc5YS4u
NzIzOWQyMjlmY2U5MmJiYTA0NTQwMDNlNDlkNTI4ZjA3ZTMyN2NmNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBHQ0RlZmVycmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiBjbGFzcyBMb2NhbEFs
bG9jYXRvcjsKIAogLy8gVGhpcyBhYnN0cmFjdHMgaG93IHdlIHJlZmVyIHRvIExvY2FsQWxsb2Nh
dG9yIHNvIHRoYXQgd2UgY291bGQgZXZlbnR1YWxseSBzdXBwb3J0IHRocmVhZC1sb2NhbApAQCAt
NDUsNyArNDYsNyBAQCBjbGFzcyBBbGxvY2F0b3IgewogICAgIHsKICAgICB9CiAgICAgCi0gICAg
dm9pZCogYWxsb2NhdGUoR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUp
IGNvbnN0OworICAgIHZvaWQqIGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFs
bG9jYXRpb25GYWlsdXJlTW9kZSkgY29uc3Q7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUo
KSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fs
bG9jYXRvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklu
bGluZXMuaAppbmRleCAxNzU3MzI3M2M0OTlmYmM1OGE3YjRmZWJmZjdhMGQ5YmM5ZGQ0MmVmLi42
OTViMDg5ZDhjNTcxYTdiYjA4MGM3ZDljMWVhNmZjODlkOGU4MzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9ySW5saW5lcy5oCkBAIC0zMCw5ICszMCw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2Nh
dGUoR0NEZWZlcnJhbENvbnRleHQqIGNvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBtb2Rl
KSBjb25zdAorQUxXQVlTX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhl
YXAsIEdDRGVmZXJyYWxDb250ZXh0KiBjb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgbW9k
ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9sb2NhbEFsbG9jYXRvci0+YWxsb2NhdGUoY29udGV4
dCwgbW9kZSk7CisgICAgcmV0dXJuIG1fbG9jYWxBbGxvY2F0b3ItPmFsbG9jYXRlKGhlYXAsIGNv
bnRleHQsIG1vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcAppbmRleCA3ZWVlNGE4NzQ2YjZiZDE4ODUy
YTdhYjYyODc0YmJhZjU3YWJlMjg5Li4wY2M0YjQ3OWJmNzE3YjQ2MDA0M2JiY2YwNGNiNjYwM2My
MzA2M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVj
dG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3Rvcnku
Y3BwCkBAIC0zOCw5ICszOCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1CbG9ja0RpcmVjdG9y
eTo6QmxvY2tEaXJlY3RvcnkoSGVhcCogaGVhcCwgc2l6ZV90IGNlbGxTaXplKQorQmxvY2tEaXJl
Y3Rvcnk6OkJsb2NrRGlyZWN0b3J5KHNpemVfdCBjZWxsU2l6ZSkKICAgICA6IG1fY2VsbFNpemUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGNlbGxTaXplKSkKLSAgICAsIG1faGVhcChoZWFwKQogewog
fQogCkBAIC03Niw3ICs3NSw3IEBAIGJvb2wgQmxvY2tEaXJlY3Rvcnk6OmlzUGFnZWRPdXQoTW9u
b3RvbmljVGltZSBkZWFkbGluZSkKIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rv
cnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiB7Ci0gICAgbV9lbXB0eUN1cnNvciA9IG1fZW1w
dHkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9i
aXRzLmVtcHR5KCkuZmluZEJpdChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV9lbXB0
eUN1cnNvciA+PSBtX2Jsb2Nrcy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IHJldHVybiBtX2Jsb2Nrc1ttX2VtcHR5Q3Vyc29yXTsKQEAgLTg1LDcgKzg0LDcgQEAgTWFya2Vk
QmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiBN
YXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrRm9yQWxsb2NhdGlv
bihMb2NhbEFsbG9jYXRvciYgYWxsb2NhdG9yKQogewogICAgIGZvciAoOzspIHsKLSAgICAgICAg
YWxsb2NhdG9yLm1fYWxsb2NhdGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkg
fCBtX2VtcHR5KS5maW5kQml0KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOwor
ICAgICAgICBhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yID0gKG1fYml0cy5jYW5BbGxvY2F0
ZUJ1dE5vdEVtcHR5KCkgfCBtX2JpdHMuZW1wdHkoKSkuZmluZEJpdChhbGxvY2F0b3IubV9hbGxv
Y2F0aW9uQ3Vyc29yLCB0cnVlKTsKICAgICAgICAgaWYgKGFsbG9jYXRvci5tX2FsbG9jYXRpb25D
dXJzb3IgPj0gbV9ibG9ja3Muc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIApAQCAtOTYsMTEgKzk1LDExIEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGly
ZWN0b3J5OjpmaW5kQmxvY2tGb3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvCiAgICAg
fQogfQogCi1NYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVC
bG9jaygpCitNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVC
bG9jayhIZWFwJiBoZWFwKQogewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNj
b3BlKGZhbHNlKTsKICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJr
ZWRCbG9jazo6dHJ5Q3JlYXRlKCptX2hlYXAsIHN1YnNwYWNlKCktPmFsaWduZWRNZW1vcnlBbGxv
Y2F0b3IoKSk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6
OnRyeUNyZWF0ZShoZWFwLCBzdWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwog
ICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKQEAgLTExOCwy
MSArMTE3LDEyIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrKQogICAgICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBh
Y2l0eSgpOwogICAgICAgICBtX2Jsb2Nrcy5hcHBlbmQoYmxvY2spOwogICAgICAgICBpZiAobV9i
bG9ja3MuY2FwYWNpdHkoKSAhPSBvbGRDYXBhY2l0eSkgewotICAgICAgICAgICAgZm9yRWFjaEJp
dFZlY3RvcigKLSAgICAgICAgICAgICAgICBOb0xvY2tpbmdOZWNlc3NhcnksCi0gICAgICAgICAg
ICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRCh2ZWN0b3IsIHZlY3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9i
aXRzLm51bUJpdHMoKSA9PSBvbGRDYXBhY2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQobV9ibG9j
a3MuY2FwYWNpdHkoKSA+IG9sZENhcGFjaXR5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9iaXR2ZWN0b3JMb2NrKTsKICAgICAgICAgICAgIHN1YnNwYWNl
KCktPmRpZFJlc2l6ZUJpdHMobV9ibG9ja3MuY2FwYWNpdHkoKSk7Ci0gICAgICAgICAgICBmb3JF
YWNoQml0VmVjdG9yKAotICAgICAgICAgICAgICAgIGxvY2tlciwKLSAgICAgICAgICAgICAgICBb
Jl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAgICAgICAgICB2ZWN0b3Iu
cmVzaXplKG1fYmxvY2tzLmNhcGFjaXR5KCkpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgbV9iaXRzLnJlc2l6ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7CiAgICAgICAgIGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7
CkBAIC0xNDIsOCArMTMyLDggQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2Vk
QmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigKICAgICAg
ICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
cikgewotICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2ZWN0b3JbaW5kZXhdKTsK
KyAgICAgICAgWyZdKGF1dG8gdmVjdG9yUmVmKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VE
KHZlY3RvclJlZiwgIXZlY3RvclJlZltpbmRleF0pOwogICAgICAgICB9KTsKIAogICAgIC8vIFRo
aXMgaXMgdGhlIHBvaW50IGF0IHdoaWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXpl
KCkgYW5kIGF0dHJpYnV0ZXMoKS4KQEAgLTE2NSw4ICsxNTUsOCBAQCB2b2lkIEJsb2NrRGlyZWN0
b3J5OjpyZW1vdmVCbG9jayhNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKICAgICAKICAgICBm
b3JFYWNoQml0VmVjdG9yKAogICAgICAgICBob2xkTG9jayhtX2JpdHZlY3RvckxvY2spLAotICAg
ICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAgdmVjdG9yW2Js
b2NrLT5pbmRleCgpXSA9IGZhbHNlOworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYpIHsKKyAg
ICAgICAgICAgIHZlY3RvclJlZltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKICAgICAgICAgfSk7
CiAgICAgCiAgICAgYmxvY2stPmRpZFJlbW92ZUZyb21EaXJlY3RvcnkoKTsKQEAgLTE5Miw3ICsx
ODIsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiAgICAg
bV91bnN3ZXB0Q3Vyc29yID0gMDsKICAgICBtX2VtcHR5Q3Vyc29yID0gMDsKICAgICAKLSAgICBt
X2VkZW4uY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMuZWRlbigpLmNsZWFyQWxsKCk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoT3B0aW9uczo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBNYWtlIHRoaXMgd29yayBhZ2Fpbi4KQEAgLTIzNywyMCArMjI3LDIwIEBAIHZvaWQg
QmxvY2tEaXJlY3Rvcnk6OmJlZ2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKICAgICAvLyBN
YXJrIGJpdHMgYXJlIHN0aWNreSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBX
ZSBvbmx5IGNsZWFyIHRoZXNlIGR1cmluZyBmdWxsCiAgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlm
IHlvdSBzdXJ2aXZlZCB0aGUgbGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5l
eHQgb25lIHNvIGxvbmcKICAgICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KLSAgICBtX21h
cmtpbmdOb3RFbXB0eS5jbGVhckFsbCgpOwotICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwo
KTsKKyAgICBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMu
bWFya2luZ1JldGlyZWQoKS5jbGVhckFsbCgpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpl
bmRNYXJraW5nKCkKIHsKLSAgICBtX2FsbG9jYXRlZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5h
bGxvY2F0ZWQoKS5jbGVhckFsbCgpOwogICAgIAogICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQg
ZnJ1c3RyYXRpbmcgdG8gY29tcHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRv
ZXMgbm90IG5lZWQgdG8KICAgICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlz
LiBUaGF0IGtub3dsZWRnZSBpcyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgog
ICAgIC8vIHZlY3RvcnMuCiAgICAgCi0gICAgbV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdO
b3RFbXB0eTsKLSAgICBtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtp
bmdOb3RFbXB0eSAmIH5tX21hcmtpbmdSZXRpcmVkOworICAgIG1fYml0cy5lbXB0eSgpID0gbV9i
aXRzLmxpdmUoKSAmIH5tX2JpdHMubWFya2luZ05vdEVtcHR5KCk7CisgICAgbV9iaXRzLmNhbkFs
bG9jYXRlQnV0Tm90RW1wdHkoKSA9IG1fYml0cy5saXZlKCkgJiBtX2JpdHMubWFya2luZ05vdEVt
cHR5KCkgJiB+bV9iaXRzLm1hcmtpbmdSZXRpcmVkKCk7CiAKICAgICBpZiAobmVlZHNEZXN0cnVj
dGlvbigpKSB7CiAgICAgICAgIC8vIFRoZXJlIGFyZSBzb21lIGJsb2NrcyB0aGF0IHdlIGRpZG4n
dCBhbGxvY2F0ZSBvdXQgb2YgaW4gdGhlIGxhc3QgY3ljbGUsIGJ1dCB3ZSBzd2VwdCB0aGVtLiBU
aGlzCkBAIC0yNTgsNyArMjQ4LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygp
CiAgICAgICAgIC8vIGRlc3RydWN0b3JzIGFnYWluLiBUaGF0J3MgZmluZSBiZWNhdXNlIG9mIHph
cHBpbmcuIFRoZSBvbmx5IHRpbWUgd2hlbiB3ZSBjYW5ub3QgZm9yZ2V0IGlzIHdoZW4KICAgICAg
ICAgLy8gd2UganVzdCBhbGxvY2F0ZSBhIGJsb2NrIG9yIHdoZW4gd2UgbW92ZSBhIGJsb2NrIGZy
b20gb25lIHNpemUgY2xhc3MgdG8gYW5vdGhlci4gVGhhdCBkb2Vzbid0CiAgICAgICAgIC8vIGhh
cHBlbiBoZXJlLgotICAgICAgICBtX2Rlc3RydWN0aWJsZSA9IG1fbGl2ZTsKKyAgICAgICAgbV9i
aXRzLmRlc3RydWN0aWJsZSgpID0gbV9iaXRzLmxpdmUoKTsKICAgICB9CiAgICAgCiAgICAgaWYg
KGZhbHNlKSB7CkBAIC0yNjksMTcgKzI1OSwxNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRN
YXJraW5nKCkKIAogdm9pZCBCbG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNv
bGxlY3Rpb24oKQogewotICAgIG1fdW5zd2VwdCB8PSBtX2VkZW47CisgICAgbV9iaXRzLnVuc3dl
cHQoKSB8PSBtX2JpdHMuZWRlbigpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hv
dFVuc3dlcHRGb3JGdWxsQ29sbGVjdGlvbigpCiB7Ci0gICAgbV91bnN3ZXB0ID0gbV9saXZlOwor
ICAgIG1fYml0cy51bnN3ZXB0KCkgPSBtX2JpdHMubGl2ZSgpOwogfQogCiBNYXJrZWRCbG9jazo6
SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrVG9Td2VlcCgpCiB7Ci0gICAgbV91bnN3
ZXB0Q3Vyc29yID0gbV91bnN3ZXB0LmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKKyAg
ICBtX3Vuc3dlcHRDdXJzb3IgPSBtX2JpdHMudW5zd2VwdCgpLmZpbmRCaXQobV91bnN3ZXB0Q3Vy
c29yLCB0cnVlKTsKICAgICBpZiAobV91bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fdW5zd2VwdEN1
cnNvcl07CkBAIC0yODcsNyArMjc3LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJl
Y3Rvcnk6OmZpbmRCbG9ja1RvU3dlZXAoKQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgp
CiB7Ci0gICAgbV91bnN3ZXB0LmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLnVuc3dlcHQoKS5m
b3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CiAgICAgICAgICAg
ICBibG9jay0+c3dlZXAobnVsbHB0cik7CkBAIC0yOTYsNyArMjg2LDcgQEAgdm9pZCBCbG9ja0Rp
cmVjdG9yeTo6c3dlZXAoKQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpzaHJpbmsoKQogewotICAg
IChtX2VtcHR5ICYgfm1fZGVzdHJ1Y3RpYmxlKS5mb3JFYWNoU2V0Qml0KAorICAgIChtX2JpdHMu
ZW1wdHkoKSAmIH5tX2JpdHMuZGVzdHJ1Y3RpYmxlKCkpLmZvckVhY2hTZXRCaXQoCiAgICAgICAg
IFsmXSAoc2l6ZV90IGluZGV4KSB7CiAgICAgICAgICAgICBtYXJrZWRTcGFjZSgpLmZyZWVCbG9j
ayhtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTMwNyw3ICsyOTcsNyBAQCB2b2lk
IEJsb2NrRGlyZWN0b3J5Ojphc3NlcnROb1Vuc3dlcHQoKQogICAgIGlmIChBU1NFUlRfRElTQUJM
RUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAobV91bnN3ZXB0LmlzRW1wdHkoKSkK
KyAgICBpZiAobV9iaXRzLnVuc3dlcHQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBkYXRhTG9nKCJBc3NlcnRpb24gZmFpbGVkOiB1bnN3ZXB0IG5vdCBlbXB0eSBpbiAi
LCAqdGhpcywgIi5cbiIpOwpAQCAtMzI5LDcgKzMxOSw3IEBAIFJlZlB0cjxTaGFyZWRUYXNrPE1h
cmtlZEJsb2NrOjpIYW5kbGUqKCk+PiBCbG9ja0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJs
b2NrCiAgICAgICAgICAgICBpZiAobV9kb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgICAg
ICAgICAgbV9pbmRleCA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5LmZpbmRCaXQobV9p
bmRleCwgdHJ1ZSk7CisgICAgICAgICAgICBtX2luZGV4ID0gbV9kaXJlY3RvcnkubV9iaXRzLm1h
cmtpbmdOb3RFbXB0eSgpLmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAo
bV9pbmRleCA+PSBtX2RpcmVjdG9yeS5tX2Jsb2Nrcy5zaXplKCkpIHsKICAgICAgICAgICAgICAg
ICBtX2RvbmUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3
LDE4ICszNDcsMTkgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0m
IG91dCkKICAgICB1bnNpZ25lZCBtYXhOYW1lTGVuZ3RoID0gMDsKICAgICBmb3JFYWNoQml0VmVj
dG9yV2l0aE5hbWUoCiAgICAgICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChG
YXN0Qml0VmVjdG9yJiwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0oYXV0byB2ZWN0
b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh2ZWN0
b3JSZWYpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOwogICAg
ICAgICAgICAgbWF4TmFtZUxlbmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7
CiAgICAgICAgIH0pOwogICAgIAogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAg
ICAgTm9Mb2NraW5nTmVjZXNzYXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3Rv
ciwgY29uc3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0
IGNoYXIqIG5hbWUpIHsKICAgICAgICAgICAgIG91dC5wcmludCgiICAgICIsIG5hbWUsICI6ICIp
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbWF4TmFtZUxlbmd0aCAtIHN0cmxlbihu
YW1lKTsgaS0tOykKICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAiKTsKLSAgICAgICAgICAg
IG91dC5wcmludCh2ZWN0b3IsICJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KHZlY3RvclJl
ZiwgIlxuIik7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QmxvY2tEaXJlY3RvcnkuaAppbmRleCBhN2JjYWE2YjllYmQ0YmFkNjNkN2U3ODExMDkxOGUzZTQz
NjM4N2QxLi5jYjcyY2IxZGQ4ZTRlYzEzNjYxNDhkNzRmOTgwMjY1Nzk0ZWVkNDA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmgiCisj
aW5jbHVkZSAiQmxvY2tEaXJlY3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAiQ2VsbEF0dHJpYnV0ZXMu
aCIKICNpbmNsdWRlICJGcmVlTGlzdC5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9yLmgiCkBA
IC00NCwzMyArNDUsNiBAQCBjbGFzcyBJc29DZWxsU2V0OwogY2xhc3MgTWFya2VkU3BhY2U7CiBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9SX0VBQ0hfQkxPQ0tfRElS
RUNUT1JZX0JJVChtYWNybykgXAotICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2Yg
YmxvY2sgaW5kaWNlcyB0aGF0IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCi0gICAgbWFjcm8oZW1w
dHksIEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2Jq
ZWN0cy4gKi8gXAotICAgIG1hY3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgdGhhdCBhcmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAotICAgIG1hY3Jv
KGNhbkFsbG9jYXRlQnV0Tm90RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBz
ZXQgb2YgYWxsIGJsb2NrcyBhcmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUg
bW9yZSB0aGFuIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKLSAgICBtYWNy
byhkZXN0cnVjdGlibGUsIERlc3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRo
YXQgbWF5IGhhdmUgZGVzdHJ1Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBtYWNybyhlZGVuLCBFZGVu
KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRo
ZSBsYXN0IEdDLiAqL1wKLSAgICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgdGhhdCBjb3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBl
ci4gKi9cCi0gICAgXAotICAgIC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4g
Ki9cCi0gICAgbWFjcm8obWFya2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBz
ZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSBub3QgZW1wdHkuICovIFwKLSAgICBtYWNybyhtYXJr
aW5nUmV0aXJlZCwgTWFya2luZ1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IGFyZSByZXRpcmVkLiAqLwotCi0vLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5IGFuZCBlbXB0eSB0byBiZSBleGNsdXNpdmU6Ci0vLwotLy8gICAgIGNhbkFsbG9jYXRl
QnV0Tm90RW1wdHkgJiBlbXB0eSA9PSAwCi0vLwotLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0IGNh
bkFsbG9jYXRlIGFuZCBtYWtpbmcgaXQgaW5jbHVzaXZlOgotLy8KLS8vICAgICBjYW5BbGxvY2F0
ZSAmIGVtcHR5ID09IGVtcHR5Ci0vLwotLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0ZXIu
IEknbGwgbGVhdmUgaXQgdG8gYSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVhdGhp
bmcgb24KLS8vIHRoaXMgY29kZSBsZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5kIGl0
J3Mgbm90IGNsZWFyIHRoYXQgbWFraW5nIHRoaXMgY2hhbmdlIHdvdWxkCi0vLyBpbXByb3ZlIHBl
cmYgc2luY2UgaXQgd291bGQgbm90IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3IsIGFu
ZCBlaXRoZXIgd2F5IHRoZSBkaXJlY3RvcnkKLS8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0dmVj
dG9ycy4KLS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjEK
LQogY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJsb2Nr
RGlyZWN0b3J5KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTc4LDcgKzUyLDcg
QEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKIHB1YmxpYzoKLSAgICBCbG9ja0RpcmVjdG9yeShIZWFwKiwgc2l6ZV90IGNl
bGxTaXplKTsKKyAgICBCbG9ja0RpcmVjdG9yeShzaXplX3QgY2VsbFNpemUpOwogICAgIH5CbG9j
a0RpcmVjdG9yeSgpOwogICAgIHZvaWQgc2V0U3Vic3BhY2UoU3Vic3BhY2UqKTsKICAgICB2b2lk
IGxhc3RDaGFuY2VUb0ZpbmFsaXplKCk7CkBAIC05OCw3ICs3Miw2IEBAIGNsYXNzIEJsb2NrRGly
ZWN0b3J5IHsKICAgICBib29sIG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0
dHJpYnV0ZXMuZGVzdHJ1Y3Rpb24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0
aW9uTW9kZSBkZXN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVj
dGlvbjsgfQogICAgIEhlYXBDZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9h
dHRyaWJ1dGVzLmNlbGxLaW5kOyB9Ci0gICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsg
fQogCiAgICAgYm9vbCBpc0ZyZWVMaXN0ZWRDZWxsKGNvbnN0IHZvaWQqIHRhcmdldCk7CiAKQEAg
LTExNSw5ICs4OCw5IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBMb2NrJiBiaXR2ZWN0
b3JMb2NrKCkgeyByZXR1cm4gbV9iaXR2ZWN0b3JMb2NrOyB9CiAKICNkZWZpbmUgQkxPQ0tfRElS
RUNUT1JZX0JJVF9BQ0NFU1NPUlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwK
LSAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9IFwK
KyAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2JpdHMuaXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5k
ZXgpOyB9IFwKICAgICBib29sIGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9j
a2VyJiBsb2NrZXIsIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBp
cyAjIyBjYXBpdGFsQml0TmFtZShsb2NrZXIsIGJsb2NrLT5pbmRleCgpKTsgfSBcCi0gICAgdm9p
ZCBzZXRJcyAjIyBjYXBpdGFsQml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBp
bmRleCwgYm9vbCB2YWx1ZSkgeyBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0g
XAorICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXIm
LCBzaXplX3QgaW5kZXgsIGJvb2wgdmFsdWUpIHsgbV9iaXRzLnNldElzICMjIGNhcGl0YWxCaXRO
YW1lKGluZGV4LCB2YWx1ZSk7IH0gXAogICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImIGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ss
IGJvb2wgdmFsdWUpIHsgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUobG9ja2VyLCBibG9jay0+aW5k
ZXgoKSwgdmFsdWUpOyB9CiAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19E
SVJFQ1RPUllfQklUX0FDQ0VTU09SUykKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VT
U09SUwpAQCAtMTI2LDcgKzk5LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQg
Zm9yRWFjaEJpdFZlY3Rvcihjb25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMp
CiAgICAgewogI2RlZmluZSBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0TmFt
ZSwgY2FwaXRhbEJpdE5hbWUpIFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOwor
ICAgICAgICBmdW5jKG1fYml0cy5sb3dlckJpdE5hbWUoKSk7CiAgICAgICAgIEZPUl9FQUNIX0JM
T0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYg
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSwogICAgIH0KQEAgLTEzNSw3ICsxMDgsNyBAQCBj
bGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUo
Y29uc3QgQWJzdHJhY3RMb2NrZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUg
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSBcCi0gICAgICAgIGZ1bmMobV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOwor
ICAgICAgICBmdW5jKG1fYml0cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0YWxCaXROYW1lKTsKICAg
ICAgICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0NB
TExCQUNLKTsKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpAQCAt
MTY2LDE3ICsxMzksMTQgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIAogICAgIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGZpbmRCbG9ja0ZvckFsbG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImKTsK
ICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogdHJ5QWxsb2NhdGVCbG9jayhIZWFwJik7CiAgICAgCiAgICAg
VmVjdG9yPE1hcmtlZEJsb2NrOjpIYW5kbGUqPiBtX2Jsb2NrczsKICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IG1fZnJlZUJsb2NrSW5kaWNlczsKIAogICAgIC8vIE11dGF0b3IgdXNlcyB0aGlzIHRvIGd1
YXJkIHJlc2l6aW5nIHRoZSBiaXR2ZWN0b3JzLiBUaG9zZSB0aGluZ3MgaW4gdGhlIEdDIHRoYXQg
bWF5IHJ1bgogICAgIC8vIGNvbmN1cnJlbnRseSB0byB0aGUgbXV0YXRvciBtdXN0IGxvY2sgdGhp
cyB3aGVuIGFjY2Vzc2luZyB0aGUgYml0dmVjdG9ycy4KLSNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZ
X0JJVF9ERUNMQVJBVElPTihsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgRmFz
dEJpdFZlY3RvciBtXyAjIyBsb3dlckJpdE5hbWU7Ci0gICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNU
T1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0RFQ0xBUkFUSU9OKQotI3VuZGVmIEJMT0NLX0RJ
UkVDVE9SWV9CSVRfREVDTEFSQVRJT04KKyAgICBCbG9ja0RpcmVjdG9yeUJpdHMgbV9iaXRzOwog
ICAgIExvY2sgbV9iaXR2ZWN0b3JMb2NrOwogICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2Nr
OwogICAgIENlbGxBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKQEAgLTE5MCw3ICsxNjAsNiBAQCBj
bGFzcyBCbG9ja0RpcmVjdG9yeSB7CiAgICAgCiAgICAgLy8gRklYTUU6IEFsbCBvZiB0aGVzZSBz
aG91bGQgcHJvYmFibHkgYmUgcmVmZXJlbmNlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTg4Ci0gICAgSGVhcCogbV9oZWFwIHsgbnVsbHB0ciB9
OwogICAgIFN1YnNwYWNlKiBtX3N1YnNwYWNlIHsgbnVsbHB0ciB9OwogICAgIEJsb2NrRGlyZWN0
b3J5KiBtX25leHREaXJlY3RvcnkgeyBudWxscHRyIH07CiAgICAgQmxvY2tEaXJlY3RvcnkqIG1f
bmV4dERpcmVjdG9yeUluU3Vic3BhY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhM2JkNDQ4OGU3
Njc0ODE0OWRkM2M4ZGFkNzdmNmU4YzY2ZjU2OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeUJpdHMuaApAQCAtMCwwICsxLDI1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEZP
Ul9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZl
KSAvKiBUaGUgc2V0IG9mIGJsb2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICov
XAorICAgIG1hY3JvKGVtcHR5LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQg
aGF2ZSBubyBsaXZlIG9iamVjdHMuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRl
ZCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3Rz
LiAqL1wKKyAgICBtYWNybyhjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5v
dEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJl
dGlyZWQgKGkuZS4gYXJlIG1vcmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwp
LiAqLyBcCisgICAgbWFjcm8oZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQg
b2YgYWxsIGJsb2NrcyB0aGF0IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCisgICAg
bWFjcm8oZWRlbiwgRWRlbikgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcg
b2JqZWN0cyBzaW5jZSB0aGUgbGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2Vw
dCkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGlu
Y3JlbWVudGFsIHN3ZWVwZXIuICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQg
ZHVyaW5nIG1hcmtpbmcuICovXAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05v
dEVtcHR5KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBc
CisgICAgbWFjcm8obWFya2luZ1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9m
IGFsbCBibG9ja3MgdGhhdCBhcmUgcmV0aXJlZC4gKi8KKworLy8gRklYTUU6IFdlIGRlZmluZWQg
Y2FuQWxsb2NhdGVCdXROb3RFbXB0eSBhbmQgZW1wdHkgdG8gYmUgZXhjbHVzaXZlOgorLy8KKy8v
ICAgICBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5ICYgZW1wdHkgPT0gMAorLy8KKy8vIEluc3RlYWQg
b2YgY2FsbGluZyBpdCBjYW5BbGxvY2F0ZSBhbmQgbWFraW5nIGl0IGluY2x1c2l2ZToKKy8vCisv
LyAgICAgY2FuQWxsb2NhdGUgJiBlbXB0eSA9PSBlbXB0eQorLy8KKy8vIFRoZSBsYXR0ZXIgaXMg
cHJvYmFibHkgYmV0dGVyLiBJJ2xsIGxlYXZlIGl0IHRvIGEgZnV0dXJlIGJ1ZyB0byBmaXggdGhh
dCwgc2luY2UgYnJlYXRoaW5nIG9uCisvLyB0aGlzIGNvZGUgbGVhZHMgdG8gcmVncmVzc2lvbnMg
Zm9yIGRheXMsIGFuZCBpdCdzIG5vdCBjbGVhciB0aGF0IG1ha2luZyB0aGlzIGNoYW5nZSB3b3Vs
ZAorLy8gaW1wcm92ZSBwZXJmIHNpbmNlIGl0IHdvdWxkIG5vdCBjaGFuZ2UgdGhlIGNvbGxlY3Rv
cidzIGJlaGF2aW9yLCBhbmQgZWl0aGVyIHdheSB0aGUgZGlyZWN0b3J5CisvLyBoYXMgdG8gbG9v
ayBhdCBib3RoIGJpdHZlY3RvcnMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTYyMTIxCisKK2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBiaXRzUGVyU2VnbWVudCA9IDMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2Vn
bWVudFNoaWZ0ID0gNTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4TWFzayA9
ICgxVSA8PCBzZWdtZW50U2hpZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8IHNlZ21l
bnRTaGlmdCkgPT0gYml0c1BlclNlZ21lbnQpOworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9C
SVRfS0lORF9DT1VOVChsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSArIDEKKyAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcyA9IDAg
Rk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09V
TlQpOworI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVAorCisgICAgZW51bSBj
bGFzcyBLaW5kIHsKKyNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9O
KGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUpIFwKKyAgICAgICAgY2FwaXRhbEJpdE5hbWUs
CisgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJ
VF9LSU5EX0RFQ0xBUkFUSU9OKQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNM
QVJBVElPTgorICAgIH07CisKKyAgICBjbGFzcyBTZWdtZW50IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFNlZ21lbnQoKSA9IGRlZmF1bHQ7CisgICAgICAgIHN0ZDo6YXJyYXk8dWludDMyX3QsIG51
bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsKKyAgICB9OworCisgICAg
dGVtcGxhdGU8S2luZCBraW5kPgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29y
ZFZpZXcgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHVzaW5nIFZpZXdUeXBlID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzsK
KworICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KCkgPSBkZWZhdWx0Owor
CisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgU2VnbWVudCog
c2VnbWVudHMsIHNpemVfdCBudW1CaXRzKQorICAgICAgICAgICAgOiBtX3NlZ21lbnRzKHNlZ21l
bnRzKQorICAgICAgICAgICAgLCBtX251bUJpdHMobnVtQml0cykKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgc2l6ZV90IG51bUJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9udW1CaXRzOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgd29y
ZChzaXplX3QgaW5kZXgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRl
eCA8IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAg
ICAgcmV0dXJuIG1fc2VnbWVudHNbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
a2luZCldOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3QmIHdvcmQoc2l6ZV90IGluZGV4
KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0
b3JBcnJheUxlbmd0aChudW1CaXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0
PFNlZ21lbnQqPihtX3NlZ21lbnRzKVtpbmRleF0ubV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihraW5kKV07CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAg
eworICAgICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IFdURjo6ZmFzdEJp
dFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAg
Y29uc3RfY2FzdDxTZWdtZW50Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oa2luZCldID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9
OworICAgICAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0
ZTxLaW5kIGtpbmQ+CisgICAgdXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RG
OjpGYXN0Qml0VmVjdG9ySW1wbDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+
PjsKKworICAgIHRlbXBsYXRlPEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclJlZiBmaW5hbCA6IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2lu
ZD4geworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQmxvY2tEaXJlY3RvcnlCaXRWZWN0
b3JSZWYoQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzxraW5kPiB2aWV3KQorICAgICAg
ICAgICAgOiBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4odmlldykKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJXb3Jkcz4KKyAg
ICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShjb25zdCBXVEY6OkZh
c3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVtQml0cygpID09
IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTspCisgICAgICAg
ICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNhZmVXb3Jkcygp
LndvcmQoaSkgPSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldv
cmRzPgorICAgICAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25z
dCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjo6bnVt
Qml0cygpID09IG90aGVyLm51bUJpdHMoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OmFycmF5TGVuZ3RoKCk7IGktLTsp
CisgICAgICAgICAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+Ojp1bnNh
ZmVXb3JkcygpLndvcmQoaSkgfD0gb3RoZXIudW5zYWZlV29yZHMoKS53b3JkKGkpOworICAgICAg
ICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhckFsbCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5k
Pjo6dW5zYWZlV29yZHMoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgY2xhc3Mg
Qml0UmVmZXJlbmNlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgQml0UmVmZXJlbmNl
KCkgeyB9CisKKyAgICAgICAgICAgIEJpdFJlZmVyZW5jZSh1aW50MzJfdCogd29yZCwgdWludDMy
X3QgbWFzaykKKyAgICAgICAgICAgICAgICA6IG1fd29yZCh3b3JkKQorICAgICAgICAgICAgICAg
ICwgbV9tYXNrKG1hc2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiAhISgqbV93b3JkICYgbV9tYXNrKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgQml0UmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2YWx1ZSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgICAgICpt
X3dvcmQgfD0gbV9tYXNrOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgKm1fd29yZCAmPSB+bV9tYXNrOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgdWludDMyX3QqIG1f
d29yZCB7IG51bGxwdHIgfTsKKyAgICAgICAgICAgIHVpbnQzMl90IG1fbWFzayB7IDAgfTsKKyAg
ICAgICAgfTsKKworICAgICAgICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4KQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZp
ZXc8a2luZD46Om51bUJpdHMoKSk7CisgICAgICAgICAgICByZXR1cm4gQml0UmVmZXJlbmNlKCZC
bG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD46OnVuc2FmZVdvcmRzKCkud29yZChpbmRl
eCA+PiA1KSwgMSA8PCAoaW5kZXggJiAzMSkpOworICAgICAgICB9CisKKyAgICAgICAgQml0UmVm
ZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYXQoaW5kZXgpOworICAgICAgICB9CisgICAgfTsKKworI2RlZmluZSBCTE9DS19ESVJF
Q1RPUllfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSAgICAgXAor
ICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25zdCBcCisgICAg
eyBcCisgICAgICAgIHJldHVybiBsb3dlckJpdE5hbWUoKVtpbmRleF07IFwKKyAgICB9IFwKKyAg
ICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkg
XAorICAgIHsgXAorICAgICAgICBsb3dlckJpdE5hbWUoKVtpbmRleF0gPSB2YWx1ZTsgXAorICAg
IH0gXAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBpdGFsQml0TmFt
ZT4gbG93ZXJCaXROYW1lKCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gQmxvY2tE
aXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9ja0RpcmVjdG9y
eUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21lbnRzLmRhdGEo
KSwgbV9udW1CaXRzKSk7IFwKKyAgICB9IFwKKyAgICBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJl
ZjxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgXAorICAgIHsgXAorICAgICAg
ICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRhbEJpdE5hbWU+
KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJpdE5hbWU+KG1f
c2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0KKyAgICBGT1JfRUFDSF9CTE9D
S19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKQorI3VuZGVmIEJM
T0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCisKKyAgICB1bnNpZ25lZCBudW1CaXRzKCkgY29u
c3QgeyByZXR1cm4gbV9udW1CaXRzOyB9CisKKyAgICB2b2lkIHJlc2l6ZSh1bnNpZ25lZCBudW1C
aXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgb2xkTnVtQml0cyA9IG1fbnVtQml0czsKKyAg
ICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKKyAgICAgICAgbV9zZWdtZW50cy5yZXNpemUoV1RG
OjpmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykpOworICAgICAgICB1bnNpZ25lZCB1
c2VkQml0c0luTGFzdFNlZ21lbnQgPSBudW1CaXRzICYgaW5kZXhNYXNrOyAvLyBUaGlzIGlzIDAg
aWYgYWxsIGJpdHMgYXJlIHVzZWQuCisgICAgICAgIGlmIChudW1CaXRzIDwgb2xkTnVtQml0cyAm
JiB1c2VkQml0c0luTGFzdFNlZ21lbnQpIHsKKyAgICAgICAgICAgIC8vIENsZWFyIHRoZSBsYXN0
IHNlZ21lbnQuCisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBiaXRzUGVyU2VnbWVudCk7Cisg
ICAgICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9zZWdtZW50cy5sYXN0KCk7CisgICAgICAgICAg
ICB1aW50MzJfdCBtYXNrID0gKDFVIDw8IHVzZWRCaXRzSW5MYXN0U2VnbWVudCkgLSAxOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZCbG9ja0Rp
cmVjdG9yeUJpdEtpbmRzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIHNlZ21lbnQubV9kYXRh
W2luZGV4XSAmPSBtYXNrOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmMmIGZ1bmMpCisgICAg
eworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoYXV0byYgc2VnbWVu
dCA6IG1fc2VnbWVudHMpCisgICAgICAgICAgICBmdW5jKGluZGV4KyssIHNlZ21lbnQpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsKKyAgICB1bnNp
Z25lZCBtX251bUJpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKaW5kZXgg
NDFjYmI0OWMyNjQ5NTY2ZGVjZGY3ODIzODNiZWM4OGNhMjJiYTU3NS4uNjg0YjFhOGQ4NmM0Yzc1
OTcwZDQ4NjhjZmQ0MGJjNjc5NmIwMGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9j
a0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAg
bV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLmxpdmUoKS5mb3JFYWNoU2V0Qml0KAog
ICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nr
c1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoQmxvY2soY29u
c3QgRnVuY3QKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2Nr
RGlyZWN0b3J5Ojpmb3JFYWNoTm90RW1wdHlCbG9jayhjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewotICAgIG1fbWFya2luZ05vdEVtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLm1hcmtp
bmdOb3RFbXB0eSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7
CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAppbmRleCAy
Y2I5NTJmNjc4MmU3ZGI4MDU0NzcxNTM5ZDU5ZWRiOWE4OTQxMmJjLi5lNGRjNjIzNjhhYTQ4MmM5
OTY5NjZkNDhiYTM4Yzc0MTA1MjMyZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJMb2NhbEFsbG9jYXRvcklubGluZXMuaCIKICNpbmNsdWRl
ICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIK
ICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiU3Vic3BhY2VJ
bmxpbmVzLmgiCiAKQEAgLTc5LDcgKzgwLDcgQEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6
OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgaWYgKGZhbHNlKQogICAgICAgICBk
YXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBmb3IgIiwgbV9u
YW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIpOwogICAgIAot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0b3J5ID0gbWFr
ZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFzcyk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3RvcnkgPSBtYWtlVW5p
cXVlPEJsb2NrRGlyZWN0b3J5PihzaXplQ2xhc3MpOwogICAgIEJsb2NrRGlyZWN0b3J5KiBkaXJl
Y3RvcnkgPSB1bmlxdWVEaXJlY3RvcnkuZ2V0KCk7CiAgICAgbV9kaXJlY3Rvcmllcy5hcHBlbmQo
V1RGTW92ZSh1bmlxdWVEaXJlY3RvcnkpKTsKICAgICAKQEAgLTEwNSw3ICsxMDYsNyBAQCBBbGxv
Y2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qgc2l6ZSkKICAg
ICB9CiAgICAgCiAgICAgZGlyZWN0b3J5LT5zZXROZXh0RGlyZWN0b3J5SW5TdWJzcGFjZShtX2Zp
cnN0RGlyZWN0b3J5KTsKLSAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGly
ZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3Rl
ckRpcmVjdG9yeShtX3NwYWNlLmhlYXAoKSwgZGlyZWN0b3J5KTsKICAgICBXVEY6OnN0b3JlU3Rv
cmVGZW5jZSgpOwogICAgIG1fZmlyc3REaXJlY3RvcnkgPSBkaXJlY3Rvcnk7CiAgICAgcmV0dXJu
IGFsbG9jYXRvcjsKQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjp0
cnlBbGxvY2F0ZVNsb3coVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqCiAg
ICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKICAgICBpZiAoQWxsb2NhdG9yIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvcihzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpFbnN1cmVBbGxvY2F0
b3IpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKGRlZmVycmFsQ29udGV4dCwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgcmV0dXJuIGFsbG9j
YXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgCiAgICAgaWYgKHNpemUgPD0gT3B0aW9uczo6cHJlY2lz
ZUFsbG9jYXRpb25DdXRvZmYoKQogICAgICAgICAmJiBzaXplIDw9IE1hcmtlZFNwYWNlOjpsYXJn
ZUN1dG9mZikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxl
dGVTdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRl
U3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggZWFjZTJhNmY1Yzg3NzlhZmRmMDYxNjBhMzgxNzhiY2M5
OTMyMmY0MC4uODcxZGYyYjI3ODhkM2FlYTE3Y2FiM2Q5YzJhZjVjNjQ2YTUzYWNmZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5l
cy5oCkBAIC0zNiw3ICszNiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxldGVTdWJzcGFj
ZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOwogCiAgICAgaWYgKEFsbG9jYXRv
ciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1v
ZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0
ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRv
ci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICBy
ZXR1cm4gYWxsb2NhdGVTbG93KHZtLCBzaXplLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2Rl
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNl
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAppbmRleCBh
YTYyZTExZmQ0NGY2YWJjYmJiZjQyNWI4NmZkZjExMTgwYTg0NzljLi44MGE5Y2ViNmEzNzk2ZTkz
ZTQ2ZTM3NDE3Yzk5ZjJlYjY4ZjBhNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8U2hhcmVkVGFzazxNYXJrZWRCbG9j
azo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrUwog
ICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAg
IGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9zZXQubV9ibG9j
a3NXaXRoQml0czsKKyAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1fYml0cy5t
YXJraW5nTm90RW1wdHkoKSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJpdHM7CiAgICAgICAgICAgICBt
X2luZGV4ID0gYml0cy5maW5kQml0KG1faW5kZXgsIHRydWUpOwogICAgICAgICAgICAgaWYgKG1f
aW5kZXggPj0gbV9kaXJlY3RvcnkubV9ibG9ja3Muc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAg
bV9kb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lz
b0NlbGxTZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0
SW5saW5lcy5oCmluZGV4IGZjODE2OTI4N2YwNTY2YmVlYjg5ZDE5ODQ3MTkxMWE0YTc1OWM0ZTEu
LmRiN2U4YWNiNTYxYjFkMjJkNDc2MTY1Y2JjNDA4YmMzOGY2NTZjMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaApAQCAtNzAsNyArNzAsNyBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxsU2V0Ojpmb3JFYWNoTWFya2Vk
Q2VsbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIEJsb2NrRGlyZWN0b3J5JiBkaXJlY3Rvcnkg
PSBtX3N1YnNwYWNlLm1fZGlyZWN0b3J5OwotICAgIChkaXJlY3RvcnkubV9tYXJraW5nTm90RW1w
dHkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0Qml0KAorICAgIChkaXJlY3RvcnkubV9i
aXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9ibG9ja3NXaXRoQml0cykuZm9yRWFjaFNldEJpdCgK
ICAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgewogICAgICAgICAgICAgTWFya2VkQmxv
Y2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3NbYmxvY2tJbmRleF07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAppbmRleCA0NTNlNjAyMzNk
NjExZDQ3YzMxN2JiNzNkY2I5YjI2NmU5MDk2Y2U0Li5kMWNmNjFmMDc3MjViNWM4MzhhYjQ2ZjZj
N2I2Yzc0ZmE1NTI4MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2UuY3BwCkBAIC0zMiwxNyArMzIsMTggQEAKICNpbmNsdWRlICJJc29DZWxsU2V0SW5saW5lcy5o
IgogI2luY2x1ZGUgIklzb1N1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2Nh
dG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAogSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYg
aGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplLCB1aW50OF90IG51
bWJlck9mTG93ZXJUaWVyQ2VsbHMpCiAgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFwKQotICAgICwg
bV9zaXplKHNpemUpCi0gICAgLCBtX2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCisgICAgLCBtX2RpcmVjdG9yeShX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihzaXplKSkKICAg
ICAsIG1fbG9jYWxBbGxvY2F0b3IoJm1fZGlyZWN0b3J5KQogICAgICwgbV9pc29BbGlnbmVkTWVt
b3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4oKSkKLSAg
ICAsIG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KG51bWJlck9mTG93ZXJUaWVyQ2VsbHMp
CiB7CisgICAgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQgPSBudW1iZXJPZkxvd2VyVGll
ckNlbGxzOworICAgIEFTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6
OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICBBU1NFUlQobnVtYmVyT2ZMb3dl
clRpZXJDZWxscyA8PSBNYXJrZWRCbG9jazo6bWF4TnVtYmVyT2ZMb3dlclRpZXJDZWxscyk7CiAg
ICAgbV9pc0lzb1N1YnNwYWNlID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGhlYXBDZWxsVHlwZSwg
bV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmdldCgpKTsKQEAgLTUwLDcgKzUxLDcgQEAgSXNv
U3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxU
eXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3BhY2Uu
ZGlyZWN0b3J5TG9jaygpKTsKICAgICBtX2RpcmVjdG9yeS5zZXRTdWJzcGFjZSh0aGlzKTsKICAg
ICBtX3NwYWNlLmFkZEJsb2NrRGlyZWN0b3J5KGxvY2tlciwgJm1fZGlyZWN0b3J5KTsKLSAgICBt
X2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KCZtX2RpcmVjdG9yeSk7
CisgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeShoZWFwLCAm
bV9kaXJlY3RvcnkpOwogICAgIG1fZmlyc3REaXJlY3RvcnkgPSAmbV9kaXJlY3Rvcnk7CiB9CiAK
QEAgLTExMSw4ICsxMTIsNyBAQCB2b2lkKiBJc29TdWJzcGFjZTo6dHJ5QWxsb2NhdGVGcm9tTG93
ZXJUaWVyKCkKICAgICAgICAgcmV0dXJuIHJldml2ZShhbGxvY2F0aW9uKTsKICAgICB9CiAgICAg
aWYgKG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KSB7Ci0gICAgICAgIHNpemVfdCBzaXpl
ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZFNwYWNlOjpzaXplU3RlcD4obV9zaXpl
KTsKLSAgICAgICAgUHJlY2lzZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBQcmVjaXNlQWxsb2Nh
dGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKCptX3NwYWNlLmhlYXAoKSwgc2l6ZSwgdGhpcywgLS1t
X3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCk7CisgICAgICAgIFByZWNpc2VBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uID0gUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcihtX3Nw
YWNlLmhlYXAoKSwgY2VsbFNpemUoKSwgdGhpcywgLS1tX3JlbWFpbmluZ0xvd2VyVGllckNlbGxD
b3VudCk7CiAgICAgICAgIHJldHVybiByZXZpdmUoYWxsb2NhdGlvbik7CiAgICAgfQogICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNv
U3Vic3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKaW5k
ZXggY2E3NzdkMDhhZjFkYTVlMDA5NWMyODg5YzEyNDRmNGRlNmNjYTU2My4uYTUxNDNiZGFlZWNi
M2I5YzQyZDU4Y2RhZWI1ZjI0YjMxMzdkMDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9Jc29TdWJzcGFjZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIElzb1N1YnNwYWNlIDogcHVi
bGljIFN1YnNwYWNlIHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFjZShDU3RyaW5n
IG5hbWUsIEhlYXAmLCBIZWFwQ2VsbFR5cGUqLCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJP
Zkxvd2VyVGllckNlbGxzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvU3Vic3BhY2UoKTsK
IAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgc2l6ZV90
IGNlbGxTaXplKCkgeyByZXR1cm4gbV9kaXJlY3RvcnkuY2VsbFNpemUoKTsgfQogCiAgICAgQWxs
b2NhdG9yIGFsbG9jYXRvckZvcihzaXplX3QsIEFsbG9jYXRvckZvck1vZGUpIG92ZXJyaWRlOwog
ICAgIEFsbG9jYXRvciBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVfdCwgQWxsb2NhdG9yRm9y
TW9kZSk7CkBAIC02MywxOCArNjMsMTYgQEAgY2xhc3MgSXNvU3Vic3BhY2UgOiBwdWJsaWMgU3Vi
c3BhY2UgewogICAgIHZvaWQgZGlkUmVtb3ZlQmxvY2soc2l6ZV90IGJsb2NrSW5kZXgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQmVnaW5Td2VlcGluZ1RvRnJlZUxpc3QoTWFya2VkQmxvY2s6Okhh
bmRsZSopIG92ZXJyaWRlOwogICAgIAotICAgIHNpemVfdCBtX3NpemU7CiAgICAgQmxvY2tEaXJl
Y3RvcnkgbV9kaXJlY3Rvcnk7CiAgICAgTG9jYWxBbGxvY2F0b3IgbV9sb2NhbEFsbG9jYXRvcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4gbV9pc29BbGln
bmVkTWVtb3J5QWxsb2NhdG9yOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxQcmVjaXNlQWxsb2Nh
dGlvbiwgUGFja2VkUmF3U2VudGluZWxOb2RlPFByZWNpc2VBbGxvY2F0aW9uPj4gbV9sb3dlclRp
ZXJGcmVlTGlzdDsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8SXNvQ2VsbFNldCwgUGFja2VkUmF3
U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+PiBtX2NlbGxTZXRzOwotICAgIHVpbnQ4X3QgbV9yZW1h
aW5pbmdMb3dlclRpZXJDZWxsQ291bnQgeyAwIH07CiB9OwogCiBBTFdBWVNfSU5MSU5FIEFsbG9j
YXRvciBJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplX3Qgc2l6ZSwgQWxs
b2NhdG9yRm9yTW9kZSkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IHRoaXMtPnNpemUo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJs
b2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7CiAgICAgcmV0dXJuIEFsbG9jYXRv
cigmbV9sb2NhbEFsbG9jYXRvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggMDUxOGE3ZmUwNjJkNjA5MTY5ZDdiYzNmNzUz
YzU4NGRjNGVlY2Y3MC4uNDY2MGU3NzgzYWE2NzJlYzhhMjlmNGY0ZjMzYzIzMmNiNDZkZjc2MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgK
QEAgLTI3LDExICsyNywxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlTX0lOTElORSB2
b2lkKiBJc29TdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiwgc2l6ZV90IHNpemUsIEdD
RGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBm
YWlsdXJlTW9kZSkKK0FMV0FZU19JTkxJTkUgdm9pZCogSXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9u
VmlydHVhbChWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxD
b250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7Ci0gICAgUkVMRUFT
RV9BU1NFUlQoc2l6ZSA9PSB0aGlzLT5zaXplKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxT
aXplKCkpOwogICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFs
KHNpemUsIEFsbG9jYXRvckZvck1vZGU6Ok11c3RBbHJlYWR5SGF2ZUFsbG9jYXRvcik7Ci0gICAg
dm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLmFsbG9jYXRlKGRlZmVycmFsQ29udGV4dCwgZmFpbHVy
ZU1vZGUpOworICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBk
ZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCmluZGV4
IGI5ZTE4NTA5MDQyZTcwMTcwN2I2NzZlODgyMWIwYzQxYWY1ZDhkODIuLmIyZjZiYmQ5Yjk0Nzhj
MmE1MWMzZjEzODE4NzJkMWE2ZGNmYjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIElzb1N1
YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlIDogcHVibGljIElzb1N1YnNwYWNl
IHsKICAgICB+QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKQogICAgIHsKICAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3BlclZNLm1fbG9jayk7Ci0gICAgICAgIG1fcGVyVk0ubV9zdWJz
cGFjZVBlclZNLnJlbW92ZSgmc3BhY2UoKS5oZWFwKCktPnZtKCkpOworICAgICAgICBtX3BlclZN
Lm1fc3Vic3BhY2VQZXJWTS5yZW1vdmUoJnNwYWNlKCkuaGVhcCgpLnZtKCkpOwogICAgIH0KIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxs
b2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNw
cAppbmRleCA1M2UwNTA4YWIyZmYwMWNmNGQ0OWE3ZmYwNzAxNzcxZjBmMGFjNGFkLi5mNTU1NzFj
ODZjZmIyZTBhZTRjYmQxZTBhZTI3ZmRiODUwYmQwZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCkBAIC0xMTAsMTIgKzExMCwxMSBAQCB2b2lk
IExvY2FsQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZ0Zvckdvb2QoKQogICAgIHJlc2V0KCk7CiB9
CiAKLXZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250
ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkK
K3ZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEhlYXAmIGhlYXAsIEdDRGVm
ZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWls
dXJlTW9kZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxz
ZSk7Ci0gICAgSGVhcCYgaGVhcCA9ICptX2RpcmVjdG9yeS0+bV9oZWFwOwogICAgIEFTU0VSVCho
ZWFwLnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAgZG9UZXN0Q29s
bGVjdGlvbnNJZk5lZWRlZChkZWZlcnJhbENvbnRleHQpOworICAgIGRvVGVzdENvbGxlY3Rpb25z
SWZOZWVkZWQoaGVhcCwgZGVmZXJyYWxDb250ZXh0KTsKIAogICAgIEFTU0VSVCghbV9kaXJlY3Rv
cnktPm1hcmtlZFNwYWNlKCkuaXNJdGVyYXRpbmcoKSk7CiAgICAgaGVhcC5kaWRBbGxvY2F0ZSht
X2ZyZWVMaXN0Lm9yaWdpbmFsU2l6ZSgpKTsKQEAgLTEyOSw3ICsxMjgsNyBAQCB2b2lkKiBMb2Nh
bEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxD
b250ZXh0LCBBbGxvYwogICAgIC8vIEdvb2Z5IGNvcm5lciBjYXNlOiB0aGUgR0MgY2FsbGVkIGEg
Y2FsbGJhY2sgYW5kIG5vdyB0aGlzIGRpcmVjdG9yeSBoYXMgYSBjdXJyZW50QmxvY2suIFRoaXMg
b25seQogICAgIC8vIGhhcHBlbnMgd2hlbiBydW5uaW5nIFdlYktpdCB0ZXN0cywgd2hpY2ggaW5q
ZWN0IGEgY2FsbGJhY2sgaW50byB0aGUgR0MncyBmaW5hbGl6YXRpb24uCiAgICAgaWYgKFVOTElL
RUxZKG1fY3VycmVudEJsb2NrKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlKGRlZmVycmFsQ29u
dGV4dCwgZmFpbHVyZU1vZGUpOworICAgICAgICByZXR1cm4gYWxsb2NhdGUoaGVhcCwgZGVmZXJy
YWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CiAgICAgCiAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxs
b2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIApAQCAtMTQyLDcgKzE0MSw3IEBAIHZvaWQq
IExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIEFsbG9jCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fZGlyZWN0b3J5LT50cnlBbGxv
Y2F0ZUJsb2NrKCk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2RpcmVjdG9y
eS0+dHJ5QWxsb2NhdGVCbG9jayhoZWFwKTsKICAgICBpZiAoIWJsb2NrKSB7CiAgICAgICAgIGlm
IChmYWlsdXJlTW9kZSA9PSBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNDksMTggKzI0OCwxOCBAQCB2
b2lkKiBMb2NhbEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6SGFuZGxlKiBi
bG9jaykKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIExvY2FsQWxsb2NhdG9yOjpkb1Rl
c3RDb2xsZWN0aW9uc0lmTmVlZGVkKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQp
Cit2b2lkIExvY2FsQWxsb2NhdG9yOjpkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKEhlYXAmIGhl
YXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAgaWYgKCFPcHRp
b25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
c3RhdGljIHVuc2lnbmVkIGFsbG9jYXRpb25Db3VudCA9IDA7CiAgICAgaWYgKCFhbGxvY2F0aW9u
Q291bnQpIHsKLSAgICAgICAgaWYgKCFtX2RpcmVjdG9yeS0+bV9oZWFwLT5pc0RlZmVycmVkKCkp
IHsKKyAgICAgICAgaWYgKCFoZWFwLmlzRGVmZXJyZWQoKSkgewogICAgICAgICAgICAgaWYgKGRl
ZmVycmFsQ29udGV4dCkKICAgICAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQtPm1fc2hvdWxk
R0MgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZGlyZWN0b3J5
LT5tX2hlYXAtPmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsKKyAgICAg
ICAgICAgICAgICBoZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxsKTsK
ICAgICAgICAgfQogICAgIH0KICAgICBpZiAoKythbGxvY2F0aW9uQ291bnQgPj0gT3B0aW9uczo6
c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWxBbGxvY2F0b3IuaAppbmRleCA0MzcyNzNmMzY2ODBlNGE4MDk2ODdjZGY4YzhlNGE4Y2Y0
ZWNjMWFkLi45YjY1MWIwNzAzNzY4MTRmMmEzOTdiYjJhMTg2ZWQ3MDAwOTlkMzgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJsb2NrRGlyZWN0b3J5OwogY2xhc3MgR0NEZWZl
cnJhbENvbnRleHQ7CitjbGFzcyBIZWFwOwogCiBjbGFzcyBMb2NhbEFsbG9jYXRvciA6IHB1Ymxp
YyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRvcj4gewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKExvY2FsQWxsb2NhdG9yKTsKQEAgLTQyLDcgKzQzLDcgQEAgY2xhc3MgTG9jYWxB
bGxvY2F0b3IgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TG9jYWxBbGxvY2F0b3I+IHsK
ICAgICBMb2NhbEFsbG9jYXRvcihCbG9ja0RpcmVjdG9yeSopOwogICAgIH5Mb2NhbEFsbG9jYXRv
cigpOwogICAgIAotICAgIHZvaWQqIGFsbG9jYXRlKEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlKTsKKyAgICB2b2lkKiBhbGxvY2F0ZShIZWFwJiwgR0NEZWZlcnJhbENv
bnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOwogICAgIAogICAgIHVuc2lnbmVkIGNlbGxT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9mcmVlTGlzdC5jZWxsU2l6ZSgpOyB9CiAKQEAgLTYwLDEy
ICs2MSwxMiBAQCBjbGFzcyBMb2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxMb2NhbEFsbG9jYXRvcj4gewogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0RpcmVjdG9yeTsK
ICAgICAKICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxs
b2NhdGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBm
YWlsdXJlTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2Fz
ZShIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOwogICAg
IHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVXaXRob3V0
Q29sbGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRs
ZSopOwogICAgIHZvaWQqIGFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSopOwotICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKEdDRGVmZXJyYWxDb250
ZXh0Kik7CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQo
SGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7CiAKICAgICBCbG9ja0RpcmVjdG9yeSogbV9kaXJl
Y3Rvcnk7CiAgICAgRnJlZUxpc3QgbV9mcmVlTGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggMDBkNTU3NDc0MjY5ZDU3
MjQyN2ZkN2Q5NTc5YTFmMGNhNGFkNWFmMS4uYzNjODY5NWU4NTg4Yzc5MDM1MDhlYWU5ZjUxYTJm
Nzk5Zjk4M2Y1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxB
bGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxB
bGxvY2F0b3JJbmxpbmVzLmgKQEAgLTMwLDE0ICszMCwxNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotQUxXQVlTX0lOTElORSB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoR0NEZWZlcnJh
bENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVN
b2RlKQorQUxXQVlTX0lOTElORSB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUoSGVhcCYg
aGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1
cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9kaXJlY3RvcnktPmhlYXAoKS0+ZXhwZWN0RG9lc0dDKCkpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKICAgICByZXR1cm4g
bV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAgWyZdICgpIC0+IEhlYXBDZWxsKiB7Ci0gICAg
ICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV9kaXJlY3RvcnktPmhlYXAoKS0+dm0oKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SGVhcENlbGwqPihhbGxvY2F0ZVNsb3dDYXNl
KGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpKTsKKyAgICAgICAgICAgIHNhbml0aXplU3Rh
Y2tGb3JWTShoZWFwLnZtKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhlYXBD
ZWxsKj4oYWxsb2NhdGVTbG93Q2FzZShoZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2Rl
KSk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAKaW5kZXggYzZlMWY2Y2RmNTAyN2ZlMTQwZjY0NGVjYTQ5MTkwZjQ4NDhiMjVhMy4u
NDI1MDRhMDg2YWVkYzI2MDhmMDQ0YjY3OWVhM2ZmMzk1YmJkYTBkMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAtMzc3LDggKzM3Nyw4IEBAIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgQ29t
bWFQcmludGVyIGNvbW1hOwogICAgIGRpcmVjdG9yeSgpLT5mb3JFYWNoQml0VmVjdG9yV2l0aE5h
bWUoCiAgICAgICAgIGhvbGRMb2NrKGRpcmVjdG9yeSgpLT5iaXR2ZWN0b3JMb2NrKCkpLAotICAg
ICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIGJpdHZlY3RvciwgY29uc3QgY2hhciogbmFtZSkgewot
ICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBuYW1lLCAiOiIsIGJpdHZlY3RvcltpbmRleCgp
XSA/ICJZRVMiIDogIm5vIik7CisgICAgICAgIFsmXShhdXRvIHZlY3RvclJlZiwgY29uc3QgY2hh
ciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBuYW1lLCAiOiIsIHZlY3Rv
clJlZltpbmRleCgpXSA/ICJZRVMiIDogIm5vIik7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKaW5kZXggOTcwM2UzNTcxZTNmNGNk
ZjhiMjEyODBjMzkxMDcxOTEzZTM1YzhhOC4uZDQwOGQ2ZWVmMWMzNzIxMTA4N2VmNjZkZjZjYTJk
MjJmZjkzMWRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1h
cmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTE5NSw4ICsxOTYsOCBAQCB2b2lkIE1hcmtlZFNwYWNlOjppbml0aWFsaXpl
U2l6ZUNsYXNzRm9yU3RlcFNpemUoKQogfQogCiBNYXJrZWRTcGFjZTo6TWFya2VkU3BhY2UoSGVh
cCogaGVhcCkKLSAgICA6IG1faGVhcChoZWFwKQogeworICAgIEFTU0VSVF9VTlVTRUQoaGVhcCwg
aGVhcCA9PSAmdGhpcy0+aGVhcCgpKTsKICAgICBpbml0aWFsaXplU2l6ZUNsYXNzRm9yU3RlcFNp
emUoKTsKIH0KIApAQCAtMjM0LDcgKzIzNSw3IEBAIHZvaWQgTWFya2VkU3BhY2U6Omxhc3RDaGFu
Y2VUb0ZpbmFsaXplKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MoKQogewotICAg
IG1faGVhcC0+c3dlZXBlcigpLnN0b3BTd2VlcGluZygpOworICAgIGhlYXAoKS5zd2VlcGVyKCku
c3RvcFN3ZWVwaW5nKCk7CiAgICAgZm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgWyZdIChCbG9j
a0RpcmVjdG9yeSYgZGlyZWN0b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAg
ZGlyZWN0b3J5LnN3ZWVwKCk7CkBAIC0yNzAsMTMgKzI3MSwxMyBAQCB2b2lkIE1hcmtlZFNwYWNl
Ojpzd2VlcFByZWNpc2VBbGxvY2F0aW9ucygpCiAKIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVG
b3JBbGxvY2F0aW9uKCkKIHsKLSAgICBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8
IG1faGVhcC0+d29ybGRJc1N0b3BwZWQoKSk7CisgICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NU
aHJlYWQoKSB8fCBoZWFwKCkud29ybGRJc1N0b3BwZWQoKSk7CiAgICAgZm9yIChTdWJzcGFjZSog
c3Vic3BhY2UgOiBtX3N1YnNwYWNlcykKICAgICAgICAgc3Vic3BhY2UtPnByZXBhcmVGb3JBbGxv
Y2F0aW9uKCk7CiAKICAgICBtX2FjdGl2ZVdlYWtTZXRzLnRha2VGcm9tKG1fbmV3QWN0aXZlV2Vh
a1NldHMpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxl
Y3Rpb25TY29wZTo6RWRlbikKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENv
bGxlY3Rpb25TY29wZTo6RWRlbikKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNOdXJzZXJ5
T2Zmc2V0Rm9yU3dlZXAgPSBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAg
ZWxzZQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRGb3JTd2VlcCA9
IDA7CkBAIC0yOTgsNyArMjk5LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyhT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICAKICAgICBtX25ld0FjdGl2ZVdlYWtTZXRzLmZvckVh
Y2godmlzaXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgpID09IENv
bGxlY3Rpb25TY29wZTo6RnVsbCkKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09
IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3RpdmVXZWFrU2V0cy5mb3JFYWNo
KHZpc2l0KTsKIH0KIApAQCAtMzEwLDcgKzMxMSw3IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlYXBX
ZWFrU2V0cygpCiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsK
ICAgICAKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2Nv
cGU6OkZ1bGwpCisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9u
U2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fYWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiB9
CiAKQEAgLTM1Niw3ICszNTcsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQ29uc2Vy
dmF0aXZlU2NhbigpCiAKIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JNYXJraW5nKCkKIHsK
LSAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVk
ZW4pCisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6
OkVkZW4pCiAgICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhpc0NvbGxlY3Rp
b24gPSBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxzZQogICAgICAg
ICBtX3ByZWNpc2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uID0gMDsKQEAgLTQx
Niw3ICs0MTcsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogCiB2b2lkIE1hcmtlZFNw
YWNlOjpiZWdpbk1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgp
ID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgeworICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGZvckVhY2hEaXJlY3Rv
cnkoCiAgICAgICAgICAgICBbJl0gKEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkpIC0+IEl0ZXJh
dGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LmJlZ2luTWFya2luZ0ZvckZ1
bGxDb2xsZWN0aW9uKCk7CkBAIC01NTEsNyArNTUyLDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6ZGlk
QWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogCiB2b2lkIE1hcmtl
ZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQoKQogewotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25T
Y29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikgeworICAgIGlmIChoZWFwKCkuY29sbGVj
dGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CiAgICAgICAgIGZvckVhY2hE
aXJlY3RvcnkoCiAgICAgICAgICAgICBbJl0gKEJsb2NrRGlyZWN0b3J5JiBkaXJlY3RvcnkpIC0+
IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LnNuYXBzaG90VW5z
d2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuaAppbmRleCAwMDY4MDViNDQ3YmUxYjUyMWJjYTQ0NGMxZGNlYTFlZjc0Mjc4NDg4Li5h
ZDM2NjIyZjFiNTdkZDY2YmNjZjNkOWFhNGZmMjE4NjBjMzEyNzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xhc3MgTWFya2Vk
U3BhY2UgewogICAgIE1hcmtlZFNwYWNlKEhlYXAqKTsKICAgICB+TWFya2VkU3BhY2UoKTsKICAg
ICAKLSAgICBIZWFwKiBoZWFwKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwOyB9CisgICAgSGVhcCYg
aGVhcCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxpemUoKTsgLy8g
TXVzdCBjYWxsIHN0b3BBbGxvY2F0aW5nRm9yR29vZCBmaXJzdC4KICAgICB2b2lkIGZyZWVNZW1v
cnkoKTsKQEAgLTIxMyw3ICsyMTMsNiBAQCBjbGFzcyBNYXJrZWRTcGFjZSB7CiAgICAgUHJlY2lz
ZUFsbG9jYXRpb24qKiBtX3ByZWNpc2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uQmVnaW4g
eyBudWxscHRyIH07CiAgICAgUHJlY2lzZUFsbG9jYXRpb24qKiBtX3ByZWNpc2VBbGxvY2F0aW9u
c0ZvclRoaXNDb2xsZWN0aW9uRW5kIHsgbnVsbHB0ciB9OwogCi0gICAgSGVhcCogbV9oZWFwOwog
ICAgIHNpemVfdCBtX2NhcGFjaXR5IHsgMCB9OwogICAgIEhlYXBWZXJzaW9uIG1fbWFya2luZ1Zl
cnNpb24geyBpbml0aWFsVmVyc2lvbiB9OwogICAgIEhlYXBWZXJzaW9uIG1fbmV3bHlBbGxvY2F0
ZWRWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKaW5kZXggZGY4NTMxZDk3ZmM2OTVhMjJjZjI3ZDI1
YTFhNDg5MGYwYmUzNWFmNS4uZWE4NTE0NjQ5MzMwMjhjNTA5MDk5NmYyZTY1MTQ3N2ExNDJlM2Rm
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVz
LmgKQEAgLTMwLDYgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBTFdBWVNfSU5MSU5F
IEhlYXAmIE1hcmtlZFNwYWNlOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKmJpdHdpc2Vf
Y2FzdDxIZWFwKj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgLSBPQkpFQ1RfT0ZGU0VU
T0YoSGVhcCwgbV9vYmplY3RTcGFjZSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJdGVyYXRpb25T
Y29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlzSXRlcmF0aW5n
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCmluZGV4IDk0YzJmZjRj
NmIyYWNhNmMxOWRjMTU4Y2I0ZjhlNjM3MzRkMGUzYTcuLmFiOTllMmRhNmM1YzNiMzUxMzZiMTdh
ZTQ0ZTUxYmE3OGE5ODk3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyYWxsZWxTb3VyY2VBZGFwdGVy
LmgiCiAjaW5jbHVkZSAiUHJldmVudENvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1ZGUgIlN1YnNw
YWNlSW5saW5lcy5oIgpAQCAtNDksNyArNTAsNyBAQCB2b2lkIFN1YnNwYWNlOjppbml0aWFsaXpl
KEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBBbGlnbmVkTWVtb3J5QWxsb2NhdG9yKiBhbAog
ICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciA9IGFsaWduZWRNZW1vcnlBbGxvY2F0b3I7CiAg
ICAgbV9kaXJlY3RvcnlGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsaWduZWRNZW1vcnlBbGxvY2F0
b3ItPmZpcnN0RGlyZWN0b3J5KCk7CiAKLSAgICBIZWFwJiBoZWFwID0gKm1fc3BhY2UuaGVhcCgp
OworICAgIEhlYXAmIGhlYXAgPSBtX3NwYWNlLmhlYXAoKTsKICAgICBoZWFwLm9iamVjdFNwYWNl
KCkubV9zdWJzcGFjZXMuYXBwZW5kKHRoaXMpOwogICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRv
ci0+cmVnaXN0ZXJTdWJzcGFjZSh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N1YnNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJz
cGFjZS5oCmluZGV4IGI1MDgxMTQ0Y2Q0YzBiMTI5MWNkMmMzNTNjMjJjNmZjNDdjMWZmYWIuLjM0
ZWEzNDExODMxYmUwODdlM2U1M2ViZTYwN2I0YThlNjAzZGRkZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Vic3BhY2UuaApAQCAtMTE5LDYgKzExOSw4IEBAIGNsYXNzIFN1YnNwYWNlIHsK
ICAgICBDU3RyaW5nIG1fbmFtZTsKIAogICAgIGJvb2wgbV9pc0lzb1N1YnNwYWNlIHsgZmFsc2Ug
fTsKK3Byb3RlY3RlZDoKKyAgICB1aW50OF90IG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50
IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5k
ZXggYThlZDZiODI4OTAwZmUwMjEzYmRlZDljNjM3NWM5N2IwYTM2Yzg1OS4uMTA1MTA3ZDlkNTM2
ZWNkMWQ0NjY0ZGVkN2M5YWFlNmU2N2FmNTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRTdHJlYW07CiAKLWlu
bGluZSBzaXplX3QgZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJl
dHVybiAobnVtQml0cyArIDMxKSAvIDMyOyB9CitpbmxpbmUgY29uc3RleHByIHNpemVfdCBmYXN0
Qml0VmVjdG9yQXJyYXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsg
MzEpIC8gMzI7IH0KIAogY2xhc3MgRmFzdEJpdFZlY3RvcldvcmRWaWV3IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQyMSw2ICs0MjEsOSBAQCBjbGFzcyBGYXN0Qml0VmVjdG9y
SW1wbCB7CiAgICAgfQogICAgIAogICAgIHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlwZSB3b3JkVmll
dygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHMudmlldygpOyB9CisKKyAgICBXb3JkcyYgdW5zYWZl
V29yZHMoKSB7IHJldHVybiBtX3dvcmRzOyB9CisgICAgY29uc3QgV29yZHMmIHVuc2FmZVdvcmRz
KCkgY29uc3QgeyByZXR1cm4gbV93b3JkczsgfQogICAgIAogcHJpdmF0ZToKICAgICAvLyBZb3Un
ZCB0aGluayB0aGF0IHdlIGNvdWxkIHJlbW92ZSB0aGlzIGZyaWVuZCBpZiB3ZSB1c2VkIHByb3Rl
Y3RlZCwgYnV0IHlvdSdkIGJlIHdyb25nLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383528</attachid>
            <date>2019-11-13 17:49:43 -0800</date>
            <delta_ts>2019-11-13 18:01:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113174942.patch</filename>
            <type>text/plain</type>
            <size>65236</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li45ZGM1NjUwNDYyNjhiM2E1
OTNiMzdmN2ZjZjQ4ZjY3NDg5ZTE1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBh
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IGFwcGx5aW5nIElzb1N1YnNwYWNlIHRvIGFsbCBKU0NlbGxzLiBUaGlzIG1lYW5zIHRoYXQg
SXNvU3Vic3BhY2Ugc2hvdWxkIGJlIHNtYWxsIGVub3VnaCwKKyAgICAgICAgc28gdGhhdCB3ZSBj
YW4gaG9sZCBtYW55IElzb1N1YnNwYWNlcyB3aXRob3V0IGNvbnNpZGVyaW5nIGFib3V0IG1lbW9y
eSByZWdyZXNzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVjZSBzZXZl
cmFsIHRoaW5ncyB0byBzaHJpbmsgc2l6ZW9mKElzb1N1YnNwYWNlKSBmcm9tIDUyOCB0byAzODQu
CisKKyAgICAgICAgMS4gQWRqdXN0aW5nIG1lbWJlcnMgdG8gcmVtb3ZlIHNvbWUgcGFkZGluZ3Mu
CisgICAgICAgIDIuIFJlbW92ZSBtX2hlYXAgZmllbGQgc2luY2UgdGhpcyBjYW4gYmUgZ290IGZy
b20gdGhlIGNhbGxlciBlYXNpbHkuCisgICAgICAgIDMuIE1ha2UgTWFya2VkU3BhY2U6OmhlYXAo
KSBlZmZpY2llbnQ6IGp1c3QgZG9pbmcgcG9pbnRlciBhcml0aG1ldGljLgorICAgICAgICA0LiBS
ZW1vdmUgbV9zaXplIGZpZWxkIGZyb20gSXNvU3Vic3BhY2Ugc2luY2UgQmxvY2tEaXJlY3Rvcnkg
a25vd3MgY2VsbFNpemUuCisgICAgICAgIDUuIEludHJvZHVjZSBCbG9ja0RpcmVjdG9yeUJpdHMs
IHdoaWNoIHJlcGFsY2VzIDkgRmFzdEJpdFZlY3RvciBpbiBCbG9ja0RpcmVjdG9yeSB0byB0aGlz
IG9uZSBjbGFzcy4KKyAgICAgICAgICAgU2luY2UgYWxsIEZhc3RCaXRWZWN0b3IgaGFzIHRoZSBz
YW1lIHNpemUsIHdlIHNob3VsZCBub3QgaGF2ZSBhIHNpemUgZmllbGQgZm9yIGVhY2ggRmFzdEJp
dFZlY3Rvci4KKyAgICAgICAgICAgV2UgcmV1c2UgRmFzdEJpdFZlY3RvcidzIFZpZXcgbWVjaGFu
aXNtIHRvIGtlZXAgdGhlIHNhbWUgZXJnb25vbWljcyB3aGlsZSBtYWtpbmcgQmxvY2tEaXJlY3Rv
cnlCaXRzCisgICAgICAgICAgIG11Y2ggc21hbGxlci4gV2UgcHV0IDkgdWludDMyX3QgYXMgU2Vn
bWVudCwgYW5kIG1hbmFnZSBWZWN0b3I8U2VnbWVudD4gaW4gdGhpcyBkYXRhIHN0cnVjdHVyZS4g
U2luY2UKKyAgICAgICAgICAgd2UgdG91Y2ggc2V2ZXJhbCBiaXRzIGF0IHRoZSBzYW1lIHRpbWUg
Zm9yIHRoZSBzYW1lIGJsb2NrLWluZGV4LCB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIGNvbXBhY3Qg
YW5kCisgICAgICAgICAgIGVmZmljaWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6cmVnaXN0ZXJEaXJlY3RvcnkpOgorICAgICAgICAqIGhlYXAv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9yLmg6Cisg
ICAgICAgICogaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkFsbG9jYXRv
cjo6YWxsb2NhdGUgY29uc3QpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuY3BwOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpyZW1v
dmVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZv
ckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9j
a1RvU3dlZXApOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c3dlZXApOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmFzc2VydE5vVW5zd2VwdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpw
YXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6ZHVtcEJpdHMpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuaDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmNlbGxLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVj
dG9yeTo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmhlYXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
V29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxsKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpyZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJs
b2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpD
b21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KToKKyAgICAgICAgKEpTQzo6Q29tcGxl
dGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRl
Tm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKToKKyAgICAg
ICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6
OmZvckVhY2hNYXJrZWRDZWxsKToKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKToKKyAgICAgICAgKEpTQzo6SXNv
U3Vic3BhY2U6OnRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcik6CisgICAgICAgICogaGVhcC9Jc29T
dWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6Y2VsbFNpemUpOgorICAgICAg
ICAoSlNDOjpJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbCk6CisgICAgICAgIChK
U0M6Oklzb1N1YnNwYWNlOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZVBlclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92
aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxv
Y2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFs
bG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAqIGhl
YXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpy
ZWFwV2Vha1NldHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtp
bmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aGVhcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmhlYXAgY29uc3QpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5oOgorCiAyMDE5LTExLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CiAKICAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5h
cnkgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA1NWU3OTUxNWEyYmQxOWIzNDM1MGZhNjlkZTk5MzhlZmE2OGUzZTFi
Li44MjM3OTc3OTUzZTU0YTc0YTZiZGQ0YjUyM2RhMDNkMjM1YzIyZDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDE5LTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQmxvY2tEaXJlY3RvcnkncyBiaXRzIHNob3VsZCBiZSBjb21wYWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0
Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3Jkcyk6CisgICAgICAgIChX
VEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3JkcyBjb25zdCk6CisgICAgICAgIChXVEY6
OkZhc3RCaXRSZWZlcmVuY2U6OkZhc3RCaXRSZWZlcmVuY2UpOgorICAgICAgICAoV1RGOjpGYXN0
Qml0UmVmZXJlbmNlOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6RmFzdEJp
dFJlZmVyZW5jZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6YXQp
OgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdU
Rjo6RmFzdEJpdFZlY3Rvcjo6Qml0UmVmZXJlbmNlOjpCaXRSZWZlcmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpCaXRSZWZlcmVuY2U6Om9wZXJhdG9yIGJvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpCaXRSZWZlcmVu
Y2U6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisKIDIwMTktMTEtMTEgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFVUQyBvZmZzZXQgZm9yIFNhbW9hIGlz
IG1pc2NhbGN1bGF0ZWQgd2hlbiAhSEFWRShUSU1FR00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggZGNlYjNmYzA5OTA3MmFjMzY2MTZlMTYzNjk2NmI1M2JiNTM3NWJjMi4u
YjZmMGFlZDMwZTI0ZDNhZjVlM2RhYTFlOTI3MjVlNDJlZTE0M2VkMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTY5LDYgKzU2OSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgK
ICAgICBoZWFwL0FsbG9jYXRvckZvck1vZGUuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnkuaAor
ICAgIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5s
aW5lcy5oCiAgICAgaGVhcC9DZWxsQXR0cmlidXRlcy5oCiAgICAgaGVhcC9DZWxsQ29udGFpbmVy
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGQyN2Q5ODEwMTQzNzg5NDRhM2Ex
NjI4NzVhODU1MzJhOTE2Y2JkNi4uMzYzYmVmNDE4MTg1NGZjOWZlMmU1OGQyOTJjYTI3ODljYmI4
ODM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw3IEBA
CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0
MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZH
TWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKKwkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8q
IEJsb2NrRGlyZWN0b3J5Qml0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
ODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg5
M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1
dC5oICovOyB9OwogCQlFMzhEOTk5QzIyMUI3OEJCMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGli
bGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4RDk5OUEyMjFCNzg5RjAwRDUwNDc0IC8qIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzkwMDYyMTIy
MDhCRkM0MDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTAwNjIwMjIwOEJGQzMwMDEwMTlDRiAvKiBTdWJz
cGFjZUFjY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00OTQ3LDYgKzQ5NDgsNyBAQAogCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyog
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hY3JvQXNzZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5pZmllZElE
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElESW5saW5lcy5oOyBwYXRoID0g
ZGZnL0RGR01pbmlmaWVkSURJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tEaXJlY3RvcnlCaXRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zy
b21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjBD
MUY4RTgxNDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02MTAyLDYgKzYxMDQsNyBAQAogCQkJCTBGQjQ2NzdFMUZEREE2
RTUwMDNGQ0IwOSAvKiBBdG9tSW5kaWNlcy5oICovLAogCQkJCUMyQjkxNkM0MTREQTA0MEMwMENC
QUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5jcHAgKi8sCiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JB
Qzg2IC8qIEJsb2NrRGlyZWN0b3J5LmggKi8sCisJCQkJRTM4NjUyRTIyMzdDQTBDODAwRTFENUVF
IC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICovLAogCQkJCTBGN0RGMTQ1MUUyQkVGNjgwMDk1OTUx
QiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1
NjA5RDkgLyogQ2VsbEF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2
MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5oICovLApAQCAtOTAwOCw2ICs5MDExLDcgQEAKIAkJCQk4
Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3Rvcnku
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBCbG9ja0Rp
cmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUx
QiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VD
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCmluZGV4IGU3YzkzYzI2MzY3OTc3MGIyZDAxZGYyZGUwYmZlY2ZmODZmMWNj
MDguLmVhMzJkZjNjMGJjYzFkZTE3NmVjZmE4ZjZmMjdlMDI0YTAyOTU4YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
CkBAIC00MCwxMiArNDAsMTIgQEAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6fkFsaWduZWRNZW1v
cnlBbGxvY2F0b3IoKQogewogfQogCi12b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lz
dGVyRGlyZWN0b3J5KEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkpCit2b2lkIEFsaWduZWRNZW1v
cnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEhlYXAmIGhlYXAsIEJsb2NrRGlyZWN0b3J5
KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWRpcmVjdG9yeS0+bmV4dERpcmVj
dG9yeUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICAKICAgICBpZiAobV9kaXJlY3Rv
cmllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJlYWQo
KSB8fCBkaXJlY3RvcnktPmhlYXAoKS0+d29ybGRJc1N0b3BwZWQoKSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoaGVhcCwgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAud29ybGRJc1N0
b3BwZWQoKSk7CiAgICAgICAgIGZvciAoU3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJzcGFjZXMu
Zmlyc3QoKTsgc3Vic3BhY2U7IHN1YnNwYWNlID0gc3Vic3BhY2UtPm5leHRTdWJzcGFjZUluQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcigpKQogICAgICAgICAgICAgc3Vic3BhY2UtPmRpZENyZWF0ZUZp
cnN0RGlyZWN0b3J5KGRpcmVjdG9yeSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCmluZGV4IDY2NDQyYWRmMzE4YTU2
N2Q4MmFjYzBkZjgyMjJlMzVjYTFiNTRhZGMuLjk1NjY5NjM1ZDhkZDUxMzFkOGVmYmFiY2FlYWU2
YjBmZTdlZDFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBCbG9ja0RpcmVjdG9yeTsKK2NsYXNzIEhlYXA7CiBjbGFzcyBTdWJzcGFjZTsKIAog
Y2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IgewogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3QgPSAwOwogCi0gICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShCbG9ja0Rp
cmVjdG9yeSopOworICAgIHZvaWQgcmVnaXN0ZXJEaXJlY3RvcnkoSGVhcCYsIEJsb2NrRGlyZWN0
b3J5Kik7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGZpcnN0RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9kaXJlY3Rvcmllcy5maXJzdCgpOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3Vic3BhY2Uo
U3Vic3BhY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9j
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKaW5kZXggMjI5
MTU4ZmNlNDIwZjFlNzk5MjA5ZGMxNDQ4YjgzMjE4MGEyZjc5YS4uNzIzOWQyMjlmY2U5MmJiYTA0
NTQwMDNlNDlkNTI4ZjA3ZTMyN2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2Nh
dG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBHQ0RlZmVy
cmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiBjbGFzcyBMb2NhbEFsbG9jYXRvcjsKIAogLy8gVGhp
cyBhYnN0cmFjdHMgaG93IHdlIHJlZmVyIHRvIExvY2FsQWxsb2NhdG9yIHNvIHRoYXQgd2UgY291
bGQgZXZlbnR1YWxseSBzdXBwb3J0IHRocmVhZC1sb2NhbApAQCAtNDUsNyArNDYsNyBAQCBjbGFz
cyBBbGxvY2F0b3IgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NE
ZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpIGNvbnN0OworICAgIHZvaWQq
IGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSkgY29uc3Q7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdDsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaAppbmRleCAxNzU3
MzI3M2M0OTlmYmM1OGE3YjRmZWJmZjdhMGQ5YmM5ZGQ0MmVmLi42OTViMDg5ZDhjNTcxYTdiYjA4
MGM3ZDljMWVhNmZjODlkOGU4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdG9ySW5saW5lcy5oCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1BTFdBWVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGUoR0NEZWZlcnJhbENvbnRl
eHQqIGNvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBtb2RlKSBjb25zdAorQUxXQVlTX0lO
TElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250
ZXh0KiBjb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9sb2NhbEFsbG9jYXRvci0+YWxsb2NhdGUoY29udGV4dCwgbW9kZSk7CisgICAgcmV0
dXJuIG1fbG9jYWxBbGxvY2F0b3ItPmFsbG9jYXRlKGhlYXAsIGNvbnRleHQsIG1vZGUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5LmNwcAppbmRleCA3ZWVlNGE4NzQ2YjZiZDE4ODUyYTdhYjYyODc0YmJhZjU3YWJl
Mjg5Li4wY2M0YjQ3OWJmNzE3YjQ2MDA0M2JiY2YwNGNiNjYwM2MyMzA2M2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCkBAIC0zOCw5ICszOCw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1CbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3Rvcnko
SGVhcCogaGVhcCwgc2l6ZV90IGNlbGxTaXplKQorQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0
b3J5KHNpemVfdCBjZWxsU2l6ZSkKICAgICA6IG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNlbGxTaXplKSkKLSAgICAsIG1faGVhcChoZWFwKQogewogfQogCkBAIC03Niw3ICs3NSw3
IEBAIGJvb2wgQmxvY2tEaXJlY3Rvcnk6OmlzUGFnZWRPdXQoTW9ub3RvbmljVGltZSBkZWFkbGlu
ZSkKIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2Nr
VG9TdGVhbCgpCiB7Ci0gICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5
Q3Vyc29yLCB0cnVlKTsKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJp
dChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nr
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1tt
X2VtcHR5Q3Vyc29yXTsKQEAgLTg1LDcgKzg0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxv
Y2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiBNYXJrZWRCbG9jazo6SGFuZGxl
KiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYg
YWxsb2NhdG9yKQogewogICAgIGZvciAoOzspIHsKLSAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2Nh
dGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0
KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBhbGxvY2F0b3Iu
bV9hbGxvY2F0aW9uQ3Vyc29yID0gKG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgfCBt
X2JpdHMuZW1wdHkoKSkuZmluZEJpdChhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVl
KTsKICAgICAgICAgaWYgKGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Mu
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAtOTYsMTEg
Kzk1LDExIEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tG
b3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvCiAgICAgfQogfQogCi1NYXJrZWRCbG9j
azo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jaygpCitNYXJrZWRCbG9j
azo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayhIZWFwJiBoZWFwKQog
ewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAK
LSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRl
KCptX2hlYXAsIHN1YnNwYWNlKCktPmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CisgICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShoZWFwLCBz
dWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIGlmICghaGFuZGxlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKQEAgLTExOCwyMSArMTE3LDEyIEBAIHZvaWQg
QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAg
ICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOwogICAgICAgICBt
X2Jsb2Nrcy5hcHBlbmQoYmxvY2spOwogICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAh
PSBvbGRDYXBhY2l0eSkgewotICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAgICAg
ICAgICAgICBOb0xvY2tpbmdOZWNlc3NhcnksCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0
b3IsIHZlY3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBv
bGRDYXBhY2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9s
ZENhcGFjaXR5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9iaXR2ZWN0b3JMb2NrKTsKICAgICAgICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJpdHMo
bV9ibG9ja3MuY2FwYWNpdHkoKSk7Ci0gICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAg
ICAgICAgICAgICAgIGxvY2tlciwKLSAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3Im
IHZlY3RvcikgewotICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNh
cGFjaXR5KCkpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbV9iaXRzLnJlc2l6
ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CkBAIC0xNDIsOCArMTMyLDgg
QEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2spCiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigKICAgICAgICAgTm9Mb2NraW5nTmVjZXNz
YXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2ZWN0b3JbaW5kZXhdKTsKKyAgICAgICAgWyZdKGF1dG8g
dmVjdG9yUmVmKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvclJlZiwgIXZlY3Rv
clJlZltpbmRleF0pOwogICAgICAgICB9KTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0
IHdoaWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMo
KS4KQEAgLTE2NSw4ICsxNTUsOCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAog
ICAgICAgICBob2xkTG9jayhtX2JpdHZlY3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRW
ZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZh
bHNlOworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYpIHsKKyAgICAgICAgICAgIHZlY3RvclJl
ZltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKICAgICAgICAgfSk7CiAgICAgCiAgICAgYmxvY2st
PmRpZFJlbW92ZUZyb21EaXJlY3RvcnkoKTsKQEAgLTE5Miw3ICsxODIsNyBAQCB2b2lkIEJsb2Nr
RGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiAgICAgbV91bnN3ZXB0Q3Vyc29yID0g
MDsKICAgICBtX2VtcHR5Q3Vyc29yID0gMDsKICAgICAKLSAgICBtX2VkZW4uY2xlYXJBbGwoKTsK
KyAgICBtX2JpdHMuZWRlbigpLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMg
d29yayBhZ2Fpbi4KQEAgLTIzNywyMCArMjI3LDIwIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmJl
Z2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKICAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNr
eSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNl
IGR1cmluZyBmdWxsCiAgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUg
bGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKICAg
ICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KLSAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVh
ckFsbCgpOwotICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFy
a2luZ05vdEVtcHR5KCkuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFya2luZ1JldGlyZWQoKS5j
bGVhckFsbCgpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIHsKLSAg
ICBtX2FsbG9jYXRlZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5hbGxvY2F0ZWQoKS5jbGVhckFs
bCgpOwogICAgIAogICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29t
cHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KICAg
ICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBp
cyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgogICAgIC8vIHZlY3RvcnMuCiAg
ICAgCi0gICAgbV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKLSAgICBtX2Nh
bkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21h
cmtpbmdSZXRpcmVkOworICAgIG1fYml0cy5lbXB0eSgpID0gbV9iaXRzLmxpdmUoKSAmIH5tX2Jp
dHMubWFya2luZ05vdEVtcHR5KCk7CisgICAgbV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHko
KSA9IG1fYml0cy5saXZlKCkgJiBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiB+bV9iaXRzLm1h
cmtpbmdSZXRpcmVkKCk7CiAKICAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CiAgICAgICAg
IC8vIFRoZXJlIGFyZSBzb21lIGJsb2NrcyB0aGF0IHdlIGRpZG4ndCBhbGxvY2F0ZSBvdXQgb2Yg
aW4gdGhlIGxhc3QgY3ljbGUsIGJ1dCB3ZSBzd2VwdCB0aGVtLiBUaGlzCkBAIC0yNTgsNyArMjQ4
LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAgICAgICAgIC8vIGRlc3Ry
dWN0b3JzIGFnYWluLiBUaGF0J3MgZmluZSBiZWNhdXNlIG9mIHphcHBpbmcuIFRoZSBvbmx5IHRp
bWUgd2hlbiB3ZSBjYW5ub3QgZm9yZ2V0IGlzIHdoZW4KICAgICAgICAgLy8gd2UganVzdCBhbGxv
Y2F0ZSBhIGJsb2NrIG9yIHdoZW4gd2UgbW92ZSBhIGJsb2NrIGZyb20gb25lIHNpemUgY2xhc3Mg
dG8gYW5vdGhlci4gVGhhdCBkb2Vzbid0CiAgICAgICAgIC8vIGhhcHBlbiBoZXJlLgotICAgICAg
ICBtX2Rlc3RydWN0aWJsZSA9IG1fbGl2ZTsKKyAgICAgICAgbV9iaXRzLmRlc3RydWN0aWJsZSgp
ID0gbV9iaXRzLmxpdmUoKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGZhbHNlKSB7CkBAIC0yNjks
MTcgKzI1OSwxNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIAogdm9pZCBC
bG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKQogewotICAg
IG1fdW5zd2VwdCB8PSBtX2VkZW47CisgICAgbV9iaXRzLnVuc3dlcHQoKSB8PSBtX2JpdHMuZWRl
bigpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29s
bGVjdGlvbigpCiB7Ci0gICAgbV91bnN3ZXB0ID0gbV9saXZlOworICAgIG1fYml0cy51bnN3ZXB0
KCkgPSBtX2JpdHMubGl2ZSgpOwogfQogCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVj
dG9yeTo6ZmluZEJsb2NrVG9Td2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0Q3Vyc29yID0gbV91bnN3
ZXB0LmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKKyAgICBtX3Vuc3dlcHRDdXJzb3Ig
PSBtX2JpdHMudW5zd2VwdCgpLmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKICAgICBp
ZiAobV91bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fdW5zd2VwdEN1cnNvcl07CkBAIC0yODcsNyAr
Mjc3LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja1Rv
U3dlZXAoKQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0
LmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLnVuc3dlcHQoKS5mb3JFYWNoU2V0Qml0KAogICAg
ICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVs
bHB0cik7CkBAIC0yOTYsNyArMjg2LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQog
CiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpzaHJpbmsoKQogewotICAgIChtX2VtcHR5ICYgfm1fZGVz
dHJ1Y3RpYmxlKS5mb3JFYWNoU2V0Qml0KAorICAgIChtX2JpdHMuZW1wdHkoKSAmIH5tX2JpdHMu
ZGVzdHJ1Y3RpYmxlKCkpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4
KSB7CiAgICAgICAgICAgICBtYXJrZWRTcGFjZSgpLmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0p
OwogICAgICAgICB9KTsKQEAgLTMwNyw3ICsyOTcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojph
c3NlcnROb1Vuc3dlcHQoKQogICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBpZiAobV91bnN3ZXB0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9iaXRzLnVu
c3dlcHQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBkYXRhTG9nKCJB
c3NlcnRpb24gZmFpbGVkOiB1bnN3ZXB0IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOwpA
QCAtMzI5LDcgKzMxOSw3IEBAIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUq
KCk+PiBCbG9ja0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrCiAgICAgICAgICAgICBp
ZiAobV9kb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgbV9pbmRleCA9IG1f
ZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5LmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CisgICAg
ICAgICAgICBtX2luZGV4ID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZp
bmRCaXQobV9pbmRleCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVj
dG9yeS5tX2Jsb2Nrcy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3LDE4ICszNDcsMTkgQEAgdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKICAgICB1bnNpZ25l
ZCBtYXhOYW1lTGVuZ3RoID0gMDsKICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAg
ICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiwgY29u
c3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIq
IG5hbWUpIHsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh2ZWN0b3JSZWYpOwogICAgICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOwogICAgICAgICAgICAgbWF4TmFtZUxl
bmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7CiAgICAgICAgIH0pOwogICAg
IAogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgTm9Mb2NraW5nTmVjZXNz
YXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29uc3QgY2hhciogbmFt
ZSkgeworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAg
ICAgICAgICAgIG91dC5wcmludCgiICAgICIsIG5hbWUsICI6ICIpOwogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbWF4TmFtZUxlbmd0aCAtIHN0cmxlbihuYW1lKTsgaS0tOykKICAgICAg
ICAgICAgICAgICBvdXQucHJpbnQoIiAiKTsKLSAgICAgICAgICAgIG91dC5wcmludCh2ZWN0b3Is
ICJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KHZlY3RvclJlZiwgIlxuIik7CiAgICAgICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaApp
bmRleCBhN2JjYWE2YjllYmQ0YmFkNjNkN2U3ODExMDkxOGUzZTQzNjM4N2QxLi5jYjcyY2IxZGQ4
ZTRlYzEzNjYxNDhkNzRmOTgwMjY1Nzk0ZWVkNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmgiCisjaW5jbHVkZSAiQmxvY2tEaXJl
Y3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAiQ2VsbEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVl
TGlzdC5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9yLmgiCkBAIC00NCwzMyArNDUsNiBAQCBj
bGFzcyBJc29DZWxsU2V0OwogY2xhc3MgTWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykg
XAotICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0
IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCi0gICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cy4gKi8gXAotICAgIG1h
Y3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBh
cmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAotICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90
RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBh
cmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtl
ZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKLSAgICBtYWNybyhkZXN0cnVjdGlibGUsIERl
c3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1
Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKLSAg
ICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBj
b3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9cCi0gICAgXAotICAg
IC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCi0gICAgbWFjcm8obWFy
a2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0
aGF0IGFyZSBub3QgZW1wdHkuICovIFwKLSAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2lu
Z1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLwot
Ci0vLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0
byBiZSBleGNsdXNpdmU6Ci0vLwotLy8gICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0
eSA9PSAwCi0vLwotLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0IGNhbkFsbG9jYXRlIGFuZCBtYWtp
bmcgaXQgaW5jbHVzaXZlOgotLy8KLS8vICAgICBjYW5BbGxvY2F0ZSAmIGVtcHR5ID09IGVtcHR5
Ci0vLwotLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0ZXIuIEknbGwgbGVhdmUgaXQgdG8g
YSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVhdGhpbmcgb24KLS8vIHRoaXMgY29k
ZSBsZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5kIGl0J3Mgbm90IGNsZWFyIHRoYXQg
bWFraW5nIHRoaXMgY2hhbmdlIHdvdWxkCi0vLyBpbXByb3ZlIHBlcmYgc2luY2UgaXQgd291bGQg
bm90IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3IsIGFuZCBlaXRoZXIgd2F5IHRoZSBk
aXJlY3RvcnkKLS8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0dmVjdG9ycy4KLS8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjEKLQogY2xhc3MgQmxvY2tEaXJl
Y3RvcnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJsb2NrRGlyZWN0b3J5KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTc4LDcgKzUyLDcgQEAgY2xhc3MgQmxvY2tEaXJl
Y3RvcnkgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1Ymxp
YzoKLSAgICBCbG9ja0RpcmVjdG9yeShIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICBCbG9j
a0RpcmVjdG9yeShzaXplX3QgY2VsbFNpemUpOwogICAgIH5CbG9ja0RpcmVjdG9yeSgpOwogICAg
IHZvaWQgc2V0U3Vic3BhY2UoU3Vic3BhY2UqKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFs
aXplKCk7CkBAIC05OCw3ICs3Miw2IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQogICAgIEhlYXBD
ZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmNlbGxLaW5k
OyB9Ci0gICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogCiAgICAgYm9vbCBpc0Zy
ZWVMaXN0ZWRDZWxsKGNvbnN0IHZvaWQqIHRhcmdldCk7CiAKQEAgLTExNSw5ICs4OCw5IEBAIGNs
YXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBMb2NrJiBiaXR2ZWN0b3JMb2NrKCkgeyByZXR1cm4g
bV9iaXR2ZWN0b3JMb2NrOyB9CiAKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NP
UlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKLSAgICBib29sIGlzICMjIGNh
cGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNh
cGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBtX2JpdHMuaXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKICAgICBib29s
IGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFt
ZShsb2NrZXIsIGJsb2NrLT5pbmRleCgpKTsgfSBcCi0gICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFs
Qml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkg
eyBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMg
IyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJv
b2wgdmFsdWUpIHsgbV9iaXRzLnNldElzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7
IH0gXAogICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImIGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0
SXMgIyMgY2FwaXRhbEJpdE5hbWUobG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CiAg
ICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VT
U09SUykKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUwpAQCAtMTI2LDcgKzk5
LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
IFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQo
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSwogICAgIH0KQEAgLTEzNSw3ICsxMDgsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0YWxCaXROYW1lKTsKICAgICAgICAgRk9SX0VBQ0hfQkxP
Q0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpAQCAtMTY2LDE3ICsxMzksMTQgQEAg
Y2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIAogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZp
bmRCbG9ja0ZvckFsbG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImKTsKICAgICAKLSAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogdHJ5QWxsb2NhdGVCbG9jayhIZWFwJik7CiAgICAgCiAgICAgVmVjdG9yPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqPiBtX2Jsb2NrczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5k
aWNlczsKIAogICAgIC8vIE11dGF0b3IgdXNlcyB0aGlzIHRvIGd1YXJkIHJlc2l6aW5nIHRoZSBi
aXR2ZWN0b3JzLiBUaG9zZSB0aGluZ3MgaW4gdGhlIEdDIHRoYXQgbWF5IHJ1bgogICAgIC8vIGNv
bmN1cnJlbnRseSB0byB0aGUgbXV0YXRvciBtdXN0IGxvY2sgdGhpcyB3aGVuIGFjY2Vzc2luZyB0
aGUgYml0dmVjdG9ycy4KLSNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElPTihs
b3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgRmFzdEJpdFZlY3RvciBtXyAjIyBs
b3dlckJpdE5hbWU7Ci0gICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJF
Q1RPUllfQklUX0RFQ0xBUkFUSU9OKQotI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfREVDTEFS
QVRJT04KKyAgICBCbG9ja0RpcmVjdG9yeUJpdHMgbV9iaXRzOwogICAgIExvY2sgbV9iaXR2ZWN0
b3JMb2NrOwogICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2NrOwogICAgIENlbGxBdHRyaWJ1
dGVzIG1fYXR0cmlidXRlczsKQEAgLTE5MCw3ICsxNjAsNiBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgCiAgICAgLy8gRklYTUU6IEFsbCBvZiB0aGVzZSBzaG91bGQgcHJvYmFibHkgYmUg
cmVmZXJlbmNlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY2OTg4Ci0gICAgSGVhcCogbV9oZWFwIHsgbnVsbHB0ciB9OwogICAgIFN1YnNwYWNlKiBt
X3N1YnNwYWNlIHsgbnVsbHB0ciB9OwogICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3Rv
cnkgeyBudWxscHRyIH07CiAgICAgQmxvY2tEaXJlY3RvcnkqIG1fbmV4dERpcmVjdG9yeUluU3Vi
c3BhY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYWQ3ZWZiZjliMGFlMzYyODIzMDliNDEyZDJi
MzFlNjFiNTcxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeUJpdHMuaApAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEZPUl9FQUNIX0JMT0NLX0RJUkVD
VE9SWV9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJs
b2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5
LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVj
dHMuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1v
cmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCisgICAgbWFjcm8o
ZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCisgICAgbWFjcm8oZWRlbiwgRWRlbikg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUg
bGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIu
ICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICov
XAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAgbWFjcm8obWFya2lu
Z1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBh
cmUgcmV0aXJlZC4gKi8KKworLy8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSBhbmQgZW1wdHkgdG8gYmUgZXhjbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZUJ1
dE5vdEVtcHR5ICYgZW1wdHkgPT0gMAorLy8KKy8vIEluc3RlYWQgb2YgY2FsbGluZyBpdCBjYW5B
bGxvY2F0ZSBhbmQgbWFraW5nIGl0IGluY2x1c2l2ZToKKy8vCisvLyAgICAgY2FuQWxsb2NhdGUg
JiBlbXB0eSA9PSBlbXB0eQorLy8KKy8vIFRoZSBsYXR0ZXIgaXMgcHJvYmFibHkgYmV0dGVyLiBJ
J2xsIGxlYXZlIGl0IHRvIGEgZnV0dXJlIGJ1ZyB0byBmaXggdGhhdCwgc2luY2UgYnJlYXRoaW5n
IG9uCisvLyB0aGlzIGNvZGUgbGVhZHMgdG8gcmVncmVzc2lvbnMgZm9yIGRheXMsIGFuZCBpdCdz
IG5vdCBjbGVhciB0aGF0IG1ha2luZyB0aGlzIGNoYW5nZSB3b3VsZAorLy8gaW1wcm92ZSBwZXJm
IHNpbmNlIGl0IHdvdWxkIG5vdCBjaGFuZ2UgdGhlIGNvbGxlY3RvcidzIGJlaGF2aW9yLCBhbmQg
ZWl0aGVyIHdheSB0aGUgZGlyZWN0b3J5CisvLyBoYXMgdG8gbG9vayBhdCBib3RoIGJpdHZlY3Rv
cnMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIxCisK
K2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRzUGVyU2VnbWVudCA9
IDMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2VnbWVudFNoaWZ0ID0gNTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4TWFzayA9ICgxVSA8PCBzZWdtZW50U2hp
ZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8IHNlZ21lbnRTaGlmdCkgPT0gYml0c1Bl
clNlZ21lbnQpOworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVChsb3dl
ckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSArIDEKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcyA9IDAgRk9SX0VBQ0hfQkxPQ0tfRElS
RUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQpOworI3VuZGVmIEJMT0NL
X0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVAorCisgICAgZW51bSBjbGFzcyBLaW5kIHsKKyNkZWZp
bmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2Fw
aXRhbEJpdE5hbWUpIFwKKyAgICAgICAgY2FwaXRhbEJpdE5hbWUsCisgICAgICAgIEZPUl9FQUNI
X0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9O
KQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTgorICAgIH07CisK
KyAgICBjbGFzcyBTZWdtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNlZ21lbnQoKSA9IGRl
ZmF1bHQ7CisgICAgICAgIHN0ZDo6YXJyYXk8dWludDMyX3QsIG51bWJlck9mQmxvY2tEaXJlY3Rv
cnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8S2luZCBraW5k
PgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHVzaW5nIFZpZXdU
eXBlID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzsKKworICAgICAgICBCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KCkgPSBkZWZhdWx0OworCisgICAgICAgIEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgU2VnbWVudCogc2VnbWVudHMsIHNpemVfdCBu
dW1CaXRzKQorICAgICAgICAgICAgOiBtX3NlZ21lbnRzKHNlZ21lbnRzKQorICAgICAgICAgICAg
LCBtX251bUJpdHMobnVtQml0cykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2l6
ZV90IG51bUJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9udW1C
aXRzOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgd29yZChzaXplX3QgaW5kZXgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IFdURjo6ZmFzdEJpdFZl
Y3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOworICAgICAgICB9
CisKKyAgICAgICAgdWludDMyX3QmIHdvcmQoc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1C
aXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21l
bnRzKVtpbmRleF0ubV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxTZWdtZW50
Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCld
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3Qg
bV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAg
dXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+PjsKKworICAgIHRlbXBsYXRl
PEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiBmaW5hbCA6
IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4geworICAgIHB1YmxpYzoK
KyAgICAgICAgdXNpbmcgQmFzZSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjsK
KworICAgICAgICBleHBsaWNpdCBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZihCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+IHZpZXcpCisgICAgICAgICAgICA6IEJhc2Uodmll
dykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXJXb3Jkcz4KKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShj
b25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKEJhc2U6Om51bUJpdHMoKSA9PSBvdGhlci5udW1CaXRzKCkp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmFzZTo6YXJyYXlMZW5ndGgoKTsgaS0t
OykKKyAgICAgICAgICAgICAgICBCYXNlOjp1bnNhZmVXb3JkcygpLndvcmQoaSkgPSBvdGhlci51
bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KEJhc2U6Om51bUJpdHMoKSA9PSBvdGhlci5udW1CaXRzKCkpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjphcnJheUxlbmd0
aCgpOyBpLS07KQorICAgICAgICAgICAgICAgIEJhc2U6OnVuc2FmZVdvcmRzKCkud29yZChpKSB8
PSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgQmFzZTo6dW5zYWZlV29yZHMoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAg
ICAgV1RGOjpGYXN0Qml0UmVmZXJlbmNlIGF0KHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKGluZGV4IDwgQmFzZTo6bnVtQml0cygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6OkZhc3RCaXRSZWZlcmVuY2UoJkJhc2U6OnVuc2FmZVdvcmRzKCkud29yZChpbmRl
eCA+PiA1KSwgMSA8PCAoaW5kZXggJiAzMSkpOworICAgICAgICB9CisKKyAgICAgICAgV1RGOjpG
YXN0Qml0UmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgICAgICB9CisgICAgfTsKKworI2RlZmluZSBC
TE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25z
dCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBsb3dlckJpdE5hbWUoKVtpbmRleF07IFwKKyAg
ICB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkgXAorICAgIHsgXAorICAgICAgICBsb3dlckJpdE5hbWUoKVtpbmRleF0gPSB2YWx1
ZTsgXAorICAgIH0gXAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBp
dGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1
cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21l
bnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwKKyAgICB9IFwKKyAgICBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgXAorICAgIHsg
XAorICAgICAgICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRh
bEJpdE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJp
dE5hbWU+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0KKyAgICBGT1Jf
RUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKQor
I3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCisKKyAgICB1bnNpZ25lZCBudW1C
aXRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1CaXRzOyB9CisKKyAgICB2b2lkIHJlc2l6ZSh1bnNp
Z25lZCBudW1CaXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgb2xkTnVtQml0cyA9IG1fbnVt
Qml0czsKKyAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKKyAgICAgICAgbV9zZWdtZW50cy5y
ZXNpemUoV1RGOjpmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykpOworICAgICAgICB1
bnNpZ25lZCB1c2VkQml0c0luTGFzdFNlZ21lbnQgPSBudW1CaXRzICYgaW5kZXhNYXNrOyAvLyBU
aGlzIGlzIDAgaWYgYWxsIGJpdHMgYXJlIHVzZWQuCisgICAgICAgIGlmIChudW1CaXRzIDwgb2xk
TnVtQml0cyAmJiB1c2VkQml0c0luTGFzdFNlZ21lbnQpIHsKKyAgICAgICAgICAgIC8vIENsZWFy
IHRoZSBsYXN0IHNlZ21lbnQuCisgICAgICAgICAgICBBU1NFUlQoaW5kZXggPCBiaXRzUGVyU2Vn
bWVudCk7CisgICAgICAgICAgICBhdXRvJiBzZWdtZW50ID0gbV9zZWdtZW50cy5sYXN0KCk7Cisg
ICAgICAgICAgICB1aW50MzJfdCBtYXNrID0gKDFVIDw8IHVzZWRCaXRzSW5MYXN0U2VnbWVudCkg
LSAxOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVy
T2ZCbG9ja0RpcmVjdG9yeUJpdEtpbmRzOyArK2luZGV4KQorICAgICAgICAgICAgICAgIHNlZ21l
bnQubV9kYXRhW2luZGV4XSAmPSBtYXNrOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmMmIGZ1
bmMpCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoYXV0
byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgICAgICBmdW5jKGluZGV4KyssIHNlZ21l
bnQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8U2VnbWVudD4gbV9zZWdtZW50czsK
KyAgICB1bnNpZ25lZCBtX251bUJpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmgKaW5kZXggNDFjYmI0OWMyNjQ5NTY2ZGVjZGY3ODIzODNiZWM4OGNhMjJiYTU3NS4uNjg0YjFh
OGQ4NmM0Yzc1OTcwZDQ4NjhjZmQ0MGJjNjc5NmIwMGIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTMzLDcgKzMzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUg
dm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CiB7Ci0gICAgbV9saXZlLmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLmxpdmUoKS5mb3JFYWNo
U2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3Rv
cihtX2Jsb2Nrc1tpbmRleF0pOwogICAgICAgICB9KTsKQEAgLTQxLDcgKzQxLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNo
QmxvY2soY29uc3QgRnVuY3QKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB2
b2lkIEJsb2NrRGlyZWN0b3J5Ojpmb3JFYWNoTm90RW1wdHlCbG9jayhjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewotICAgIG1fbWFya2luZ05vdEVtcHR5LmZvckVhY2hTZXRCaXQoCisgICAgbV9i
aXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90
IGluZGV4KSB7CiAgICAgICAgICAgICBmdW5jdG9yKG1fYmxvY2tzW2luZGV4XSk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJz
cGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNw
cAppbmRleCAyY2I5NTJmNjc4MmU3ZGI4MDU0NzcxNTM5ZDU5ZWRiOWE4OTQxMmJjLi5lNGRjNjIz
NjhhYTQ4MmM5OTY5NjZkNDhiYTM4Yzc0MTA1MjMyZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJMb2NhbEFsbG9jYXRvcklubGluZXMuaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9ja0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlu
bGluZXMuaCIKICNpbmNsdWRlICJQcmV2ZW50Q29sbGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAi
U3Vic3BhY2VJbmxpbmVzLmgiCiAKQEAgLTc5LDcgKzgwLDcgQEAgQWxsb2NhdG9yIENvbXBsZXRl
U3Vic3BhY2U6OmFsbG9jYXRvckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgaWYgKGZhbHNlKQog
ICAgICAgICBkYXRhTG9nKCJDcmVhdGluZyBCbG9ja0RpcmVjdG9yeS9Mb2NhbEFsbG9jYXRvciBm
b3IgIiwgbV9uYW1lLCAiLCAiLCBhdHRyaWJ1dGVzKCksICIsICIsIHNpemVDbGFzcywgIi5cbiIp
OwogICAgIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4gdW5pcXVlRGlyZWN0
b3J5ID0gbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4obV9zcGFjZS5oZWFwKCksIHNpemVDbGFz
cyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRGlyZWN0b3J5PiB1bmlxdWVEaXJlY3Rvcnkg
PSBtYWtlVW5pcXVlPEJsb2NrRGlyZWN0b3J5PihzaXplQ2xhc3MpOwogICAgIEJsb2NrRGlyZWN0
b3J5KiBkaXJlY3RvcnkgPSB1bmlxdWVEaXJlY3RvcnkuZ2V0KCk7CiAgICAgbV9kaXJlY3Rvcmll
cy5hcHBlbmQoV1RGTW92ZSh1bmlxdWVEaXJlY3RvcnkpKTsKICAgICAKQEAgLTEwNSw3ICsxMDYs
NyBAQCBBbGxvY2F0b3IgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yU2xvdyhzaXplX3Qg
c2l6ZSkKICAgICB9CiAgICAgCiAgICAgZGlyZWN0b3J5LT5zZXROZXh0RGlyZWN0b3J5SW5TdWJz
cGFjZShtX2ZpcnN0RGlyZWN0b3J5KTsKLSAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJl
Z2lzdGVyRGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9y
LT5yZWdpc3RlckRpcmVjdG9yeShtX3NwYWNlLmhlYXAoKSwgZGlyZWN0b3J5KTsKICAgICBXVEY6
OnN0b3JlU3RvcmVGZW5jZSgpOwogICAgIG1fZmlyc3REaXJlY3RvcnkgPSBkaXJlY3Rvcnk7CiAg
ICAgcmV0dXJuIGFsbG9jYXRvcjsKQEAgLTEyNyw3ICsxMjgsNyBAQCB2b2lkKiBDb21wbGV0ZVN1
YnNwYWNlOjp0cnlBbGxvY2F0ZVNsb3coVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENv
bnRleHQqCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKICAgICBpZiAoQWxsb2Nh
dG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvcihzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpFbnN1
cmVBbGxvY2F0b3IpKQotICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFsbG9jYXRlKGRlZmVycmFs
Q29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgCiAgICAgaWYgKHNpemUgPD0gT3B0aW9u
czo6cHJlY2lzZUFsbG9jYXRpb25DdXRvZmYoKQogICAgICAgICAmJiBzaXplIDw9IE1hcmtlZFNw
YWNlOjpsYXJnZUN1dG9mZikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggZWFjZTJhNmY1Yzg3NzlhZmRmMDYxNjBh
MzgxNzhiY2M5OTMyMmY0MC4uODcxZGYyYjI3ODhkM2FlYTE3Y2FiM2Q5YzJhZjVjNjQ2YTUzYWNm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFj
ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNw
YWNlSW5saW5lcy5oCkBAIC0zNiw3ICszNiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxl
dGVTdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDCiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAuZXhwZWN0RG9lc0dDKCkpOwogCiAgICAgaWYg
KEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9j
YXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRv
ci5hbGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICAgICAgcmV0dXJu
IGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2Rl
KTsKICAgICByZXR1cm4gYWxsb2NhdGVTbG93KHZtLCBzaXplLCBkZWZlcnJhbENvbnRleHQsIGZh
aWx1cmVNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvQ2VsbFNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNw
cAppbmRleCBhYTYyZTExZmQ0NGY2YWJjYmJiZjQyNWI4NmZkZjExMTgwYTg0NzljLi44MGE5Y2Vi
NmEzNzk2ZTkzZTQ2ZTM3NDE3Yzk5ZjJlYjY4ZjBhNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29DZWxsU2V0LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8U2hhcmVkVGFzazxN
YXJrZWRCbG9jazo6SGFuZGxlKigpPj4gSXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtl
ZEJsb2NrUwogICAgICAgICAgICAgaWYgKG1fZG9uZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKLSAg
ICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9z
ZXQubV9ibG9ja3NXaXRoQml0czsKKyAgICAgICAgICAgIGF1dG8gYml0cyA9IG1fZGlyZWN0b3J5
Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJpdHM7CiAgICAg
ICAgICAgICBtX2luZGV4ID0gYml0cy5maW5kQml0KG1faW5kZXgsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKG1faW5kZXggPj0gbV9kaXJlY3RvcnkubV9ibG9ja3Muc2l6ZSgpKSB7CiAgICAgICAg
ICAgICAgICAgbV9kb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29DZWxsU2V0SW5saW5lcy5oCmluZGV4IGZjODE2OTI4N2YwNTY2YmVlYjg5ZDE5ODQ3MTkxMWE0
YTc1OWM0ZTEuLmRiN2U4YWNiNTYxYjFkMjJkNDc2MTY1Y2JjNDA4YmMzOGY2NTZjMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaApAQCAtNzAs
NyArNzAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgogdm9pZCBJc29DZWxsU2V0Ojpmb3JF
YWNoTWFya2VkQ2VsbChjb25zdCBGdW5jJiBmdW5jKQogewogICAgIEJsb2NrRGlyZWN0b3J5JiBk
aXJlY3RvcnkgPSBtX3N1YnNwYWNlLm1fZGlyZWN0b3J5OwotICAgIChkaXJlY3RvcnkubV9tYXJr
aW5nTm90RW1wdHkgJiBtX2Jsb2Nrc1dpdGhCaXRzKS5mb3JFYWNoU2V0Qml0KAorICAgIChkaXJl
Y3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpICYgbV9ibG9ja3NXaXRoQml0cykuZm9yRWFj
aFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgYmxvY2tJbmRleCkgewogICAgICAgICAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBkaXJlY3RvcnkubV9ibG9ja3NbYmxvY2tJbmRl
eF07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAppbmRleCA0
NTNlNjAyMzNkNjExZDQ3YzMxN2JiNzNkY2I5YjI2NmU5MDk2Y2U0Li5kMWNmNjFmMDc3MjViNWM4
MzhhYjQ2ZjZjN2I2Yzc0ZmE1NTI4MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SXNvU3Vic3BhY2UuY3BwCkBAIC0zMiwxNyArMzIsMTggQEAKICNpbmNsdWRlICJJc29DZWxsU2V0
SW5saW5lcy5oIgogI2luY2x1ZGUgIklzb1N1YnNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxv
Y2FsQWxsb2NhdG9ySW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFt
ZSwgSGVhcCYgaGVhcCwgSGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHNpemVfdCBzaXplLCB1
aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMpCiAgICAgOiBTdWJzcGFjZShuYW1lLCBoZWFw
KQotICAgICwgbV9zaXplKHNpemUpCi0gICAgLCBtX2RpcmVjdG9yeSgmaGVhcCwgV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkpCisgICAgLCBtX2Rp
cmVjdG9yeShXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXplPihz
aXplKSkKICAgICAsIG1fbG9jYWxBbGxvY2F0b3IoJm1fZGlyZWN0b3J5KQogICAgICwgbV9pc29B
bGlnbmVkTWVtb3J5QWxsb2NhdG9yKG1ha2VVbmlxdWU8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cj4oKSkKLSAgICAsIG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KG51bWJlck9mTG93ZXJU
aWVyQ2VsbHMpCiB7CisgICAgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQgPSBudW1iZXJP
Zkxvd2VyVGllckNlbGxzOworICAgIEFTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFy
a2VkQmxvY2s6OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICBBU1NFUlQobnVt
YmVyT2ZMb3dlclRpZXJDZWxscyA8PSBNYXJrZWRCbG9jazo6bWF4TnVtYmVyT2ZMb3dlclRpZXJD
ZWxscyk7CiAgICAgbV9pc0lzb1N1YnNwYWNlID0gdHJ1ZTsKICAgICBpbml0aWFsaXplKGhlYXBD
ZWxsVHlwZSwgbV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmdldCgpKTsKQEAgLTUwLDcgKzUx
LDcgQEAgSXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKENTdHJpbmcgbmFtZSwgSGVhcCYgaGVhcCwg
SGVhcENlbGxUeXBlKiBoZWFwQ2VsbFR5cGUsIHMKICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fc3BhY2UuZGlyZWN0b3J5TG9jaygpKTsKICAgICBtX2RpcmVjdG9yeS5zZXRTdWJzcGFjZSh0
aGlzKTsKICAgICBtX3NwYWNlLmFkZEJsb2NrRGlyZWN0b3J5KGxvY2tlciwgJm1fZGlyZWN0b3J5
KTsKLSAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyRGlyZWN0b3J5KCZtX2Rp
cmVjdG9yeSk7CisgICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9y
eShoZWFwLCAmbV9kaXJlY3RvcnkpOwogICAgIG1fZmlyc3REaXJlY3RvcnkgPSAmbV9kaXJlY3Rv
cnk7CiB9CiAKQEAgLTExMSw4ICsxMTIsNyBAQCB2b2lkKiBJc29TdWJzcGFjZTo6dHJ5QWxsb2Nh
dGVGcm9tTG93ZXJUaWVyKCkKICAgICAgICAgcmV0dXJuIHJldml2ZShhbGxvY2F0aW9uKTsKICAg
ICB9CiAgICAgaWYgKG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50KSB7Ci0gICAgICAgIHNp
emVfdCBzaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZFNwYWNlOjpzaXplU3Rl
cD4obV9zaXplKTsKLSAgICAgICAgUHJlY2lzZUFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBQcmVj
aXNlQWxsb2NhdGlvbjo6Y3JlYXRlRm9yTG93ZXJUaWVyKCptX3NwYWNlLmhlYXAoKSwgc2l6ZSwg
dGhpcywgLS1tX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCk7CisgICAgICAgIFByZWNpc2VB
bGxvY2F0aW9uKiBhbGxvY2F0aW9uID0gUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2Vy
VGllcihtX3NwYWNlLmhlYXAoKSwgY2VsbFNpemUoKSwgdGhpcywgLS1tX3JlbWFpbmluZ0xvd2Vy
VGllckNlbGxDb3VudCk7CiAgICAgICAgIHJldHVybiByZXZpdmUoYWxsb2NhdGlvbik7CiAgICAg
fQogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNw
YWNlLmgKaW5kZXggY2E3NzdkMDhhZjFkYTVlMDA5NWMyODg5YzEyNDRmNGRlNmNjYTU2My4uYTUx
NDNiZGFlZWNiM2I5YzQyZDU4Y2RhZWI1ZjI0YjMxMzdkMDVlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIElzb1N1YnNw
YWNlIDogcHVibGljIFN1YnNwYWNlIHsKICAgICBKU19FWFBPUlRfUFJJVkFURSBJc29TdWJzcGFj
ZShDU3RyaW5nIG5hbWUsIEhlYXAmLCBIZWFwQ2VsbFR5cGUqLCBzaXplX3Qgc2l6ZSwgdWludDhf
dCBudW1iZXJPZkxvd2VyVGllckNlbGxzKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSB+SXNvU3Vi
c3BhY2UoKTsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9Cisg
ICAgc2l6ZV90IGNlbGxTaXplKCkgeyByZXR1cm4gbV9kaXJlY3RvcnkuY2VsbFNpemUoKTsgfQog
CiAgICAgQWxsb2NhdG9yIGFsbG9jYXRvckZvcihzaXplX3QsIEFsbG9jYXRvckZvck1vZGUpIG92
ZXJyaWRlOwogICAgIEFsbG9jYXRvciBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemVfdCwgQWxs
b2NhdG9yRm9yTW9kZSk7CkBAIC02MywxOCArNjMsMTYgQEAgY2xhc3MgSXNvU3Vic3BhY2UgOiBw
dWJsaWMgU3Vic3BhY2UgewogICAgIHZvaWQgZGlkUmVtb3ZlQmxvY2soc2l6ZV90IGJsb2NrSW5k
ZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQmVnaW5Td2VlcGluZ1RvRnJlZUxpc3QoTWFya2Vk
QmxvY2s6OkhhbmRsZSopIG92ZXJyaWRlOwogICAgIAotICAgIHNpemVfdCBtX3NpemU7CiAgICAg
QmxvY2tEaXJlY3RvcnkgbV9kaXJlY3Rvcnk7CiAgICAgTG9jYWxBbGxvY2F0b3IgbV9sb2NhbEFs
bG9jYXRvcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcj4g
bV9pc29BbGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogICAgIFNlbnRpbmVsTGlua2VkTGlzdDxQcmVj
aXNlQWxsb2NhdGlvbiwgUGFja2VkUmF3U2VudGluZWxOb2RlPFByZWNpc2VBbGxvY2F0aW9uPj4g
bV9sb3dlclRpZXJGcmVlTGlzdDsKICAgICBTZW50aW5lbExpbmtlZExpc3Q8SXNvQ2VsbFNldCwg
UGFja2VkUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+PiBtX2NlbGxTZXRzOwotICAgIHVpbnQ4
X3QgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQgeyAwIH07CiB9OwogCiBBTFdBWVNfSU5M
SU5FIEFsbG9jYXRvciBJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplX3Qg
c2l6ZSwgQWxsb2NhdG9yRm9yTW9kZSkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChzaXplID09IHRo
aXMtPnNpemUoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7CiAgICAgcmV0dXJu
IEFsbG9jYXRvcigmbV9sb2NhbEFsbG9jYXRvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKaW5kZXggMDUxOGE3ZmUwNjJkNjA5MTY5
ZDdiYzNmNzUzYzU4NGRjNGVlY2Y3MC4uNDY2MGU3NzgzYWE2NzJlYzhhMjlmNGY0ZjMzYzIzMmNi
NDZkZjc2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3Bh
Y2VJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJ
bmxpbmVzLmgKQEAgLTI3LDExICsyNywxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlT
X0lOTElORSB2b2lkKiBJc29TdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiwgc2l6ZV90
IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWls
dXJlTW9kZSBmYWlsdXJlTW9kZSkKK0FMV0FZU19JTkxJTkUgdm9pZCogSXNvU3Vic3BhY2U6OmFs
bG9jYXRlTm9uVmlydHVhbChWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCog
ZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoc2l6ZSA9PSB0aGlzLT5zaXplKCkpOworICAgIFJFTEVBU0VfQVNT
RVJUKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUp
ID09IGNlbGxTaXplKCkpOwogICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JO
b25WaXJ0dWFsKHNpemUsIEFsbG9jYXRvckZvck1vZGU6Ok11c3RBbHJlYWR5SGF2ZUFsbG9jYXRv
cik7Ci0gICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLmFsbG9jYXRlKGRlZmVycmFsQ29udGV4
dCwgZmFpbHVyZU1vZGUpOworICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci5hbGxvY2F0ZSh2
bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFj
ZVBlclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0u
Y3BwCmluZGV4IGI5ZTE4NTA5MDQyZTcwMTcwN2I2NzZlODgyMWIwYzQxYWY1ZDhkODIuLmIyZjZi
YmQ5Yjk0NzhjMmE1MWMzZjEzODE4NzJkMWE2ZGNmYjY2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlUGVyVk0uY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNs
YXNzIElzb1N1YnNwYWNlUGVyVk06OkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNlIDogcHVibGljIElz
b1N1YnNwYWNlIHsKICAgICB+QXV0b3JlbW92aW5nSXNvU3Vic3BhY2UoKQogICAgIHsKICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3BlclZNLm1fbG9jayk7Ci0gICAgICAgIG1fcGVy
Vk0ubV9zdWJzcGFjZVBlclZNLnJlbW92ZSgmc3BhY2UoKS5oZWFwKCktPnZtKCkpOworICAgICAg
ICBtX3BlclZNLm1fc3Vic3BhY2VQZXJWTS5yZW1vdmUoJnNwYWNlKCkuaGVhcCgpLnZtKCkpOwog
ICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xvY2FsQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxs
b2NhdG9yLmNwcAppbmRleCA1M2UwNTA4YWIyZmYwMWNmNGQ0OWE3ZmYwNzAxNzcxZjBmMGFjNGFk
Li5mNTU1NzFjODZjZmIyZTBhZTRjYmQxZTBhZTI3ZmRiODUwYmQwZmFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuY3BwCkBAIC0xMTAsMTIgKzExMCwx
MSBAQCB2b2lkIExvY2FsQWxsb2NhdG9yOjpzdG9wQWxsb2NhdGluZ0Zvckdvb2QoKQogICAgIHJl
c2V0KCk7CiB9CiAKLXZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVm
ZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWls
dXJlTW9kZSkKK3ZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEhlYXAmIGhl
YXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJT
Y29wZShmYWxzZSk7Ci0gICAgSGVhcCYgaGVhcCA9ICptX2RpcmVjdG9yeS0+bV9oZWFwOwogICAg
IEFTU0VSVChoZWFwLnZtKCkuY3VycmVudFRocmVhZElzSG9sZGluZ0FQSUxvY2soKSk7Ci0gICAg
ZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChkZWZlcnJhbENvbnRleHQpOworICAgIGRvVGVzdENv
bGxlY3Rpb25zSWZOZWVkZWQoaGVhcCwgZGVmZXJyYWxDb250ZXh0KTsKIAogICAgIEFTU0VSVCgh
bV9kaXJlY3RvcnktPm1hcmtlZFNwYWNlKCkuaXNJdGVyYXRpbmcoKSk7CiAgICAgaGVhcC5kaWRB
bGxvY2F0ZShtX2ZyZWVMaXN0Lm9yaWdpbmFsU2l6ZSgpKTsKQEAgLTEyOSw3ICsxMjgsNyBAQCB2
b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4dCog
ZGVmZXJyYWxDb250ZXh0LCBBbGxvYwogICAgIC8vIEdvb2Z5IGNvcm5lciBjYXNlOiB0aGUgR0Mg
Y2FsbGVkIGEgY2FsbGJhY2sgYW5kIG5vdyB0aGlzIGRpcmVjdG9yeSBoYXMgYSBjdXJyZW50Qmxv
Y2suIFRoaXMgb25seQogICAgIC8vIGhhcHBlbnMgd2hlbiBydW5uaW5nIFdlYktpdCB0ZXN0cywg
d2hpY2ggaW5qZWN0IGEgY2FsbGJhY2sgaW50byB0aGUgR0MncyBmaW5hbGl6YXRpb24uCiAgICAg
aWYgKFVOTElLRUxZKG1fY3VycmVudEJsb2NrKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlKGRl
ZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOworICAgICAgICByZXR1cm4gYWxsb2NhdGUoaGVh
cCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CiAgICAgCiAgICAgdm9pZCogcmVzdWx0
ID0gdHJ5QWxsb2NhdGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIApAQCAtMTQyLDcgKzE0MSw3
IEBAIHZvaWQqIExvY2FsQWxsb2NhdG9yOjphbGxvY2F0ZVNsb3dDYXNlKEdDRGVmZXJyYWxDb250
ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICAgICAKLSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBibG9jayA9IG1fZGlyZWN0b3J5
LT50cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBt
X2RpcmVjdG9yeS0+dHJ5QWxsb2NhdGVCbG9jayhoZWFwKTsKICAgICBpZiAoIWJsb2NrKSB7CiAg
ICAgICAgIGlmIChmYWlsdXJlTW9kZSA9PSBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OkFzc2VydCkK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yNDksMTggKzI0
OCwxOCBAQCB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6dHJ5QWxsb2NhdGVJbihNYXJrZWRCbG9jazo6
SGFuZGxlKiBibG9jaykKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIExvY2FsQWxsb2Nh
dG9yOjpkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJh
bENvbnRleHQpCit2b2lkIExvY2FsQWxsb2NhdG9yOjpkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVk
KEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQpCiB7CiAgICAg
aWYgKCFPcHRpb25zOjpzbG93UGF0aEFsbG9jc0JldHdlZW5HQ3MoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgc3RhdGljIHVuc2lnbmVkIGFsbG9jYXRpb25Db3VudCA9IDA7CiAgICAgaWYgKCFh
bGxvY2F0aW9uQ291bnQpIHsKLSAgICAgICAgaWYgKCFtX2RpcmVjdG9yeS0+bV9oZWFwLT5pc0Rl
ZmVycmVkKCkpIHsKKyAgICAgICAgaWYgKCFoZWFwLmlzRGVmZXJyZWQoKSkgewogICAgICAgICAg
ICAgaWYgKGRlZmVycmFsQ29udGV4dCkKICAgICAgICAgICAgICAgICBkZWZlcnJhbENvbnRleHQt
Pm1fc2hvdWxkR0MgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1f
ZGlyZWN0b3J5LT5tX2hlYXAtPmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3BlOjpGdWxs
KTsKKyAgICAgICAgICAgICAgICBoZWFwLmNvbGxlY3ROb3coU3luYywgQ29sbGVjdGlvblNjb3Bl
OjpGdWxsKTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoKythbGxvY2F0aW9uQ291bnQgPj0g
T3B0aW9uczo6c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaAppbmRleCA0MzcyNzNmMzY2ODBlNGE4MDk2ODdjZGY4
YzhlNGE4Y2Y0ZWNjMWFkLi45YjY1MWIwNzAzNzY4MTRmMmEzOTdiYjJhMTg2ZWQ3MDAwOTlkMzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgKQEAgLTM0
LDYgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJsb2NrRGlyZWN0b3J5OwogY2xh
c3MgR0NEZWZlcnJhbENvbnRleHQ7CitjbGFzcyBIZWFwOwogCiBjbGFzcyBMb2NhbEFsbG9jYXRv
ciA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRvcj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKExvY2FsQWxsb2NhdG9yKTsKQEAgLTQyLDcgKzQzLDcgQEAgY2xh
c3MgTG9jYWxBbGxvY2F0b3IgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TG9jYWxBbGxv
Y2F0b3I+IHsKICAgICBMb2NhbEFsbG9jYXRvcihCbG9ja0RpcmVjdG9yeSopOwogICAgIH5Mb2Nh
bEFsbG9jYXRvcigpOwogICAgIAotICAgIHZvaWQqIGFsbG9jYXRlKEdDRGVmZXJyYWxDb250ZXh0
KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKTsKKyAgICB2b2lkKiBhbGxvY2F0ZShIZWFwJiwgR0NE
ZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpOwogICAgIAogICAgIHVuc2ln
bmVkIGNlbGxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9mcmVlTGlzdC5jZWxsU2l6ZSgpOyB9CiAK
QEAgLTYwLDEyICs2MSwxMiBAQCBjbGFzcyBMb2NhbEFsbG9jYXRvciA6IHB1YmxpYyBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxMb2NhbEFsbG9jYXRvcj4gewogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0Rp
cmVjdG9yeTsKICAgICAKICAgICB2b2lkIHJlc2V0KCk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCogYWxsb2NhdGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWls
dXJlTW9kZSBmYWlsdXJlTW9kZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2Nh
dGVTbG93Q2FzZShIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGUpOwogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KCk7CiAgICAgdm9pZCogdHJ5QWxsb2Nh
dGVXaXRob3V0Q29sbGVjdGluZygpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSW4oTWFya2VkQmxv
Y2s6OkhhbmRsZSopOwogICAgIHZvaWQqIGFsbG9jYXRlSW4oTWFya2VkQmxvY2s6OkhhbmRsZSop
OwotICAgIEFMV0FZU19JTkxJTkUgdm9pZCBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKEdDRGVm
ZXJyYWxDb250ZXh0Kik7CisgICAgQUxXQVlTX0lOTElORSB2b2lkIGRvVGVzdENvbGxlY3Rpb25z
SWZOZWVkZWQoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7CiAKICAgICBCbG9ja0RpcmVjdG9y
eSogbV9kaXJlY3Rvcnk7CiAgICAgRnJlZUxpc3QgbV9mcmVlTGlzdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggMDBkNTU3
NDc0MjY5ZDU3MjQyN2ZkN2Q5NTc5YTFmMGNhNGFkNWFmMS4uYzNjODY5NWU4NTg4Yzc5MDM1MDhl
YWU5ZjUxYTJmNzk5Zjk4M2Y1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTG9jYWxBbGxvY2F0b3JJbmxpbmVzLmgKQEAgLTMwLDE0ICszMCwxNCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotQUxXQVlTX0lOTElORSB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGUo
R0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
IGZhaWx1cmVNb2RlKQorQUxXQVlTX0lOTElORSB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2Nh
dGUoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIGlmICh2YWxpZGF0ZURGR0RvZXNH
QykKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9kaXJlY3RvcnktPmhlYXAoKS0+ZXhwZWN0RG9l
c0dDKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChoZWFwLmV4cGVjdERvZXNHQygpKTsKICAg
ICByZXR1cm4gbV9mcmVlTGlzdC5hbGxvY2F0ZSgKICAgICAgICAgWyZdICgpIC0+IEhlYXBDZWxs
KiB7Ci0gICAgICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0obV9kaXJlY3RvcnktPmhlYXAoKS0+
dm0oKSk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SGVhcENlbGwqPihhbGxvY2F0
ZVNsb3dDYXNlKGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpKTsKKyAgICAgICAgICAgIHNh
bml0aXplU3RhY2tGb3JWTShoZWFwLnZtKCkpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhlYXBDZWxsKj4oYWxsb2NhdGVTbG93Q2FzZShoZWFwLCBkZWZlcnJhbENvbnRleHQsIGZh
aWx1cmVNb2RlKSk7CiAgICAgICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5jcHAKaW5kZXggYzZlMWY2Y2RmNTAyN2ZlMTQwZjY0NGVjYTQ5MTkwZjQ4
NDhiMjVhMy4uNDI1MDRhMDg2YWVkYzI2MDhmMDQ0YjY3OWVhM2ZmMzk1YmJkYTBkMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcApAQCAtMzc3LDggKzM3Nyw4
IEBAIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZHVtcFN0YXRlKFByaW50U3RyZWFtJiBvdXQp
CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwogICAgIGRpcmVjdG9yeSgpLT5mb3JFYWNoQml0VmVj
dG9yV2l0aE5hbWUoCiAgICAgICAgIGhvbGRMb2NrKGRpcmVjdG9yeSgpLT5iaXR2ZWN0b3JMb2Nr
KCkpLAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIGJpdHZlY3RvciwgY29uc3QgY2hhciog
bmFtZSkgewotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBuYW1lLCAiOiIsIGJpdHZlY3Rv
cltpbmRleCgpXSA/ICJZRVMiIDogIm5vIik7CisgICAgICAgIFsmXShhdXRvIHZlY3RvclJlZiwg
Y29uc3QgY2hhciogbmFtZSkgeworICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBuYW1lLCAi
OiIsIHZlY3RvclJlZltpbmRleCgpXSA/ICJZRVMiIDogIm5vIik7CiAgICAgICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKaW5kZXggOTcwM2Uz
NTcxZTNmNGNkZjhiMjEyODBjMzkxMDcxOTEzZTM1YzhhOC4uZDQwOGQ2ZWVmMWMzNzIxMTA4N2Vm
NjZkZjZjYTJkMjJmZjkzMWRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE5NSw4ICsxOTYsOCBAQCB2b2lkIE1hcmtlZFNwYWNlOjpp
bml0aWFsaXplU2l6ZUNsYXNzRm9yU3RlcFNpemUoKQogfQogCiBNYXJrZWRTcGFjZTo6TWFya2Vk
U3BhY2UoSGVhcCogaGVhcCkKLSAgICA6IG1faGVhcChoZWFwKQogeworICAgIEFTU0VSVF9VTlVT
RUQoaGVhcCwgaGVhcCA9PSAmdGhpcy0+aGVhcCgpKTsKICAgICBpbml0aWFsaXplU2l6ZUNsYXNz
Rm9yU3RlcFNpemUoKTsKIH0KIApAQCAtMjM0LDcgKzIzNSw3IEBAIHZvaWQgTWFya2VkU3BhY2U6
Omxhc3RDaGFuY2VUb0ZpbmFsaXplKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3Mo
KQogewotICAgIG1faGVhcC0+c3dlZXBlcigpLnN0b3BTd2VlcGluZygpOworICAgIGhlYXAoKS5z
d2VlcGVyKCkuc3RvcFN3ZWVwaW5nKCk7CiAgICAgZm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAg
WyZdIChCbG9ja0RpcmVjdG9yeSYgZGlyZWN0b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAg
ICAgICAgICAgZGlyZWN0b3J5LnN3ZWVwKCk7CkBAIC0yNzAsMTMgKzI3MSwxMyBAQCB2b2lkIE1h
cmtlZFNwYWNlOjpzd2VlcFByZWNpc2VBbGxvY2F0aW9ucygpCiAKIHZvaWQgTWFya2VkU3BhY2U6
OnByZXBhcmVGb3JBbGxvY2F0aW9uKCkKIHsKLSAgICBBU1NFUlQoIVRocmVhZDo6bWF5QmVHQ1Ro
cmVhZCgpIHx8IG1faGVhcC0+d29ybGRJc1N0b3BwZWQoKSk7CisgICAgQVNTRVJUKCFUaHJlYWQ6
Om1heUJlR0NUaHJlYWQoKSB8fCBoZWFwKCkud29ybGRJc1N0b3BwZWQoKSk7CiAgICAgZm9yIChT
dWJzcGFjZSogc3Vic3BhY2UgOiBtX3N1YnNwYWNlcykKICAgICAgICAgc3Vic3BhY2UtPnByZXBh
cmVGb3JBbGxvY2F0aW9uKCk7CiAKICAgICBtX2FjdGl2ZVdlYWtTZXRzLnRha2VGcm9tKG1fbmV3
QWN0aXZlV2Vha1NldHMpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29wZSgp
ID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29w
ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlv
bnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgPSBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZz
ZXQ7CiAgICAgZWxzZQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXRG
b3JTd2VlcCA9IDA7CkBAIC0yOTgsNyArMjk5LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6dmlzaXRX
ZWFrU2V0cyhTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICAKICAgICBtX25ld0FjdGl2ZVdlYWtT
ZXRzLmZvckVhY2godmlzaXQpOwogICAgIAotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rpb25TY29w
ZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25T
Y29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkKICAgICAgICAgbV9hY3RpdmVXZWFrU2V0
cy5mb3JFYWNoKHZpc2l0KTsKIH0KIApAQCAtMzEwLDcgKzMxMSw3IEBAIHZvaWQgTWFya2VkU3Bh
Y2U6OnJlYXBXZWFrU2V0cygpCiAgICAgCiAgICAgbV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNo
KHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xs
ZWN0aW9uU2NvcGU6OkZ1bGwpCisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAgIG1fYWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2
aXNpdCk7CiB9CiAKQEAgLTM1Niw3ICszNTcsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJl
Rm9yQ29uc2VydmF0aXZlU2NhbigpCiAKIHZvaWQgTWFya2VkU3BhY2U6OnByZXBhcmVGb3JNYXJr
aW5nKCkKIHsKLSAgICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9u
U2NvcGU6OkVkZW4pCisgICAgaWYgKGhlYXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0
aW9uU2NvcGU6OkVkZW4pCiAgICAgICAgIG1fcHJlY2lzZUFsbG9jYXRpb25zT2Zmc2V0Rm9yVGhp
c0NvbGxlY3Rpb24gPSBtX3ByZWNpc2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7CiAgICAgZWxz
ZQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uID0g
MDsKQEAgLTQxNiw3ICs0MTcsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpzaHJpbmsoKQogCiB2b2lk
IE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcoKQogewotICAgIGlmIChtX2hlYXAtPmNvbGxlY3Rp
b25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkgeworICAgIGlmIChoZWFwKCkuY29s
bGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKSB7CiAgICAgICAgIGZvckVh
Y2hEaXJlY3RvcnkoCiAgICAgICAgICAgICBbJl0gKEJsb2NrRGlyZWN0b3J5JiBkaXJlY3Rvcnkp
IC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LmJlZ2luTWFy
a2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCk7CkBAIC01NTEsNyArNTUyLDcgQEAgdm9pZCBNYXJrZWRT
cGFjZTo6ZGlkQWxsb2NhdGVJbkJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogCiB2
b2lkIE1hcmtlZFNwYWNlOjpzbmFwc2hvdFVuc3dlcHQoKQogewotICAgIGlmIChtX2hlYXAtPmNv
bGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RWRlbikgeworICAgIGlmIChoZWFw
KCkuY29sbGVjdGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKSB7CiAgICAgICAg
IGZvckVhY2hEaXJlY3RvcnkoCiAgICAgICAgICAgICBbJl0gKEJsb2NrRGlyZWN0b3J5JiBkaXJl
Y3RvcnkpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LnNu
YXBzaG90VW5zd2VwdEZvckVkZW5Db2xsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAppbmRleCAwMDY4MDViNDQ3YmUxYjUyMWJjYTQ0NGMxZGNlYTFlZjc0
Mjc4NDg4Li5hZDM2NjIyZjFiNTdkZDY2YmNjZjNkOWFhNGZmMjE4NjBjMzEyNzBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKQEAgLTk1LDcgKzk1LDcgQEAgY2xh
c3MgTWFya2VkU3BhY2UgewogICAgIE1hcmtlZFNwYWNlKEhlYXAqKTsKICAgICB+TWFya2VkU3Bh
Y2UoKTsKICAgICAKLSAgICBIZWFwKiBoZWFwKCkgY29uc3QgeyByZXR1cm4gbV9oZWFwOyB9Cisg
ICAgSGVhcCYgaGVhcCgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgbGFzdENoYW5jZVRvRmluYWxp
emUoKTsgLy8gTXVzdCBjYWxsIHN0b3BBbGxvY2F0aW5nRm9yR29vZCBmaXJzdC4KICAgICB2b2lk
IGZyZWVNZW1vcnkoKTsKQEAgLTIxMyw3ICsyMTMsNiBAQCBjbGFzcyBNYXJrZWRTcGFjZSB7CiAg
ICAgUHJlY2lzZUFsbG9jYXRpb24qKiBtX3ByZWNpc2VBbGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0
aW9uQmVnaW4geyBudWxscHRyIH07CiAgICAgUHJlY2lzZUFsbG9jYXRpb24qKiBtX3ByZWNpc2VB
bGxvY2F0aW9uc0ZvclRoaXNDb2xsZWN0aW9uRW5kIHsgbnVsbHB0ciB9OwogCi0gICAgSGVhcCog
bV9oZWFwOwogICAgIHNpemVfdCBtX2NhcGFjaXR5IHsgMCB9OwogICAgIEhlYXBWZXJzaW9uIG1f
bWFya2luZ1ZlcnNpb24geyBpbml0aWFsVmVyc2lvbiB9OwogICAgIEhlYXBWZXJzaW9uIG1fbmV3
bHlBbGxvY2F0ZWRWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2VJbmxpbmVzLmgKaW5kZXggZGY4NTMxZDk3ZmM2OTVh
MjJjZjI3ZDI1YTFhNDg5MGYwYmUzNWFmNS4uZWE4NTE0NjQ5MzMwMjhjNTA5MDk5NmYyZTY1MTQ3
N2ExNDJlM2RmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2VJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2VJbmxpbmVzLmgKQEAgLTMwLDYgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBTFdB
WVNfSU5MSU5FIEhlYXAmIE1hcmtlZFNwYWNlOjpoZWFwKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
KmJpdHdpc2VfY2FzdDxIZWFwKj4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcykgLSBPQkpF
Q1RfT0ZGU0VUT0YoSGVhcCwgbV9vYmplY3RTcGFjZSkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBNYXJrZWRTcGFjZTo6Zm9yRWFjaExpdmVDZWxsKEhlYXBJ
dGVyYXRpb25TY29wZSYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgQVNTRVJUKGlz
SXRlcmF0aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vi
c3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCmluZGV4
IDk0YzJmZjRjNmIyYWNhNmMxOWRjMTU4Y2I0ZjhlNjM3MzRkMGUzYTcuLmFiOTllMmRhNmM1YzNi
MzUxMzZiMTdhZTQ0ZTUxYmE3OGE5ODk3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1N1YnNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9T
dWJzcGFjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJIZWFwQ2VsbFR5cGUuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgi
CisjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyYWxsZWxTb3Vy
Y2VBZGFwdGVyLmgiCiAjaW5jbHVkZSAiUHJldmVudENvbGxlY3Rpb25TY29wZS5oIgogI2luY2x1
ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgpAQCAtNDksNyArNTAsNyBAQCB2b2lkIFN1YnNwYWNlOjpp
bml0aWFsaXplKEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBBbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yKiBhbAogICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvciA9IGFsaWduZWRNZW1vcnlBbGxv
Y2F0b3I7CiAgICAgbV9kaXJlY3RvcnlGb3JFbXB0eUFsbG9jYXRpb24gPSBtX2FsaWduZWRNZW1v
cnlBbGxvY2F0b3ItPmZpcnN0RGlyZWN0b3J5KCk7CiAKLSAgICBIZWFwJiBoZWFwID0gKm1fc3Bh
Y2UuaGVhcCgpOworICAgIEhlYXAmIGhlYXAgPSBtX3NwYWNlLmhlYXAoKTsKICAgICBoZWFwLm9i
amVjdFNwYWNlKCkubV9zdWJzcGFjZXMuYXBwZW5kKHRoaXMpOwogICAgIG1fYWxpZ25lZE1lbW9y
eUFsbG9jYXRvci0+cmVnaXN0ZXJTdWJzcGFjZSh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9TdWJzcGFjZS5oCmluZGV4IGI1MDgxMTQ0Y2Q0YzBiMTI5MWNkMmMzNTNjMjJjNmZjNDdj
MWZmYWIuLjM0ZWEzNDExODMxYmUwODdlM2U1M2ViZTYwN2I0YThlNjAzZGRkZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaApAQCAtMTE5LDYgKzExOSw4IEBAIGNsYXNzIFN1
YnNwYWNlIHsKICAgICBDU3RyaW5nIG1fbmFtZTsKIAogICAgIGJvb2wgbV9pc0lzb1N1YnNwYWNl
IHsgZmFsc2UgfTsKK3Byb3RlY3RlZDoKKyAgICB1aW50OF90IG1fcmVtYWluaW5nTG93ZXJUaWVy
Q2VsbENvdW50IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmgKaW5kZXggYThlZDZiODI4OTAwZmUwMjEzYmRlZDljNjM3NWM5N2IwYTM2Yzg1OS4uODg1
YjdiMTczYjExYTYwMWJlMjlhMzMyYWI5ZDJhNDE0ZDU2MjEyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRTdHJl
YW07CiAKLWlubGluZSBzaXplX3QgZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKHNpemVfdCBudW1C
aXRzKSB7IHJldHVybiAobnVtQml0cyArIDMxKSAvIDMyOyB9CitpbmxpbmUgY29uc3RleHByIHNp
emVfdCBmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChu
dW1CaXRzICsgMzEpIC8gMzI7IH0KIAogY2xhc3MgRmFzdEJpdFZlY3RvcldvcmRWaWV3IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQyMSw2ICs0MjEsOSBAQCBjbGFzcyBGYXN0
Qml0VmVjdG9ySW1wbCB7CiAgICAgfQogICAgIAogICAgIHR5cGVuYW1lIFdvcmRzOjpWaWV3VHlw
ZSB3b3JkVmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHMudmlldygpOyB9CisKKyAgICBXb3Jk
cyYgdW5zYWZlV29yZHMoKSB7IHJldHVybiBtX3dvcmRzOyB9CisgICAgY29uc3QgV29yZHMmIHVu
c2FmZVdvcmRzKCkgY29uc3QgeyByZXR1cm4gbV93b3JkczsgfQogICAgIAogcHJpdmF0ZToKICAg
ICAvLyBZb3UnZCB0aGluayB0aGF0IHdlIGNvdWxkIHJlbW92ZSB0aGlzIGZyaWVuZCBpZiB3ZSB1
c2VkIHByb3RlY3RlZCwgYnV0IHlvdSdkIGJlIHdyb25nLApAQCAtNDM2LDYgKzQzOSwzOCBAQCBj
bGFzcyBGYXN0Qml0VmVjdG9ySW1wbCB7CiAgICAgV29yZHMgbV93b3JkczsKIH07CiAKK2NsYXNz
IEZhc3RCaXRSZWZlcmVuY2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIEZhc3RCaXRSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0UmVmZXJl
bmNlKHVpbnQzMl90KiB3b3JkLCB1aW50MzJfdCBtYXNrKQorICAgICAgICA6IG1fd29yZCh3b3Jk
KQorICAgICAgICAsIG1fbWFzayhtYXNrKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhISgqbV93b3JkICYg
bV9tYXNrKTsKKyAgICB9CisKKyAgICBGYXN0Qml0UmVmZXJlbmNlJiBvcGVyYXRvcj0oYm9vbCB2
YWx1ZSkKKyAgICB7CisgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICptX3dvcmQgfD0g
bV9tYXNrOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbV93b3JkICY9IH5tX21hc2s7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdWludDMyX3QqIG1f
d29yZCB7IG51bGxwdHIgfTsKKyAgICB1aW50MzJfdCBtX21hc2sgeyAwIH07Cit9OworCisKKwog
Y2xhc3MgRmFzdEJpdFZlY3RvciA6IHB1YmxpYyBGYXN0Qml0VmVjdG9ySW1wbDxGYXN0Qml0VmVj
dG9yV29yZE93bmVyPiB7CiBwdWJsaWM6CiAgICAgRmFzdEJpdFZlY3RvcigpIHsgfQpAQCAtNTE4
LDQyICs1NTMsMTMgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciA6IHB1YmxpYyBGYXN0Qml0VmVjdG9y
SW1wbDxGYXN0Qml0VmVjdG9yV29yZE93bmVyPiB7CiAgICAgICAgIHJldHVybiBhdEltcGwoaW5k
ZXgpOwogICAgIH0KICAgICAKLSAgICBjbGFzcyBCaXRSZWZlcmVuY2UgewotICAgIHB1YmxpYzoK
LSAgICAgICAgQml0UmVmZXJlbmNlKCkgeyB9Ci0gICAgICAgIAotICAgICAgICBCaXRSZWZlcmVu
Y2UodWludDMyX3QqIHdvcmQsIHVpbnQzMl90IG1hc2spCi0gICAgICAgICAgICA6IG1fd29yZCh3
b3JkKQotICAgICAgICAgICAgLCBtX21hc2sobWFzaykKLSAgICAgICAgewotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICEhKCptX3dvcmQgJiBtX21hc2spOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBCaXRSZWZlcmVuY2UmIG9wZXJhdG9yPShib29sIHZhbHVlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgKm1fd29yZCB8
PSBtX21hc2s7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKm1fd29yZCAmPSB+
bV9tYXNrOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0gICAgICAgIAot
ICAgIHByaXZhdGU6Ci0gICAgICAgIHVpbnQzMl90KiBtX3dvcmQgeyBudWxscHRyIH07Ci0gICAg
ICAgIHVpbnQzMl90IG1fbWFzayB7IDAgfTsKLSAgICB9OwotICAgIAotICAgIEJpdFJlZmVyZW5j
ZSBhdChzaXplX3QgaW5kZXgpCisgICAgRmFzdEJpdFJlZmVyZW5jZSBhdChzaXplX3QgaW5kZXgp
CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8
IG51bUJpdHMoKSk7Ci0gICAgICAgIHJldHVybiBCaXRSZWZlcmVuY2UoJm1fd29yZHMud29yZChp
bmRleCA+PiA1KSwgMSA8PCAoaW5kZXggJiAzMSkpOworICAgICAgICByZXR1cm4gRmFzdEJpdFJl
ZmVyZW5jZSgmbV93b3Jkcy53b3JkKGluZGV4ID4+IDUpLCAxIDw8IChpbmRleCAmIDMxKSk7CiAg
ICAgfQogICAgIAotICAgIEJpdFJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAg
ICBGYXN0Qml0UmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGF0KGluZGV4KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383532</attachid>
            <date>2019-11-13 18:01:42 -0800</date>
            <delta_ts>2019-11-13 18:36:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204149-20191113180142.patch</filename>
            <type>text/plain</type>
            <size>65252</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyNDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZWM3YjVjZGIwZTI2NWVmOWJjMGVjNWY4ODE5YzE2OWM1MjQzZmQ5Li45ZGM1NjUwNDYyNjhiM2E1
OTNiMzdmN2ZjZjQ4ZjY3NDg5ZTE1MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMTktMTEtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBCbG9ja0RpcmVjdG9yeSdzIGJpdHMgc2hvdWxkIGJlIGNvbXBh
Y3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDE0
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHN0
YXJ0IGFwcGx5aW5nIElzb1N1YnNwYWNlIHRvIGFsbCBKU0NlbGxzLiBUaGlzIG1lYW5zIHRoYXQg
SXNvU3Vic3BhY2Ugc2hvdWxkIGJlIHNtYWxsIGVub3VnaCwKKyAgICAgICAgc28gdGhhdCB3ZSBj
YW4gaG9sZCBtYW55IElzb1N1YnNwYWNlcyB3aXRob3V0IGNvbnNpZGVyaW5nIGFib3V0IG1lbW9y
eSByZWdyZXNzaW9uLgorCisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGludHJvZHVjZSBzZXZl
cmFsIHRoaW5ncyB0byBzaHJpbmsgc2l6ZW9mKElzb1N1YnNwYWNlKSBmcm9tIDUyOCB0byAzODQu
CisKKyAgICAgICAgMS4gQWRqdXN0aW5nIG1lbWJlcnMgdG8gcmVtb3ZlIHNvbWUgcGFkZGluZ3Mu
CisgICAgICAgIDIuIFJlbW92ZSBtX2hlYXAgZmllbGQgc2luY2UgdGhpcyBjYW4gYmUgZ290IGZy
b20gdGhlIGNhbGxlciBlYXNpbHkuCisgICAgICAgIDMuIE1ha2UgTWFya2VkU3BhY2U6OmhlYXAo
KSBlZmZpY2llbnQ6IGp1c3QgZG9pbmcgcG9pbnRlciBhcml0aG1ldGljLgorICAgICAgICA0LiBS
ZW1vdmUgbV9zaXplIGZpZWxkIGZyb20gSXNvU3Vic3BhY2Ugc2luY2UgQmxvY2tEaXJlY3Rvcnkg
a25vd3MgY2VsbFNpemUuCisgICAgICAgIDUuIEludHJvZHVjZSBCbG9ja0RpcmVjdG9yeUJpdHMs
IHdoaWNoIHJlcGFsY2VzIDkgRmFzdEJpdFZlY3RvciBpbiBCbG9ja0RpcmVjdG9yeSB0byB0aGlz
IG9uZSBjbGFzcy4KKyAgICAgICAgICAgU2luY2UgYWxsIEZhc3RCaXRWZWN0b3IgaGFzIHRoZSBz
YW1lIHNpemUsIHdlIHNob3VsZCBub3QgaGF2ZSBhIHNpemUgZmllbGQgZm9yIGVhY2ggRmFzdEJp
dFZlY3Rvci4KKyAgICAgICAgICAgV2UgcmV1c2UgRmFzdEJpdFZlY3RvcidzIFZpZXcgbWVjaGFu
aXNtIHRvIGtlZXAgdGhlIHNhbWUgZXJnb25vbWljcyB3aGlsZSBtYWtpbmcgQmxvY2tEaXJlY3Rv
cnlCaXRzCisgICAgICAgICAgIG11Y2ggc21hbGxlci4gV2UgcHV0IDkgdWludDMyX3QgYXMgU2Vn
bWVudCwgYW5kIG1hbmFnZSBWZWN0b3I8U2VnbWVudD4gaW4gdGhpcyBkYXRhIHN0cnVjdHVyZS4g
U2luY2UKKyAgICAgICAgICAgd2UgdG91Y2ggc2V2ZXJhbCBiaXRzIGF0IHRoZSBzYW1lIHRpbWUg
Zm9yIHRoZSBzYW1lIGJsb2NrLWluZGV4LCB0aGlzIGRhdGEgc3RydWN0dXJlIGlzIGNvbXBhY3Qg
YW5kCisgICAgICAgICAgIGVmZmljaWVudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogaGVhcC9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjo6cmVnaXN0ZXJEaXJlY3RvcnkpOgorICAgICAgICAqIGhlYXAv
QWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdG9yLmg6Cisg
ICAgICAgICogaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkFsbG9jYXRv
cjo6YWxsb2NhdGUgY29uc3QpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuY3BwOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3RvcnkpOgorICAgICAgICAo
SlNDOjpCbG9ja0RpcmVjdG9yeTo6ZmluZEVtcHR5QmxvY2tUb1N0ZWFsKToKKyAgICAgICAgKEpT
Qzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja0ZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlND
OjpCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2Nr
RGlyZWN0b3J5OjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpyZW1v
dmVCbG9jayk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2Nh
dGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjpiZWdpbk1hcmtpbmdGb3JGdWxs
Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZvckVkZW5Db2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OnNuYXBzaG90VW5zd2VwdEZv
ckZ1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9j
a1RvU3dlZXApOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c3dlZXApOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6c2hyaW5rKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmFzc2VydE5vVW5zd2VwdCk6CisgICAgICAgIChKU0M6OkJsb2NrRGlyZWN0b3J5Ojpw
YXJhbGxlbE5vdEVtcHR5QmxvY2tTb3VyY2UpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9y
eTo6ZHVtcEJpdHMpOgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnkuaDoKKyAgICAgICAg
KEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmNlbGxLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Qmxv
Y2tEaXJlY3Rvcnk6OmZvckVhY2hCaXRWZWN0b3IpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVj
dG9yeTo6Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3Rvcnk6OmhlYXApOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcpOgor
ICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9y
V29yZFZpZXc6Om51bUJpdHMgY29uc3QpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJp
dHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc6OndvcmQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXc6OndvcmQpOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeUJpdHM6OkJsb2NrRGlyZWN0
b3J5Qml0VmVjdG9yV29yZFZpZXc6OmNsZWFyQWxsKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJl
Y3RvcnlCaXRzOjpCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3Ojp2aWV3IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpudW1CaXRzIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QmxvY2tEaXJlY3RvcnlCaXRzOjpyZXNpemUpOgorICAgICAgICAoSlNDOjpCbG9j
a0RpcmVjdG9yeUJpdHM6OmZvckVhY2hTZWdtZW50KToKKyAgICAgICAgKiBoZWFwL0Jsb2NrRGly
ZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaEJs
b2NrKToKKyAgICAgICAgKEpTQzo6QmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hOb3RFbXB0eUJsb2Nr
KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpD
b21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KToKKyAgICAgICAgKEpTQzo6Q29tcGxl
dGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vi
c3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRl
Tm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29DZWxsU2V0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SXNvQ2VsbFNldDo6cGFyYWxsZWxOb3RFbXB0eU1hcmtlZEJsb2NrU291cmNlKToKKyAgICAg
ICAgKiBoZWFwL0lzb0NlbGxTZXRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Oklzb0NlbGxTZXQ6
OmZvckVhY2hNYXJrZWRDZWxsKToKKyAgICAgICAgKiBoZWFwL0lzb1N1YnNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6Oklzb1N1YnNwYWNlKToKKyAgICAgICAgKEpTQzo6SXNv
U3Vic3BhY2U6OnRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcik6CisgICAgICAgICogaGVhcC9Jc29T
dWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6Y2VsbFNpemUpOgorICAgICAg
ICAoSlNDOjpJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbCk6CisgICAgICAgIChK
U0M6Oklzb1N1YnNwYWNlOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbCk6CisgICAgICAgICogaGVhcC9Jc29TdWJz
cGFjZVBlclZNLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2VQZXJWTTo6QXV0b3JlbW92
aW5nSXNvU3Vic3BhY2U6On5BdXRvcmVtb3ZpbmdJc29TdWJzcGFjZSk6CisgICAgICAgICogaGVh
cC9Mb2NhbEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkxvY2FsQWxsb2NhdG9yOjphbGxv
Y2F0ZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TG9jYWxBbGxvY2F0b3I6OmRvVGVzdENvbGxl
Y3Rpb25zSWZOZWVkZWQpOgorICAgICAgICAqIGhlYXAvTG9jYWxBbGxvY2F0b3IuaDoKKyAgICAg
ICAgKiBoZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpMb2NhbEFs
bG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpkdW1wU3RhdGUpOgorICAgICAgICAqIGhl
YXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6TWFya2VkU3Bh
Y2UpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6c3dlZXBCbG9ja3MpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvckFsbG9jYXRpb24pOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6dmlzaXRXZWFrU2V0cyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpy
ZWFwV2Vha1NldHMpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6cHJlcGFyZUZvck1hcmtp
bmcpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OnNuYXBzaG90VW5zd2VwdCk6CisgICAgICAgICogaGVhcC9NYXJr
ZWRTcGFjZS5oOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6aGVhcCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
TWFya2VkU3BhY2U6OmhlYXAgY29uc3QpOgorICAgICAgICAqIGhlYXAvU3Vic3BhY2UuY3BwOgor
ICAgICAgICAoSlNDOjpTdWJzcGFjZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogaGVhcC9TdWJz
cGFjZS5oOgorCiAyMDE5LTExLTEzICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5j
b20+CiAKICAgICAgICAgU3BsaXQgQXJpdGhQcm9maWxlIGludG8gYSBVbmFyeSBhbmQgYSBCaW5h
cnkgdmVyc2lvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA1NWU3OTUxNWEyYmQxOWIzNDM1MGZhNjlkZTk5MzhlZmE2OGUzZTFi
Li44MjM3OTc3OTUzZTU0YTc0YTZiZGQ0YjUyM2RhMDNkMjM1YzIyZDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIzIEBACisyMDE5LTExLTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQmxvY2tEaXJlY3RvcnkncyBiaXRzIHNob3VsZCBiZSBjb21wYWN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQxNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0
Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aCk6Cisg
ICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3Jkcyk6CisgICAgICAgIChX
VEY6OkZhc3RCaXRWZWN0b3JJbXBsOjp1bnNhZmVXb3JkcyBjb25zdCk6CisgICAgICAgIChXVEY6
OkZhc3RCaXRSZWZlcmVuY2U6OkZhc3RCaXRSZWZlcmVuY2UpOgorICAgICAgICAoV1RGOjpGYXN0
Qml0UmVmZXJlbmNlOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6RmFzdEJp
dFJlZmVyZW5jZTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6YXQp
OgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdU
Rjo6RmFzdEJpdFZlY3Rvcjo6Qml0UmVmZXJlbmNlOjpCaXRSZWZlcmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpCaXRSZWZlcmVuY2U6Om9wZXJhdG9yIGJvb2wg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpCaXRSZWZlcmVu
Y2U6Om9wZXJhdG9yPSk6IERlbGV0ZWQuCisKIDIwMTktMTEtMTEgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFVUQyBvZmZzZXQgZm9yIFNhbW9hIGlz
IG1pc2NhbGN1bGF0ZWQgd2hlbiAhSEFWRShUSU1FR00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggZGNlYjNmYzA5OTA3MmFjMzY2MTZlMTYzNjk2NmI1M2JiNTM3NWJjMi4u
YjZmMGFlZDMwZTI0ZDNhZjVlM2RhYTFlOTI3MjVlNDJlZTE0M2VkMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNTY5LDYgKzU2OSw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgK
ICAgICBoZWFwL0FsbG9jYXRvckZvck1vZGUuaAogICAgIGhlYXAvQmxvY2tEaXJlY3RvcnkuaAor
ICAgIGhlYXAvQmxvY2tEaXJlY3RvcnlCaXRzLmgKICAgICBoZWFwL0Jsb2NrRGlyZWN0b3J5SW5s
aW5lcy5oCiAgICAgaGVhcC9DZWxsQXR0cmlidXRlcy5oCiAgICAgaGVhcC9DZWxsQ29udGFpbmVy
LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGQyN2Q5ODEwMTQzNzg5NDRhM2Ex
NjI4NzVhODU1MzJhOTE2Y2JkNi4uMzYzYmVmNDE4MTg1NGZjOWZlMmU1OGQyOTJjYTI3ODljYmI4
ODM2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTcsNiArMTgxNyw3IEBA
CiAJCUUzNkNDOTQ3MjA4NjMxNEYwMDUxRkZENiAvKiBXYXNtQ3JlYXRpb25Nb2RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZDQzk0NjIwODYzMTRG
MDA1MUZGRDYgLyogV2FzbUNyZWF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM4NTBCMTUyMjZFRDY0
MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg1MEIxNDIyNkVENjNFMDA5QUJGOUMgLyogREZH
TWluaWZpZWRJRElubGluZXMuaCAqLzsgfTsKKwkJRTM4NjUyRTMyMzdDQTBDOTAwRTFENUVFIC8q
IEJsb2NrRGlyZWN0b3J5Qml0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4NjUyRTIyMzdDQTBDODAwRTFENUVFIC8qIEJsb2NrRGlyZWN0b3J5Qml0
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
ODkzQTFEMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzg5
M0ExQzIyMDNBN0M2MDBFNzlBNzQgLyogQXN5bmNGcm9tU3luY0l0ZXJhdG9yUHJvdG90eXBlLmx1
dC5oICovOyB9OwogCQlFMzhEOTk5QzIyMUI3OEJCMDBENTA0NzQgLyogSlNOb25EZXN0cnVjdGli
bGVQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4RDk5OUEyMjFCNzg5RjAwRDUwNDc0IC8qIEpTTm9uRGVzdHJ1Y3RpYmxlUHJveHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzkwMDYyMTIy
MDhCRkM0MDAxMDE5Q0YgLyogU3Vic3BhY2VBY2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTAwNjIwMjIwOEJGQzMwMDEwMTlDRiAvKiBTdWJz
cGFjZUFjY2Vzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC00OTQ3LDYgKzQ5NDgsNyBAQAogCQlFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyog
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hY3JvQXNzZW1ibGVySGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzgwRDY2QjFGMTkyNDlEMDBBNTkwOTUgLyogQnVpbHRpbk5hbWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ1aWx0aW5OYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODUwQjE0MjI2RUQ2M0UwMDlBQkY5QyAvKiBERkdNaW5pZmllZElE
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdNaW5pZmllZElESW5saW5lcy5oOyBwYXRoID0g
ZGZnL0RGR01pbmlmaWVkSURJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzODY1MkUyMjM3Q0EwQzgwMEUxRDVFRSAvKiBCbG9ja0RpcmVjdG9yeUJpdHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tEaXJlY3RvcnlCaXRzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODkzQTFDMjIwM0E3QzYwMEU3OUE3NCAvKiBBc3luY0Zy
b21TeW5jSXRlcmF0b3JQcm90b3R5cGUubHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS5sdXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM4RDA2MEIxRjhFODE0MTAwNjQ5Q0YyIC8qIEpTU2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQwNjBD
MUY4RTgxNDEwMDY0OUNGMiAvKiBTY3JpcHRGZXRjaFBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02MTAyLDYgKzYxMDQsNyBAQAogCQkJCTBGQjQ2NzdFMUZEREE2
RTUwMDNGQ0IwOSAvKiBBdG9tSW5kaWNlcy5oICovLAogCQkJCUMyQjkxNkM0MTREQTA0MEMwMENC
QUM4NiAvKiBCbG9ja0RpcmVjdG9yeS5jcHAgKi8sCiAJCQkJQzJCOTE2QzExNERBMDE0RTAwQ0JB
Qzg2IC8qIEJsb2NrRGlyZWN0b3J5LmggKi8sCisJCQkJRTM4NjUyRTIyMzdDQTBDODAwRTFENUVF
IC8qIEJsb2NrRGlyZWN0b3J5Qml0cy5oICovLAogCQkJCTBGN0RGMTQ1MUUyQkVGNjgwMDk1OTUx
QiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCAqLywKIAkJCQkwRjk2MzAzNTFENDE5MkMzMDA1
NjA5RDkgLyogQ2VsbEF0dHJpYnV0ZXMuY3BwICovLAogCQkJCTBGOTYzMDM2MUQ0MTkyQzMwMDU2
MDlEOSAvKiBDZWxsQXR0cmlidXRlcy5oICovLApAQCAtOTAwOCw2ICs5MDExLDcgQEAKIAkJCQk4
Njk3NkU1RTFGQTNFOEI2MDBFN0M0RTEgLyogQmlnSW50UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjY0QjI3MjFBNzg0QkFGMDA2RTRFNjYgLyogQmluYXJ5U3dpdGNoLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyogQmxvY2tEaXJlY3Rvcnku
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzODY1MkUzMjM3Q0EwQzkwMEUxRDVFRSAvKiBCbG9ja0Rp
cmVjdG9yeUJpdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0RGMTQ2MUUyQkVGNkEwMDk1OTUx
QiAvKiBCbG9ja0RpcmVjdG9yeUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0VD
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBCb29sZWFuT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
QjQ2OTQzOTFGOTc0MzlFMDBDQ0IzRjkgLyogQm9vbGVhblByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGlnbmVkTWVtb3J5
QWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlB
bGxvY2F0b3IuY3BwCmluZGV4IGU3YzkzYzI2MzY3OTc3MGIyZDAxZGYyZGUwYmZlY2ZmODZmMWNj
MDguLmVhMzJkZjNjMGJjYzFkZTE3NmVjZmE4ZjZmMjdlMDI0YTAyOTU4YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuY3Bw
CkBAIC00MCwxMiArNDAsMTIgQEAgQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjo6fkFsaWduZWRNZW1v
cnlBbGxvY2F0b3IoKQogewogfQogCi12b2lkIEFsaWduZWRNZW1vcnlBbGxvY2F0b3I6OnJlZ2lz
dGVyRGlyZWN0b3J5KEJsb2NrRGlyZWN0b3J5KiBkaXJlY3RvcnkpCit2b2lkIEFsaWduZWRNZW1v
cnlBbGxvY2F0b3I6OnJlZ2lzdGVyRGlyZWN0b3J5KEhlYXAmIGhlYXAsIEJsb2NrRGlyZWN0b3J5
KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIWRpcmVjdG9yeS0+bmV4dERpcmVj
dG9yeUluQWxpZ25lZE1lbW9yeUFsbG9jYXRvcigpKTsKICAgICAKICAgICBpZiAobV9kaXJlY3Rv
cmllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKCFUaHJlYWQ6Om1heUJlR0NUaHJlYWQo
KSB8fCBkaXJlY3RvcnktPmhlYXAoKS0+d29ybGRJc1N0b3BwZWQoKSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoaGVhcCwgIVRocmVhZDo6bWF5QmVHQ1RocmVhZCgpIHx8IGhlYXAud29ybGRJc1N0
b3BwZWQoKSk7CiAgICAgICAgIGZvciAoU3Vic3BhY2UqIHN1YnNwYWNlID0gbV9zdWJzcGFjZXMu
Zmlyc3QoKTsgc3Vic3BhY2U7IHN1YnNwYWNlID0gc3Vic3BhY2UtPm5leHRTdWJzcGFjZUluQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcigpKQogICAgICAgICAgICAgc3Vic3BhY2UtPmRpZENyZWF0ZUZp
cnN0RGlyZWN0b3J5KGRpcmVjdG9yeSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oCmluZGV4IDY2NDQyYWRmMzE4YTU2
N2Q4MmFjYzBkZjgyMjJlMzVjYTFiNTRhZGMuLjk1NjY5NjM1ZDhkZDUxMzFkOGVmYmFiY2FlYWU2
YjBmZTdlZDFiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGln
bmVkTWVtb3J5QWxsb2NhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBCbG9ja0RpcmVjdG9yeTsKK2NsYXNzIEhlYXA7CiBjbGFzcyBTdWJzcGFjZTsKIAog
Y2xhc3MgQWxpZ25lZE1lbW9yeUFsbG9jYXRvciB7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIEFs
aWduZWRNZW1vcnlBbGxvY2F0b3IgewogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3QgPSAwOwogCi0gICAgdm9pZCByZWdpc3RlckRpcmVjdG9yeShCbG9ja0Rp
cmVjdG9yeSopOworICAgIHZvaWQgcmVnaXN0ZXJEaXJlY3RvcnkoSGVhcCYsIEJsb2NrRGlyZWN0
b3J5Kik7CiAgICAgQmxvY2tEaXJlY3RvcnkqIGZpcnN0RGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9kaXJlY3Rvcmllcy5maXJzdCgpOyB9CiAKICAgICB2b2lkIHJlZ2lzdGVyU3Vic3BhY2Uo
U3Vic3BhY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9j
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmgKaW5kZXggMjI5
MTU4ZmNlNDIwZjFlNzk5MjA5ZGMxNDQ4YjgzMjE4MGEyZjc5YS4uNzIzOWQyMjlmY2U5MmJiYTA0
NTQwMDNlNDlkNTI4ZjA3ZTMyN2NmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2Nh
dG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBHQ0RlZmVy
cmFsQ29udGV4dDsKK2NsYXNzIEhlYXA7CiBjbGFzcyBMb2NhbEFsbG9jYXRvcjsKIAogLy8gVGhp
cyBhYnN0cmFjdHMgaG93IHdlIHJlZmVyIHRvIExvY2FsQWxsb2NhdG9yIHNvIHRoYXQgd2UgY291
bGQgZXZlbnR1YWxseSBzdXBwb3J0IHRocmVhZC1sb2NhbApAQCAtNDUsNyArNDYsNyBAQCBjbGFz
cyBBbGxvY2F0b3IgewogICAgIHsKICAgICB9CiAgICAgCi0gICAgdm9pZCogYWxsb2NhdGUoR0NE
ZWZlcnJhbENvbnRleHQqLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUpIGNvbnN0OworICAgIHZvaWQq
IGFsbG9jYXRlKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSkgY29uc3Q7CiAgICAgCiAgICAgdW5zaWduZWQgY2VsbFNpemUoKSBjb25zdDsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvcklubGluZXMuaAppbmRleCAxNzU3
MzI3M2M0OTlmYmM1OGE3YjRmZWJmZjdhMGQ5YmM5ZGQ0MmVmLi42OTViMDg5ZDhjNTcxYTdiYjA4
MGM3ZDljMWVhNmZjODlkOGU4MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdG9ySW5saW5lcy5oCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1BTFdBWVNfSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGUoR0NEZWZlcnJhbENvbnRl
eHQqIGNvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBtb2RlKSBjb25zdAorQUxXQVlTX0lO
TElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250
ZXh0KiBjb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgbW9kZSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9sb2NhbEFsbG9jYXRvci0+YWxsb2NhdGUoY29udGV4dCwgbW9kZSk7CisgICAgcmV0
dXJuIG1fbG9jYWxBbGxvY2F0b3ItPmFsbG9jYXRlKGhlYXAsIGNvbnRleHQsIG1vZGUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Jsb2NrRGlyZWN0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5LmNwcAppbmRleCA3ZWVlNGE4NzQ2YjZiZDE4ODUyYTdhYjYyODc0YmJhZjU3YWJl
Mjg5Li4wY2M0YjQ3OWJmNzE3YjQ2MDA0M2JiY2YwNGNiNjYwM2MyMzA2M2Q5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuY3BwCkBAIC0zOCw5ICszOCw4
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1CbG9ja0RpcmVjdG9yeTo6QmxvY2tEaXJlY3Rvcnko
SGVhcCogaGVhcCwgc2l6ZV90IGNlbGxTaXplKQorQmxvY2tEaXJlY3Rvcnk6OkJsb2NrRGlyZWN0
b3J5KHNpemVfdCBjZWxsU2l6ZSkKICAgICA6IG1fY2VsbFNpemUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGNlbGxTaXplKSkKLSAgICAsIG1faGVhcChoZWFwKQogewogfQogCkBAIC03Niw3ICs3NSw3
IEBAIGJvb2wgQmxvY2tEaXJlY3Rvcnk6OmlzUGFnZWRPdXQoTW9ub3RvbmljVGltZSBkZWFkbGlu
ZSkKIAogTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2Nr
VG9TdGVhbCgpCiB7Ci0gICAgbV9lbXB0eUN1cnNvciA9IG1fZW1wdHkuZmluZEJpdChtX2VtcHR5
Q3Vyc29yLCB0cnVlKTsKKyAgICBtX2VtcHR5Q3Vyc29yID0gbV9iaXRzLmVtcHR5KCkuZmluZEJp
dChtX2VtcHR5Q3Vyc29yLCB0cnVlKTsKICAgICBpZiAobV9lbXB0eUN1cnNvciA+PSBtX2Jsb2Nr
cy5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX2Jsb2Nrc1tt
X2VtcHR5Q3Vyc29yXTsKQEAgLTg1LDcgKzg0LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxv
Y2tEaXJlY3Rvcnk6OmZpbmRFbXB0eUJsb2NrVG9TdGVhbCgpCiBNYXJrZWRCbG9jazo6SGFuZGxl
KiBCbG9ja0RpcmVjdG9yeTo6ZmluZEJsb2NrRm9yQWxsb2NhdGlvbihMb2NhbEFsbG9jYXRvciYg
YWxsb2NhdG9yKQogewogICAgIGZvciAoOzspIHsKLSAgICAgICAgYWxsb2NhdG9yLm1fYWxsb2Nh
dGlvbkN1cnNvciA9IChtX2NhbkFsbG9jYXRlQnV0Tm90RW1wdHkgfCBtX2VtcHR5KS5maW5kQml0
KGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IsIHRydWUpOworICAgICAgICBhbGxvY2F0b3Iu
bV9hbGxvY2F0aW9uQ3Vyc29yID0gKG1fYml0cy5jYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KCkgfCBt
X2JpdHMuZW1wdHkoKSkuZmluZEJpdChhbGxvY2F0b3IubV9hbGxvY2F0aW9uQ3Vyc29yLCB0cnVl
KTsKICAgICAgICAgaWYgKGFsbG9jYXRvci5tX2FsbG9jYXRpb25DdXJzb3IgPj0gbV9ibG9ja3Mu
c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAtOTYsMTEg
Kzk1LDExIEBAIE1hcmtlZEJsb2NrOjpIYW5kbGUqIEJsb2NrRGlyZWN0b3J5OjpmaW5kQmxvY2tG
b3JBbGxvY2F0aW9uKExvY2FsQWxsb2NhdG9yJiBhbGxvCiAgICAgfQogfQogCi1NYXJrZWRCbG9j
azo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jaygpCitNYXJrZWRCbG9j
azo6SGFuZGxlKiBCbG9ja0RpcmVjdG9yeTo6dHJ5QWxsb2NhdGVCbG9jayhIZWFwJiBoZWFwKQog
ewogICAgIFN1cGVyU2FtcGxlclNjb3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKICAgICAK
LSAgICBNYXJrZWRCbG9jazo6SGFuZGxlKiBoYW5kbGUgPSBNYXJrZWRCbG9jazo6dHJ5Q3JlYXRl
KCptX2hlYXAsIHN1YnNwYWNlKCktPmFsaWduZWRNZW1vcnlBbGxvY2F0b3IoKSk7CisgICAgTWFy
a2VkQmxvY2s6OkhhbmRsZSogaGFuZGxlID0gTWFya2VkQmxvY2s6OnRyeUNyZWF0ZShoZWFwLCBz
dWJzcGFjZSgpLT5hbGlnbmVkTWVtb3J5QWxsb2NhdG9yKCkpOwogICAgIGlmICghaGFuZGxlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKQEAgLTExOCwyMSArMTE3LDEyIEBAIHZvaWQg
QmxvY2tEaXJlY3Rvcnk6OmFkZEJsb2NrKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKQogICAg
ICAgICBzaXplX3Qgb2xkQ2FwYWNpdHkgPSBtX2Jsb2Nrcy5jYXBhY2l0eSgpOwogICAgICAgICBt
X2Jsb2Nrcy5hcHBlbmQoYmxvY2spOwogICAgICAgICBpZiAobV9ibG9ja3MuY2FwYWNpdHkoKSAh
PSBvbGRDYXBhY2l0eSkgewotICAgICAgICAgICAgZm9yRWFjaEJpdFZlY3RvcigKLSAgICAgICAg
ICAgICAgICBOb0xvY2tpbmdOZWNlc3NhcnksCi0gICAgICAgICAgICAgICAgWyZdIChGYXN0Qml0
VmVjdG9yJiB2ZWN0b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRCh2ZWN0
b3IsIHZlY3Rvci5udW1CaXRzKCkgPT0gb2xkQ2FwYWNpdHkpOwotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgCisgICAgICAgICAgICBBU1NFUlQobV9iaXRzLm51bUJpdHMoKSA9PSBv
bGRDYXBhY2l0eSk7CiAgICAgICAgICAgICBBU1NFUlQobV9ibG9ja3MuY2FwYWNpdHkoKSA+IG9s
ZENhcGFjaXR5KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIo
bV9iaXR2ZWN0b3JMb2NrKTsKICAgICAgICAgICAgIHN1YnNwYWNlKCktPmRpZFJlc2l6ZUJpdHMo
bV9ibG9ja3MuY2FwYWNpdHkoKSk7Ci0gICAgICAgICAgICBmb3JFYWNoQml0VmVjdG9yKAotICAg
ICAgICAgICAgICAgIGxvY2tlciwKLSAgICAgICAgICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3Im
IHZlY3RvcikgewotICAgICAgICAgICAgICAgICAgICB2ZWN0b3IucmVzaXplKG1fYmxvY2tzLmNh
cGFjaXR5KCkpOwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgbV9iaXRzLnJlc2l6
ZShtX2Jsb2Nrcy5jYXBhY2l0eSgpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IGluZGV4ID0gbV9mcmVlQmxvY2tJbmRpY2VzLnRha2VMYXN0KCk7CkBAIC0xNDIsOCArMTMyLDgg
QEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6YWRkQmxvY2soTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2spCiAgICAgCiAgICAgZm9yRWFjaEJpdFZlY3RvcigKICAgICAgICAgTm9Mb2NraW5nTmVjZXNz
YXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAg
QVNTRVJUX1VOVVNFRCh2ZWN0b3IsICF2ZWN0b3JbaW5kZXhdKTsKKyAgICAgICAgWyZdKGF1dG8g
dmVjdG9yUmVmKSB7CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHZlY3RvclJlZiwgIXZlY3Rv
clJlZltpbmRleF0pOwogICAgICAgICB9KTsKIAogICAgIC8vIFRoaXMgaXMgdGhlIHBvaW50IGF0
IHdoaWNoIHRoZSBibG9jayBsZWFybnMgb2YgaXRzIGNlbGxTaXplKCkgYW5kIGF0dHJpYnV0ZXMo
KS4KQEAgLTE2NSw4ICsxNTUsOCBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjpyZW1vdmVCbG9jayhN
YXJrZWRCbG9jazo6SGFuZGxlKiBibG9jaykKICAgICAKICAgICBmb3JFYWNoQml0VmVjdG9yKAog
ICAgICAgICBob2xkTG9jayhtX2JpdHZlY3RvckxvY2spLAotICAgICAgICBbJl0gKEZhc3RCaXRW
ZWN0b3ImIHZlY3RvcikgewotICAgICAgICAgICAgdmVjdG9yW2Jsb2NrLT5pbmRleCgpXSA9IGZh
bHNlOworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYpIHsKKyAgICAgICAgICAgIHZlY3RvclJl
ZltibG9jay0+aW5kZXgoKV0gPSBmYWxzZTsKICAgICAgICAgfSk7CiAgICAgCiAgICAgYmxvY2st
PmRpZFJlbW92ZUZyb21EaXJlY3RvcnkoKTsKQEAgLTE5Miw3ICsxODIsNyBAQCB2b2lkIEJsb2Nr
RGlyZWN0b3J5OjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiAgICAgbV91bnN3ZXB0Q3Vyc29yID0g
MDsKICAgICBtX2VtcHR5Q3Vyc29yID0gMDsKICAgICAKLSAgICBtX2VkZW4uY2xlYXJBbGwoKTsK
KyAgICBtX2JpdHMuZWRlbigpLmNsZWFyQWxsKCk7CiAKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9u
czo6dXNlSW1tb3J0YWxPYmplY3RzKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMg
d29yayBhZ2Fpbi4KQEAgLTIzNywyMCArMjI3LDIwIEBAIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmJl
Z2luTWFya2luZ0ZvckZ1bGxDb2xsZWN0aW9uKCkKICAgICAvLyBNYXJrIGJpdHMgYXJlIHN0aWNr
eSBhbmQgc28gaXMgb3VyIHN1bW1hcnkgb2YgbWFyayBiaXRzLiBXZSBvbmx5IGNsZWFyIHRoZXNl
IGR1cmluZyBmdWxsCiAgICAgLy8gY29sbGVjdGlvbnMsIHNvIGlmIHlvdSBzdXJ2aXZlZCB0aGUg
bGFzdCBjb2xsZWN0aW9uIHlvdSB3aWxsIHN1cnZpdmUgdGhlIG5leHQgb25lIHNvIGxvbmcKICAg
ICAvLyBhcyB0aGUgbmV4dCBvbmUgaXMgZWRlbi4KLSAgICBtX21hcmtpbmdOb3RFbXB0eS5jbGVh
ckFsbCgpOwotICAgIG1fbWFya2luZ1JldGlyZWQuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFy
a2luZ05vdEVtcHR5KCkuY2xlYXJBbGwoKTsKKyAgICBtX2JpdHMubWFya2luZ1JldGlyZWQoKS5j
bGVhckFsbCgpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIHsKLSAg
ICBtX2FsbG9jYXRlZC5jbGVhckFsbCgpOworICAgIG1fYml0cy5hbGxvY2F0ZWQoKS5jbGVhckFs
bCgpOwogICAgIAogICAgIC8vIEl0J3Mgc3VycHJpc2luZyBhbmQgZnJ1c3RyYXRpbmcgdG8gY29t
cHJlaGVuZCwgYnV0IHRoZSBlbmQtb2YtbWFya2luZyBmbGlwIGRvZXMgbm90IG5lZWQgdG8KICAg
ICAvLyBrbm93IHdoYXQga2luZCBvZiBjb2xsZWN0aW9uIGl0IGlzLiBUaGF0IGtub3dsZWRnZSBp
cyBhbHJlYWR5IGVuY29kZWQgaW4gdGhlIG1fbWFya2luZ1hZWgogICAgIC8vIHZlY3RvcnMuCiAg
ICAgCi0gICAgbV9lbXB0eSA9IG1fbGl2ZSAmIH5tX21hcmtpbmdOb3RFbXB0eTsKLSAgICBtX2Nh
bkFsbG9jYXRlQnV0Tm90RW1wdHkgPSBtX2xpdmUgJiBtX21hcmtpbmdOb3RFbXB0eSAmIH5tX21h
cmtpbmdSZXRpcmVkOworICAgIG1fYml0cy5lbXB0eSgpID0gbV9iaXRzLmxpdmUoKSAmIH5tX2Jp
dHMubWFya2luZ05vdEVtcHR5KCk7CisgICAgbV9iaXRzLmNhbkFsbG9jYXRlQnV0Tm90RW1wdHko
KSA9IG1fYml0cy5saXZlKCkgJiBtX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiB+bV9iaXRzLm1h
cmtpbmdSZXRpcmVkKCk7CiAKICAgICBpZiAobmVlZHNEZXN0cnVjdGlvbigpKSB7CiAgICAgICAg
IC8vIFRoZXJlIGFyZSBzb21lIGJsb2NrcyB0aGF0IHdlIGRpZG4ndCBhbGxvY2F0ZSBvdXQgb2Yg
aW4gdGhlIGxhc3QgY3ljbGUsIGJ1dCB3ZSBzd2VwdCB0aGVtLiBUaGlzCkBAIC0yNTgsNyArMjQ4
LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6ZW5kTWFya2luZygpCiAgICAgICAgIC8vIGRlc3Ry
dWN0b3JzIGFnYWluLiBUaGF0J3MgZmluZSBiZWNhdXNlIG9mIHphcHBpbmcuIFRoZSBvbmx5IHRp
bWUgd2hlbiB3ZSBjYW5ub3QgZm9yZ2V0IGlzIHdoZW4KICAgICAgICAgLy8gd2UganVzdCBhbGxv
Y2F0ZSBhIGJsb2NrIG9yIHdoZW4gd2UgbW92ZSBhIGJsb2NrIGZyb20gb25lIHNpemUgY2xhc3Mg
dG8gYW5vdGhlci4gVGhhdCBkb2Vzbid0CiAgICAgICAgIC8vIGhhcHBlbiBoZXJlLgotICAgICAg
ICBtX2Rlc3RydWN0aWJsZSA9IG1fbGl2ZTsKKyAgICAgICAgbV9iaXRzLmRlc3RydWN0aWJsZSgp
ID0gbV9iaXRzLmxpdmUoKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGZhbHNlKSB7CkBAIC0yNjks
MTcgKzI1OSwxNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5OjplbmRNYXJraW5nKCkKIAogdm9pZCBC
bG9ja0RpcmVjdG9yeTo6c25hcHNob3RVbnN3ZXB0Rm9yRWRlbkNvbGxlY3Rpb24oKQogewotICAg
IG1fdW5zd2VwdCB8PSBtX2VkZW47CisgICAgbV9iaXRzLnVuc3dlcHQoKSB8PSBtX2JpdHMuZWRl
bigpOwogfQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpzbmFwc2hvdFVuc3dlcHRGb3JGdWxsQ29s
bGVjdGlvbigpCiB7Ci0gICAgbV91bnN3ZXB0ID0gbV9saXZlOworICAgIG1fYml0cy51bnN3ZXB0
KCkgPSBtX2JpdHMubGl2ZSgpOwogfQogCiBNYXJrZWRCbG9jazo6SGFuZGxlKiBCbG9ja0RpcmVj
dG9yeTo6ZmluZEJsb2NrVG9Td2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0Q3Vyc29yID0gbV91bnN3
ZXB0LmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKKyAgICBtX3Vuc3dlcHRDdXJzb3Ig
PSBtX2JpdHMudW5zd2VwdCgpLmZpbmRCaXQobV91bnN3ZXB0Q3Vyc29yLCB0cnVlKTsKICAgICBp
ZiAobV91bnN3ZXB0Q3Vyc29yID49IG1fYmxvY2tzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgcmV0dXJuIG1fYmxvY2tzW21fdW5zd2VwdEN1cnNvcl07CkBAIC0yODcsNyAr
Mjc3LDcgQEAgTWFya2VkQmxvY2s6OkhhbmRsZSogQmxvY2tEaXJlY3Rvcnk6OmZpbmRCbG9ja1Rv
U3dlZXAoKQogCiB2b2lkIEJsb2NrRGlyZWN0b3J5Ojpzd2VlcCgpCiB7Ci0gICAgbV91bnN3ZXB0
LmZvckVhY2hTZXRCaXQoCisgICAgbV9iaXRzLnVuc3dlcHQoKS5mb3JFYWNoU2V0Qml0KAogICAg
ICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CiAgICAgICAgICAgICBibG9jay0+c3dlZXAobnVs
bHB0cik7CkBAIC0yOTYsNyArMjg2LDcgQEAgdm9pZCBCbG9ja0RpcmVjdG9yeTo6c3dlZXAoKQog
CiB2b2lkIEJsb2NrRGlyZWN0b3J5OjpzaHJpbmsoKQogewotICAgIChtX2VtcHR5ICYgfm1fZGVz
dHJ1Y3RpYmxlKS5mb3JFYWNoU2V0Qml0KAorICAgIChtX2JpdHMuZW1wdHkoKSAmIH5tX2JpdHMu
ZGVzdHJ1Y3RpYmxlKCkpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4
KSB7CiAgICAgICAgICAgICBtYXJrZWRTcGFjZSgpLmZyZWVCbG9jayhtX2Jsb2Nrc1tpbmRleF0p
OwogICAgICAgICB9KTsKQEAgLTMwNyw3ICsyOTcsNyBAQCB2b2lkIEJsb2NrRGlyZWN0b3J5Ojph
c3NlcnROb1Vuc3dlcHQoKQogICAgIGlmIChBU1NFUlRfRElTQUJMRUQpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBpZiAobV91bnN3ZXB0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9iaXRzLnVu
c3dlcHQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBkYXRhTG9nKCJB
c3NlcnRpb24gZmFpbGVkOiB1bnN3ZXB0IG5vdCBlbXB0eSBpbiAiLCAqdGhpcywgIi5cbiIpOwpA
QCAtMzI5LDcgKzMxOSw3IEBAIFJlZlB0cjxTaGFyZWRUYXNrPE1hcmtlZEJsb2NrOjpIYW5kbGUq
KCk+PiBCbG9ja0RpcmVjdG9yeTo6cGFyYWxsZWxOb3RFbXB0eUJsb2NrCiAgICAgICAgICAgICBp
ZiAobV9kb25lKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOwotICAgICAgICAgICAgbV9pbmRleCA9IG1f
ZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5LmZpbmRCaXQobV9pbmRleCwgdHJ1ZSk7CisgICAg
ICAgICAgICBtX2luZGV4ID0gbV9kaXJlY3RvcnkubV9iaXRzLm1hcmtpbmdOb3RFbXB0eSgpLmZp
bmRCaXQobV9pbmRleCwgdHJ1ZSk7CiAgICAgICAgICAgICBpZiAobV9pbmRleCA+PSBtX2RpcmVj
dG9yeS5tX2Jsb2Nrcy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBtX2RvbmUgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzU3LDE4ICszNDcsMTkgQEAgdm9p
ZCBCbG9ja0RpcmVjdG9yeTo6ZHVtcEJpdHMoUHJpbnRTdHJlYW0mIG91dCkKICAgICB1bnNpZ25l
ZCBtYXhOYW1lTGVuZ3RoID0gMDsKICAgICBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoCiAgICAg
ICAgIE5vTG9ja2luZ05lY2Vzc2FyeSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiwgY29u
c3QgY2hhciogbmFtZSkgeworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIq
IG5hbWUpIHsKKyAgICAgICAgICAgIFVOVVNFRF9QQVJBTSh2ZWN0b3JSZWYpOwogICAgICAgICAg
ICAgdW5zaWduZWQgbGVuZ3RoID0gc3RybGVuKG5hbWUpOwogICAgICAgICAgICAgbWF4TmFtZUxl
bmd0aCA9IHN0ZDo6bWF4KG1heE5hbWVMZW5ndGgsIGxlbmd0aCk7CiAgICAgICAgIH0pOwogICAg
IAogICAgIGZvckVhY2hCaXRWZWN0b3JXaXRoTmFtZSgKICAgICAgICAgTm9Mb2NraW5nTmVjZXNz
YXJ5LAotICAgICAgICBbJl0gKEZhc3RCaXRWZWN0b3ImIHZlY3RvciwgY29uc3QgY2hhciogbmFt
ZSkgeworICAgICAgICBbJl0oYXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKICAg
ICAgICAgICAgIG91dC5wcmludCgiICAgICIsIG5hbWUsICI6ICIpOwogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbWF4TmFtZUxlbmd0aCAtIHN0cmxlbihuYW1lKTsgaS0tOykKICAgICAg
ICAgICAgICAgICBvdXQucHJpbnQoIiAiKTsKLSAgICAgICAgICAgIG91dC5wcmludCh2ZWN0b3Is
ICJcbiIpOworICAgICAgICAgICAgb3V0LnByaW50KHZlY3RvclJlZiwgIlxuIik7CiAgICAgICAg
IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0Rp
cmVjdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tEaXJlY3RvcnkuaApp
bmRleCBhN2JjYWE2YjllYmQ0YmFkNjNkN2U3ODExMDkxOGUzZTQzNjM4N2QxLi5jYjcyY2IxZGQ4
ZTRlYzEzNjYxNDhkNzRmOTgwMjY1Nzk0ZWVkNDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9CbG9ja0RpcmVjdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrRGlyZWN0b3J5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmgiCisjaW5jbHVkZSAiQmxvY2tEaXJl
Y3RvcnlCaXRzLmgiCiAjaW5jbHVkZSAiQ2VsbEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJGcmVl
TGlzdC5oIgogI2luY2x1ZGUgIkxvY2FsQWxsb2NhdG9yLmgiCkBAIC00NCwzMyArNDUsNiBAQCBj
bGFzcyBJc29DZWxsU2V0OwogY2xhc3MgTWFya2VkU3BhY2U7CiBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKLSNkZWZpbmUgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChtYWNybykg
XAotICAgIG1hY3JvKGxpdmUsIExpdmUpIC8qIFRoZSBzZXQgb2YgYmxvY2sgaW5kaWNlcyB0aGF0
IGhhdmUgYWN0dWFsIGJsb2Nrcy4gKi9cCi0gICAgbWFjcm8oZW1wdHksIEVtcHR5KSAvKiBUaGUg
c2V0IG9mIGFsbCBibG9ja3MgdGhhdCBoYXZlIG5vIGxpdmUgb2JqZWN0cy4gKi8gXAotICAgIG1h
Y3JvKGFsbG9jYXRlZCwgQWxsb2NhdGVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBh
cmUgZnVsbCBvZiBsaXZlIG9iamVjdHMuICovXAotICAgIG1hY3JvKGNhbkFsbG9jYXRlQnV0Tm90
RW1wdHksIENhbkFsbG9jYXRlQnV0Tm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyBh
cmUgbmVpdGhlciBlbXB0eSBub3IgcmV0aXJlZCAoaS5lLiBhcmUgbW9yZSB0aGFuIG1pbk1hcmtl
ZEJsb2NrVXRpbGl6YXRpb24gZnVsbCkuICovIFwKLSAgICBtYWNybyhkZXN0cnVjdGlibGUsIERl
c3RydWN0aWJsZSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgbWF5IGhhdmUgZGVzdHJ1
Y3RvcnMgdG8gcnVuLiAqL1wKLSAgICBtYWNybyhlZGVuLCBFZGVuKSAvKiBUaGUgc2V0IG9mIGFs
bCBibG9ja3MgdGhhdCBoYXZlIG5ldyBvYmplY3RzIHNpbmNlIHRoZSBsYXN0IEdDLiAqL1wKLSAg
ICBtYWNybyh1bnN3ZXB0LCBVbnN3ZXB0KSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBj
b3VsZCBiZSBzd2VwdCBieSB0aGUgaW5jcmVtZW50YWwgc3dlZXBlci4gKi9cCi0gICAgXAotICAg
IC8qIFRoZXNlIGFyZSBjb21wdXRlZCBkdXJpbmcgbWFya2luZy4gKi9cCi0gICAgbWFjcm8obWFy
a2luZ05vdEVtcHR5LCBNYXJraW5nTm90RW1wdHkpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0
aGF0IGFyZSBub3QgZW1wdHkuICovIFwKLSAgICBtYWNybyhtYXJraW5nUmV0aXJlZCwgTWFya2lu
Z1JldGlyZWQpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0IGFyZSByZXRpcmVkLiAqLwot
Ci0vLyBGSVhNRTogV2UgZGVmaW5lZCBjYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5IGFuZCBlbXB0eSB0
byBiZSBleGNsdXNpdmU6Ci0vLwotLy8gICAgIGNhbkFsbG9jYXRlQnV0Tm90RW1wdHkgJiBlbXB0
eSA9PSAwCi0vLwotLy8gSW5zdGVhZCBvZiBjYWxsaW5nIGl0IGNhbkFsbG9jYXRlIGFuZCBtYWtp
bmcgaXQgaW5jbHVzaXZlOgotLy8KLS8vICAgICBjYW5BbGxvY2F0ZSAmIGVtcHR5ID09IGVtcHR5
Ci0vLwotLy8gVGhlIGxhdHRlciBpcyBwcm9iYWJseSBiZXR0ZXIuIEknbGwgbGVhdmUgaXQgdG8g
YSBmdXR1cmUgYnVnIHRvIGZpeCB0aGF0LCBzaW5jZSBicmVhdGhpbmcgb24KLS8vIHRoaXMgY29k
ZSBsZWFkcyB0byByZWdyZXNzaW9ucyBmb3IgZGF5cywgYW5kIGl0J3Mgbm90IGNsZWFyIHRoYXQg
bWFraW5nIHRoaXMgY2hhbmdlIHdvdWxkCi0vLyBpbXByb3ZlIHBlcmYgc2luY2UgaXQgd291bGQg
bm90IGNoYW5nZSB0aGUgY29sbGVjdG9yJ3MgYmVoYXZpb3IsIGFuZCBlaXRoZXIgd2F5IHRoZSBk
aXJlY3RvcnkKLS8vIGhhcyB0byBsb29rIGF0IGJvdGggYml0dmVjdG9ycy4KLS8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIxMjEKLQogY2xhc3MgQmxvY2tEaXJl
Y3RvcnkgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJsb2NrRGlyZWN0b3J5KTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTc4LDcgKzUyLDcgQEAgY2xhc3MgQmxvY2tEaXJl
Y3RvcnkgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIHB1Ymxp
YzoKLSAgICBCbG9ja0RpcmVjdG9yeShIZWFwKiwgc2l6ZV90IGNlbGxTaXplKTsKKyAgICBCbG9j
a0RpcmVjdG9yeShzaXplX3QgY2VsbFNpemUpOwogICAgIH5CbG9ja0RpcmVjdG9yeSgpOwogICAg
IHZvaWQgc2V0U3Vic3BhY2UoU3Vic3BhY2UqKTsKICAgICB2b2lkIGxhc3RDaGFuY2VUb0ZpbmFs
aXplKCk7CkBAIC05OCw3ICs3Miw2IEBAIGNsYXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZXMuZGVzdHJ1Y3Rp
b24gPT0gTmVlZHNEZXN0cnVjdGlvbjsgfQogICAgIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlcy5kZXN0cnVjdGlvbjsgfQogICAgIEhlYXBD
ZWxsOjpLaW5kIGNlbGxLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmNlbGxLaW5k
OyB9Ci0gICAgSGVhcCogaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogCiAgICAgYm9vbCBpc0Zy
ZWVMaXN0ZWRDZWxsKGNvbnN0IHZvaWQqIHRhcmdldCk7CiAKQEAgLTExNSw5ICs4OCw5IEBAIGNs
YXNzIEJsb2NrRGlyZWN0b3J5IHsKICAgICBMb2NrJiBiaXR2ZWN0b3JMb2NrKCkgeyByZXR1cm4g
bV9iaXR2ZWN0b3JMb2NrOyB9CiAKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9BQ0NFU1NP
UlMobG93ZXJCaXROYW1lLCBjYXBpdGFsQml0TmFtZSkgICAgIFwKLSAgICBib29sIGlzICMjIGNh
cGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdOyB9IFwKKyAgICBib29sIGlzICMjIGNh
cGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiwgc2l6ZV90IGluZGV4KSBjb25zdCB7
IHJldHVybiBtX2JpdHMuaXMgIyMgY2FwaXRhbEJpdE5hbWUoaW5kZXgpOyB9IFwKICAgICBib29s
IGlzICMjIGNhcGl0YWxCaXROYW1lKGNvbnN0IEFic3RyYWN0TG9ja2VyJiBsb2NrZXIsIE1hcmtl
ZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSBjb25zdCB7IHJldHVybiBpcyAjIyBjYXBpdGFsQml0TmFt
ZShsb2NrZXIsIGJsb2NrLT5pbmRleCgpKTsgfSBcCi0gICAgdm9pZCBzZXRJcyAjIyBjYXBpdGFs
Qml0TmFtZShjb25zdCBBYnN0cmFjdExvY2tlciYsIHNpemVfdCBpbmRleCwgYm9vbCB2YWx1ZSkg
eyBtXyAjIyBsb3dlckJpdE5hbWVbaW5kZXhdID0gdmFsdWU7IH0gXAorICAgIHZvaWQgc2V0SXMg
IyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2NrZXImLCBzaXplX3QgaW5kZXgsIGJv
b2wgdmFsdWUpIHsgbV9iaXRzLnNldElzICMjIGNhcGl0YWxCaXROYW1lKGluZGV4LCB2YWx1ZSk7
IH0gXAogICAgIHZvaWQgc2V0SXMgIyMgY2FwaXRhbEJpdE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImIGxvY2tlciwgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2ssIGJvb2wgdmFsdWUpIHsgc2V0
SXMgIyMgY2FwaXRhbEJpdE5hbWUobG9ja2VyLCBibG9jay0+aW5kZXgoKSwgdmFsdWUpOyB9CiAg
ICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VT
U09SUykKICN1bmRlZiBCTE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUwpAQCAtMTI2LDcgKzk5
LDcgQEAgY2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIHZvaWQgZm9yRWFjaEJpdFZlY3Rvcihj
b25zdCBBYnN0cmFjdExvY2tlciYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiAgICAgewogI2RlZmluZSBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKGxvd2VyQml0TmFtZSwgY2FwaXRhbEJpdE5hbWUp
IFwKLSAgICAgICAgZnVuYyhtXyAjIyBsb3dlckJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSk7CiAgICAgICAgIEZPUl9FQUNIX0JMT0NLX0RJUkVDVE9SWV9CSVQo
QkxPQ0tfRElSRUNUT1JZX0JJVF9DQUxMQkFDSyk7CiAjdW5kZWYgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSwogICAgIH0KQEAgLTEzNSw3ICsxMDgsNyBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgdm9pZCBmb3JFYWNoQml0VmVjdG9yV2l0aE5hbWUoY29uc3QgQWJzdHJhY3RMb2Nr
ZXImLCBjb25zdCBGdW5jJiBmdW5jKQogICAgIHsKICNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJ
VF9DQUxMQkFDSyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgICAgIGZ1bmMo
bV8gIyMgbG93ZXJCaXROYW1lLCAjY2FwaXRhbEJpdE5hbWUpOworICAgICAgICBmdW5jKG1fYml0
cy5sb3dlckJpdE5hbWUoKSwgI2NhcGl0YWxCaXROYW1lKTsKICAgICAgICAgRk9SX0VBQ0hfQkxP
Q0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLKTsKICN1bmRlZiBC
TE9DS19ESVJFQ1RPUllfQklUX0NBTExCQUNLCiAgICAgfQpAQCAtMTY2LDE3ICsxMzksMTQgQEAg
Y2xhc3MgQmxvY2tEaXJlY3RvcnkgewogICAgIAogICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGZp
bmRCbG9ja0ZvckFsbG9jYXRpb24oTG9jYWxBbGxvY2F0b3ImKTsKICAgICAKLSAgICBNYXJrZWRC
bG9jazo6SGFuZGxlKiB0cnlBbGxvY2F0ZUJsb2NrKCk7CisgICAgTWFya2VkQmxvY2s6OkhhbmRs
ZSogdHJ5QWxsb2NhdGVCbG9jayhIZWFwJik7CiAgICAgCiAgICAgVmVjdG9yPE1hcmtlZEJsb2Nr
OjpIYW5kbGUqPiBtX2Jsb2NrczsKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZnJlZUJsb2NrSW5k
aWNlczsKIAogICAgIC8vIE11dGF0b3IgdXNlcyB0aGlzIHRvIGd1YXJkIHJlc2l6aW5nIHRoZSBi
aXR2ZWN0b3JzLiBUaG9zZSB0aGluZ3MgaW4gdGhlIEdDIHRoYXQgbWF5IHJ1bgogICAgIC8vIGNv
bmN1cnJlbnRseSB0byB0aGUgbXV0YXRvciBtdXN0IGxvY2sgdGhpcyB3aGVuIGFjY2Vzc2luZyB0
aGUgYml0dmVjdG9ycy4KLSNkZWZpbmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9ERUNMQVJBVElPTihs
b3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSBcCi0gICAgRmFzdEJpdFZlY3RvciBtXyAjIyBs
b3dlckJpdE5hbWU7Ci0gICAgRk9SX0VBQ0hfQkxPQ0tfRElSRUNUT1JZX0JJVChCTE9DS19ESVJF
Q1RPUllfQklUX0RFQ0xBUkFUSU9OKQotI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfREVDTEFS
QVRJT04KKyAgICBCbG9ja0RpcmVjdG9yeUJpdHMgbV9iaXRzOwogICAgIExvY2sgbV9iaXR2ZWN0
b3JMb2NrOwogICAgIExvY2sgbV9sb2NhbEFsbG9jYXRvcnNMb2NrOwogICAgIENlbGxBdHRyaWJ1
dGVzIG1fYXR0cmlidXRlczsKQEAgLTE5MCw3ICsxNjAsNiBAQCBjbGFzcyBCbG9ja0RpcmVjdG9y
eSB7CiAgICAgCiAgICAgLy8gRklYTUU6IEFsbCBvZiB0aGVzZSBzaG91bGQgcHJvYmFibHkgYmUg
cmVmZXJlbmNlcy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY2OTg4Ci0gICAgSGVhcCogbV9oZWFwIHsgbnVsbHB0ciB9OwogICAgIFN1YnNwYWNlKiBt
X3N1YnNwYWNlIHsgbnVsbHB0ciB9OwogICAgIEJsb2NrRGlyZWN0b3J5KiBtX25leHREaXJlY3Rv
cnkgeyBudWxscHRyIH07CiAgICAgQmxvY2tEaXJlY3RvcnkqIG1fbmV4dERpcmVjdG9yeUluU3Vi
c3BhY2UgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeUJpdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5Qml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxY2E3MjBjYzNhNTRmYjVjZGQ2YjAyNzJiMzQz
MzM1M2M4ZjZhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9CbG9ja0RpcmVjdG9yeUJpdHMuaApAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
YXJyYXk+CisjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIEZPUl9FQUNIX0JMT0NLX0RJUkVD
VE9SWV9CSVQobWFjcm8pIFwKKyAgICBtYWNybyhsaXZlLCBMaXZlKSAvKiBUaGUgc2V0IG9mIGJs
b2NrIGluZGljZXMgdGhhdCBoYXZlIGFjdHVhbCBibG9ja3MuICovXAorICAgIG1hY3JvKGVtcHR5
LCBFbXB0eSkgLyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBubyBsaXZlIG9iamVj
dHMuICovIFwKKyAgICBtYWNybyhhbGxvY2F0ZWQsIEFsbG9jYXRlZCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgYXJlIGZ1bGwgb2YgbGl2ZSBvYmplY3RzLiAqL1wKKyAgICBtYWNybyhj
YW5BbGxvY2F0ZUJ1dE5vdEVtcHR5LCBDYW5BbGxvY2F0ZUJ1dE5vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgYXJlIG5laXRoZXIgZW1wdHkgbm9yIHJldGlyZWQgKGkuZS4gYXJlIG1v
cmUgdGhhbiBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uIGZ1bGwpLiAqLyBcCisgICAgbWFjcm8o
ZGVzdHJ1Y3RpYmxlLCBEZXN0cnVjdGlibGUpIC8qIFRoZSBzZXQgb2YgYWxsIGJsb2NrcyB0aGF0
IG1heSBoYXZlIGRlc3RydWN0b3JzIHRvIHJ1bi4gKi9cCisgICAgbWFjcm8oZWRlbiwgRWRlbikg
LyogVGhlIHNldCBvZiBhbGwgYmxvY2tzIHRoYXQgaGF2ZSBuZXcgb2JqZWN0cyBzaW5jZSB0aGUg
bGFzdCBHQy4gKi9cCisgICAgbWFjcm8odW5zd2VwdCwgVW5zd2VwdCkgLyogVGhlIHNldCBvZiBh
bGwgYmxvY2tzIHRoYXQgY291bGQgYmUgc3dlcHQgYnkgdGhlIGluY3JlbWVudGFsIHN3ZWVwZXIu
ICovXAorICAgIFwKKyAgICAvKiBUaGVzZSBhcmUgY29tcHV0ZWQgZHVyaW5nIG1hcmtpbmcuICov
XAorICAgIG1hY3JvKG1hcmtpbmdOb3RFbXB0eSwgTWFya2luZ05vdEVtcHR5KSAvKiBUaGUgc2V0
IG9mIGFsbCBibG9ja3MgdGhhdCBhcmUgbm90IGVtcHR5LiAqLyBcCisgICAgbWFjcm8obWFya2lu
Z1JldGlyZWQsIE1hcmtpbmdSZXRpcmVkKSAvKiBUaGUgc2V0IG9mIGFsbCBibG9ja3MgdGhhdCBh
cmUgcmV0aXJlZC4gKi8KKworLy8gRklYTUU6IFdlIGRlZmluZWQgY2FuQWxsb2NhdGVCdXROb3RF
bXB0eSBhbmQgZW1wdHkgdG8gYmUgZXhjbHVzaXZlOgorLy8KKy8vICAgICBjYW5BbGxvY2F0ZUJ1
dE5vdEVtcHR5ICYgZW1wdHkgPT0gMAorLy8KKy8vIEluc3RlYWQgb2YgY2FsbGluZyBpdCBjYW5B
bGxvY2F0ZSBhbmQgbWFraW5nIGl0IGluY2x1c2l2ZToKKy8vCisvLyAgICAgY2FuQWxsb2NhdGUg
JiBlbXB0eSA9PSBlbXB0eQorLy8KKy8vIFRoZSBsYXR0ZXIgaXMgcHJvYmFibHkgYmV0dGVyLiBJ
J2xsIGxlYXZlIGl0IHRvIGEgZnV0dXJlIGJ1ZyB0byBmaXggdGhhdCwgc2luY2UgYnJlYXRoaW5n
IG9uCisvLyB0aGlzIGNvZGUgbGVhZHMgdG8gcmVncmVzc2lvbnMgZm9yIGRheXMsIGFuZCBpdCdz
IG5vdCBjbGVhciB0aGF0IG1ha2luZyB0aGlzIGNoYW5nZSB3b3VsZAorLy8gaW1wcm92ZSBwZXJm
IHNpbmNlIGl0IHdvdWxkIG5vdCBjaGFuZ2UgdGhlIGNvbGxlY3RvcidzIGJlaGF2aW9yLCBhbmQg
ZWl0aGVyIHdheSB0aGUgZGlyZWN0b3J5CisvLyBoYXMgdG8gbG9vayBhdCBib3RoIGJpdHZlY3Rv
cnMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyMTIxCisK
K2NsYXNzIEJsb2NrRGlyZWN0b3J5Qml0cyB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBiaXRzUGVyU2VnbWVudCA9
IDMyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2VnbWVudFNoaWZ0ID0gNTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluZGV4TWFzayA9ICgxVSA8PCBzZWdtZW50U2hp
ZnQpIC0gMTsKKyAgICBzdGF0aWNfYXNzZXJ0KCgxIDw8IHNlZ21lbnRTaGlmdCkgPT0gYml0c1Bl
clNlZ21lbnQpOworCisjZGVmaW5lIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVChsb3dl
ckJpdE5hbWUsIGNhcGl0YWxCaXROYW1lKSArIDEKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kcyA9IDAgRk9SX0VBQ0hfQkxPQ0tfRElS
RUNUT1JZX0JJVChCTE9DS19ESVJFQ1RPUllfQklUX0tJTkRfQ09VTlQpOworI3VuZGVmIEJMT0NL
X0RJUkVDVE9SWV9CSVRfS0lORF9DT1VOVAorCisgICAgZW51bSBjbGFzcyBLaW5kIHsKKyNkZWZp
bmUgQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9OKGxvd2VyQml0TmFtZSwgY2Fw
aXRhbEJpdE5hbWUpIFwKKyAgICAgICAgY2FwaXRhbEJpdE5hbWUsCisgICAgICAgIEZPUl9FQUNI
X0JMT0NLX0RJUkVDVE9SWV9CSVQoQkxPQ0tfRElSRUNUT1JZX0JJVF9LSU5EX0RFQ0xBUkFUSU9O
KQorI3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfS0lORF9ERUNMQVJBVElPTgorICAgIH07CisK
KyAgICBjbGFzcyBTZWdtZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFNlZ21lbnQoKSA9IGRl
ZmF1bHQ7CisgICAgICAgIHN0ZDo6YXJyYXk8dWludDMyX3QsIG51bWJlck9mQmxvY2tEaXJlY3Rv
cnlCaXRLaW5kcz4gbV9kYXRhIHsgfTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8S2luZCBraW5k
PgorICAgIGNsYXNzIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcgeworICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHVzaW5nIFZpZXdU
eXBlID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JXb3JkVmlldzsKKworICAgICAgICBCbG9ja0Rp
cmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3KCkgPSBkZWZhdWx0OworCisgICAgICAgIEJsb2NrRGly
ZWN0b3J5Qml0VmVjdG9yV29yZFZpZXcoY29uc3QgU2VnbWVudCogc2VnbWVudHMsIHNpemVfdCBu
dW1CaXRzKQorICAgICAgICAgICAgOiBtX3NlZ21lbnRzKHNlZ21lbnRzKQorICAgICAgICAgICAg
LCBtX251bUJpdHMobnVtQml0cykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2l6
ZV90IG51bUJpdHMoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9udW1C
aXRzOworICAgICAgICB9CisKKyAgICAgICAgdWludDMyX3Qgd29yZChzaXplX3QgaW5kZXgpIGNv
bnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA8IFdURjo6ZmFzdEJpdFZl
Y3RvckFycmF5TGVuZ3RoKG51bUJpdHMoKSkpOworICAgICAgICAgICAgcmV0dXJuIG1fc2VnbWVu
dHNbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCldOworICAgICAgICB9
CisKKyAgICAgICAgdWludDMyX3QmIHdvcmQoc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoaW5kZXggPCBXVEY6OmZhc3RCaXRWZWN0b3JBcnJheUxlbmd0aChudW1C
aXRzKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9jYXN0PFNlZ21lbnQqPihtX3NlZ21l
bnRzKVtpbmRleF0ubV9kYXRhW3N0YXRpY19jYXN0PHVuc2lnbmVkPihraW5kKV07CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IFdURjo6ZmFzdEJpdFZlY3RvckFycmF5TGVuZ3Ro
KG51bUJpdHMoKSk7ICsraW5kZXgpCisgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxTZWdtZW50
Kj4obV9zZWdtZW50cylbaW5kZXhdLm1fZGF0YVtzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2luZCld
ID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZp
ZXcgdmlldygpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBjb25zdCBTZWdtZW50KiBtX3NlZ21lbnRzIHsgbnVsbHB0ciB9OworICAgICAgICBzaXplX3Qg
bV9udW1CaXRzIHsgMCB9OworICAgIH07CisKKyAgICB0ZW1wbGF0ZTxLaW5kIGtpbmQ+CisgICAg
dXNpbmcgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3ID0gV1RGOjpGYXN0Qml0VmVjdG9ySW1w
bDxCbG9ja0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+PjsKKworICAgIHRlbXBsYXRl
PEtpbmQga2luZD4KKyAgICBjbGFzcyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZiBmaW5hbCA6
IHB1YmxpYyBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclZpZXc8a2luZD4geworICAgIHB1YmxpYzoK
KyAgICAgICAgdXNpbmcgQmFzZSA9IEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxraW5kPjsK
KworICAgICAgICBleHBsaWNpdCBCbG9ja0RpcmVjdG9yeUJpdFZlY3RvclJlZihCbG9ja0RpcmVj
dG9yeUJpdFZlY3RvcldvcmRWaWV3PGtpbmQ+IHZpZXcpCisgICAgICAgICAgICA6IEJhc2Uodmll
dykKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3Ro
ZXJXb3Jkcz4KKyAgICAgICAgQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWYmIG9wZXJhdG9yPShj
b25zdCBXVEY6OkZhc3RCaXRWZWN0b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKEJhc2U6Om51bUJpdHMoKSA9PSBvdGhlci5udW1CaXRzKCkp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gQmFzZTo6YXJyYXlMZW5ndGgoKTsgaS0t
OykKKyAgICAgICAgICAgICAgICBCYXNlOjp1bnNhZmVXb3JkcygpLndvcmQoaSkgPSBvdGhlci51
bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
IH0KKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcldvcmRzPgorICAgICAgICBCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvclJlZiYgb3BlcmF0b3J8PShjb25zdCBXVEY6OkZhc3RCaXRWZWN0
b3JJbXBsPE90aGVyV29yZHM+JiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KEJhc2U6Om51bUJpdHMoKSA9PSBvdGhlci5udW1CaXRzKCkpOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PGtpbmQ+OjphcnJheUxlbmd0
aCgpOyBpLS07KQorICAgICAgICAgICAgICAgIEJhc2U6OnVuc2FmZVdvcmRzKCkud29yZChpKSB8
PSBvdGhlci51bnNhZmVXb3JkcygpLndvcmQoaSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7
CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNsZWFyQWxsKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgQmFzZTo6dW5zYWZlV29yZHMoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAg
ICAgV1RGOjpGYXN0Qml0UmVmZXJlbmNlIGF0KHNpemVfdCBpbmRleCkKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKGluZGV4IDwgQmFzZTo6bnVtQml0cygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6OkZhc3RCaXRSZWZlcmVuY2UoJkJhc2U6OnVuc2FmZVdvcmRzKCkud29yZChpbmRl
eCA+PiA1KSwgMSA8PCAoaW5kZXggJiAzMSkpOworICAgICAgICB9CisKKyAgICAgICAgV1RGOjpG
YXN0Qml0UmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gYXQoaW5kZXgpOworICAgICAgICB9CisgICAgfTsKKworI2RlZmluZSBC
TE9DS19ESVJFQ1RPUllfQklUX0FDQ0VTU09SUyhsb3dlckJpdE5hbWUsIGNhcGl0YWxCaXROYW1l
KSAgICAgXAorICAgIGJvb2wgaXMgIyMgY2FwaXRhbEJpdE5hbWUoc2l6ZV90IGluZGV4KSBjb25z
dCBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBsb3dlckJpdE5hbWUoKVtpbmRleF07IFwKKyAg
ICB9IFwKKyAgICB2b2lkIHNldElzICMjIGNhcGl0YWxCaXROYW1lKHNpemVfdCBpbmRleCwgYm9v
bCB2YWx1ZSkgXAorICAgIHsgXAorICAgICAgICBsb3dlckJpdE5hbWUoKVtpbmRleF0gPSB2YWx1
ZTsgXAorICAgIH0gXAorICAgIEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yVmlldzxLaW5kOjpjYXBp
dGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgY29uc3QgXAorICAgIHsgXAorICAgICAgICByZXR1
cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihCbG9j
a0RpcmVjdG9yeUJpdFZlY3RvcldvcmRWaWV3PEtpbmQ6OmNhcGl0YWxCaXROYW1lPihtX3NlZ21l
bnRzLmRhdGEoKSwgbV9udW1CaXRzKSk7IFwKKyAgICB9IFwKKyAgICBCbG9ja0RpcmVjdG9yeUJp
dFZlY3RvclJlZjxLaW5kOjpjYXBpdGFsQml0TmFtZT4gbG93ZXJCaXROYW1lKCkgXAorICAgIHsg
XAorICAgICAgICByZXR1cm4gQmxvY2tEaXJlY3RvcnlCaXRWZWN0b3JSZWY8S2luZDo6Y2FwaXRh
bEJpdE5hbWU+KEJsb2NrRGlyZWN0b3J5Qml0VmVjdG9yV29yZFZpZXc8S2luZDo6Y2FwaXRhbEJp
dE5hbWU+KG1fc2VnbWVudHMuZGF0YSgpLCBtX251bUJpdHMpKTsgXAorICAgIH0KKyAgICBGT1Jf
RUFDSF9CTE9DS19ESVJFQ1RPUllfQklUKEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTKQor
I3VuZGVmIEJMT0NLX0RJUkVDVE9SWV9CSVRfQUNDRVNTT1JTCisKKyAgICB1bnNpZ25lZCBudW1C
aXRzKCkgY29uc3QgeyByZXR1cm4gbV9udW1CaXRzOyB9CisKKyAgICB2b2lkIHJlc2l6ZSh1bnNp
Z25lZCBudW1CaXRzKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgb2xkTnVtQml0cyA9IG1fbnVt
Qml0czsKKyAgICAgICAgbV9udW1CaXRzID0gbnVtQml0czsKKyAgICAgICAgbV9zZWdtZW50cy5y
ZXNpemUoV1RGOjpmYXN0Qml0VmVjdG9yQXJyYXlMZW5ndGgobnVtQml0cykpOworICAgICAgICB1
bnNpZ25lZCB1c2VkQml0c0luTGFzdFNlZ21lbnQgPSBudW1CaXRzICYgaW5kZXhNYXNrOyAvLyBU
aGlzIGlzIDAgaWYgYWxsIGJpdHMgYXJlIHVzZWQuCisgICAgICAgIGlmIChudW1CaXRzIDwgb2xk
TnVtQml0cyAmJiB1c2VkQml0c0luTGFzdFNlZ21lbnQpIHsKKyAgICAgICAgICAgIC8vIENsZWFy
IHRoZSBsYXN0IHNlZ21lbnQuCisgICAgICAgICAgICBBU1NFUlQodXNlZEJpdHNJbkxhc3RTZWdt
ZW50IDwgYml0c1BlclNlZ21lbnQpOworICAgICAgICAgICAgYXV0byYgc2VnbWVudCA9IG1fc2Vn
bWVudHMubGFzdCgpOworICAgICAgICAgICAgdWludDMyX3QgbWFzayA9ICgxVSA8PCB1c2VkQml0
c0luTGFzdFNlZ21lbnQpIC0gMTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IG51bWJlck9mQmxvY2tEaXJlY3RvcnlCaXRLaW5kczsgKytpbmRleCkKKyAgICAg
ICAgICAgICAgICBzZWdtZW50Lm1fZGF0YVtpbmRleF0gJj0gbWFzazsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CisgICAgdm9pZCBmb3JFYWNoU2VnbWVu
dChjb25zdCBGdW5jJiBmdW5jKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwor
ICAgICAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQorICAgICAgICAgICAgZnVu
YyhpbmRleCsrLCBzZWdtZW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFNlZ21l
bnQ+IG1fc2VnbWVudHM7CisgICAgdW5zaWduZWQgbV9udW1CaXRzIHsgMCB9OworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9C
bG9ja0RpcmVjdG9yeUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2Nr
RGlyZWN0b3J5SW5saW5lcy5oCmluZGV4IDQxY2JiNDljMjY0OTU2NmRlY2RmNzgyMzgzYmVjODhj
YTIyYmE1NzUuLjY4NGIxYThkODZjNGM3NTk3MGQ0ODY4Y2ZkNDBiYzY3OTZiMDBiMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrRGlyZWN0b3J5SW5saW5lcy5o
CkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHZvaWQgQmxvY2tEaXJlY3Rvcnk6OmZvckVhY2hCbG9jayhjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogewotICAgIG1fbGl2ZS5mb3JFYWNoU2V0Qml0KAorICAgIG1fYml0
cy5saXZlKCkuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKICAg
ICAgICAgICAgIGZ1bmN0b3IobV9ibG9ja3NbaW5kZXhdKTsKICAgICAgICAgfSk7CkBAIC00MSw3
ICs0MSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9ja0Rp
cmVjdG9yeTo6Zm9yRWFjaEJsb2NrKGNvbnN0IEZ1bmN0CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBG
dW5jdG9yPiBpbmxpbmUgdm9pZCBCbG9ja0RpcmVjdG9yeTo6Zm9yRWFjaE5vdEVtcHR5QmxvY2so
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBtX21hcmtpbmdOb3RFbXB0eS5mb3JFYWNo
U2V0Qml0KAorICAgIG1fYml0cy5tYXJraW5nTm90RW1wdHkoKS5mb3JFYWNoU2V0Qml0KAogICAg
ICAgICBbJl0gKHNpemVfdCBpbmRleCkgewogICAgICAgICAgICAgZnVuY3RvcihtX2Jsb2Nrc1tp
bmRleF0pOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0NvbXBsZXRlU3Vic3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29t
cGxldGVTdWJzcGFjZS5jcHAKaW5kZXggMmNiOTUyZjY3ODJlN2RiODA1NDc3MTUzOWQ1OWVkYjlh
ODk0MTJiYy4uZTRkYzYyMzY4YWE0ODJjOTk2OTY2ZDQ4YmEzOGM3NDEwNTIzMmUwMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9jYWxBbGxv
Y2F0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJldmVudENvbGxlY3Rpb25TY29w
ZS5oIgogI2luY2x1ZGUgIlN1YnNwYWNlSW5saW5lcy5oIgogCkBAIC03OSw3ICs4MCw3IEBAIEFs
bG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JTbG93KHNpemVfdCBzaXplKQog
ICAgIGlmIChmYWxzZSkKICAgICAgICAgZGF0YUxvZygiQ3JlYXRpbmcgQmxvY2tEaXJlY3Rvcnkv
TG9jYWxBbGxvY2F0b3IgZm9yICIsIG1fbmFtZSwgIiwgIiwgYXR0cmlidXRlcygpLCAiLCAiLCBz
aXplQ2xhc3MsICIuXG4iKTsKICAgICAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QmxvY2tEaXJlY3Rv
cnk+IHVuaXF1ZURpcmVjdG9yeSA9IG1ha2VVbmlxdWU8QmxvY2tEaXJlY3Rvcnk+KG1fc3BhY2Uu
aGVhcCgpLCBzaXplQ2xhc3MpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0RpcmVjdG9yeT4g
dW5pcXVlRGlyZWN0b3J5ID0gbWFrZVVuaXF1ZTxCbG9ja0RpcmVjdG9yeT4oc2l6ZUNsYXNzKTsK
ICAgICBCbG9ja0RpcmVjdG9yeSogZGlyZWN0b3J5ID0gdW5pcXVlRGlyZWN0b3J5LmdldCgpOwog
ICAgIG1fZGlyZWN0b3JpZXMuYXBwZW5kKFdURk1vdmUodW5pcXVlRGlyZWN0b3J5KSk7CiAgICAg
CkBAIC0xMDUsNyArMTA2LDcgQEAgQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRv
ckZvclNsb3coc2l6ZV90IHNpemUpCiAgICAgfQogICAgIAogICAgIGRpcmVjdG9yeS0+c2V0TmV4
dERpcmVjdG9yeUluU3Vic3BhY2UobV9maXJzdERpcmVjdG9yeSk7Ci0gICAgbV9hbGlnbmVkTWVt
b3J5QWxsb2NhdG9yLT5yZWdpc3RlckRpcmVjdG9yeShkaXJlY3RvcnkpOworICAgIG1fYWxpZ25l
ZE1lbW9yeUFsbG9jYXRvci0+cmVnaXN0ZXJEaXJlY3RvcnkobV9zcGFjZS5oZWFwKCksIGRpcmVj
dG9yeSk7CiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKICAgICBtX2ZpcnN0RGlyZWN0b3J5
ID0gZGlyZWN0b3J5OwogICAgIHJldHVybiBhbGxvY2F0b3I7CkBAIC0xMjcsNyArMTI4LDcgQEAg
dm9pZCogQ29tcGxldGVTdWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KFZNJiB2bSwgc2l6ZV90IHNp
emUsIEdDRGVmZXJyYWxDb250ZXh0KgogICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAgICAg
CiAgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc2l6ZSwgQWxsb2Nh
dG9yRm9yTW9kZTo6RW5zdXJlQWxsb2NhdG9yKSkKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5h
bGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxD
b250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIAogICAgIGlm
IChzaXplIDw9IE9wdGlvbnM6OnByZWNpc2VBbGxvY2F0aW9uQ3V0b2ZmKCkKICAgICAgICAgJiYg
c2l6ZSA8PSBNYXJrZWRTcGFjZTo6bGFyZ2VDdXRvZmYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCmluZGV4IGVhY2UyYTZm
NWM4Nzc5YWZkZjA2MTYwYTM4MTc4YmNjOTkzMjJmNDAuLjg3MWRmMmIyNzg4ZDNhZWExN2NhYjNk
OWMyYWY1YzY0NmE1M2FjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaApAQCAtMzYsNyArMzYsNyBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQqIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmlydHVhbChWTSYgdm0sIHNp
emVfdCBzaXplLCBHQwogICAgICAgICBSRUxFQVNFX0FTU0VSVCh2bS5oZWFwLmV4cGVjdERvZXNH
QygpKTsKIAogICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmly
dHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cykpCi0gICAgICAg
IHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7
CisgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250
ZXh0LCBmYWlsdXJlTW9kZSk7CiAgICAgcmV0dXJuIGFsbG9jYXRlU2xvdyh2bSwgc2l6ZSwgZGVm
ZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSXNvQ2VsbFNldC5jcHAKaW5kZXggYWE2MmUxMWZkNDRmNmFiY2JiYmY0MjViODZmZGYxMTE4
MGE4NDc5Yy4uODBhOWNlYjZhMzc5NmU5M2U0NmUzNzQxN2M5OWYyZWI2OGYwYTQ4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAg
UmVmPFNoYXJlZFRhc2s8TWFya2VkQmxvY2s6OkhhbmRsZSooKT4+IElzb0NlbGxTZXQ6OnBhcmFs
bGVsTm90RW1wdHlNYXJrZWRCbG9ja1MKICAgICAgICAgICAgIGlmIChtX2RvbmUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fbG9jayk7Ci0gICAgICAgICAgICBhdXRvIGJpdHMgPSBtX2RpcmVjdG9yeS5tX21hcmtp
bmdOb3RFbXB0eSAmIG1fc2V0Lm1fYmxvY2tzV2l0aEJpdHM7CisgICAgICAgICAgICBhdXRvIGJp
dHMgPSBtX2RpcmVjdG9yeS5tX2JpdHMubWFya2luZ05vdEVtcHR5KCkgJiBtX3NldC5tX2Jsb2Nr
c1dpdGhCaXRzOwogICAgICAgICAgICAgbV9pbmRleCA9IGJpdHMuZmluZEJpdChtX2luZGV4LCB0
cnVlKTsKICAgICAgICAgICAgIGlmIChtX2luZGV4ID49IG1fZGlyZWN0b3J5Lm1fYmxvY2tzLnNp
emUoKSkgewogICAgICAgICAgICAgICAgIG1fZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxsU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvQ2VsbFNldElubGluZXMuaAppbmRleCBmYzgxNjkyODdmMDU2NmJl
ZWI4OWQxOTg0NzE5MTFhNGE3NTljNGUxLi5kYjdlOGFjYjU2MWIxZDIyZDQ3NjE2NWNiYzQwOGJj
MzhmNjU2YzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29DZWxs
U2V0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb0NlbGxTZXRJ
bmxpbmVzLmgKQEAgLTcwLDcgKzcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KIHZvaWQg
SXNvQ2VsbFNldDo6Zm9yRWFjaE1hcmtlZENlbGwoY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBC
bG9ja0RpcmVjdG9yeSYgZGlyZWN0b3J5ID0gbV9zdWJzcGFjZS5tX2RpcmVjdG9yeTsKLSAgICAo
ZGlyZWN0b3J5Lm1fbWFya2luZ05vdEVtcHR5ICYgbV9ibG9ja3NXaXRoQml0cykuZm9yRWFjaFNl
dEJpdCgKKyAgICAoZGlyZWN0b3J5Lm1fYml0cy5tYXJraW5nTm90RW1wdHkoKSAmIG1fYmxvY2tz
V2l0aEJpdHMpLmZvckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGJsb2NrSW5kZXgp
IHsKICAgICAgICAgICAgIE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrID0gZGlyZWN0b3J5Lm1f
YmxvY2tzW2Jsb2NrSW5kZXhdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Jc29TdWJzcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJz
cGFjZS5jcHAKaW5kZXggNDUzZTYwMjMzZDYxMWQ0N2MzMTdiYjczZGNiOWIyNjZlOTA5NmNlNC4u
ZDFjZjYxZjA3NzI1YjVjODM4YWI0NmY2YzdiNmM3NGZhNTUyODJhMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcApAQCAtMzIsMTcgKzMyLDE4IEBACiAjaW5j
bHVkZSAiSXNvQ2VsbFNldElubGluZXMuaCIKICNpbmNsdWRlICJJc29TdWJzcGFjZUlubGluZXMu
aCIKICNpbmNsdWRlICJMb2NhbEFsbG9jYXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRT
cGFjZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIElzb1N1YnNwYWNlOjpJc29TdWJz
cGFjZShDU3RyaW5nIG5hbWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBl
LCBzaXplX3Qgc2l6ZSwgdWludDhfdCBudW1iZXJPZkxvd2VyVGllckNlbGxzKQogICAgIDogU3Vi
c3BhY2UobmFtZSwgaGVhcCkKLSAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9kaXJlY3Rvcnko
JmhlYXAsIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNp
emUpKQorICAgICwgbV9kaXJlY3RvcnkoV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPE1hcmtlZEJs
b2NrOjphdG9tU2l6ZT4oc2l6ZSkpCiAgICAgLCBtX2xvY2FsQWxsb2NhdG9yKCZtX2RpcmVjdG9y
eSkKICAgICAsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcihtYWtlVW5pcXVlPElzb0FsaWdu
ZWRNZW1vcnlBbGxvY2F0b3I+KCkpCi0gICAgLCBtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3Vu
dChudW1iZXJPZkxvd2VyVGllckNlbGxzKQogeworICAgIG1fcmVtYWluaW5nTG93ZXJUaWVyQ2Vs
bENvdW50ID0gbnVtYmVyT2ZMb3dlclRpZXJDZWxsczsKKyAgICBBU1NFUlQoV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mPE1hcmtlZEJsb2NrOjphdG9tU2l6ZT4oc2l6ZSkgPT0gY2VsbFNpemUoKSk7
CiAgICAgQVNTRVJUKG51bWJlck9mTG93ZXJUaWVyQ2VsbHMgPD0gTWFya2VkQmxvY2s6Om1heE51
bWJlck9mTG93ZXJUaWVyQ2VsbHMpOwogICAgIG1faXNJc29TdWJzcGFjZSA9IHRydWU7CiAgICAg
aW5pdGlhbGl6ZShoZWFwQ2VsbFR5cGUsIG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5nZXQo
KSk7CkBAIC01MCw3ICs1MSw3IEBAIElzb1N1YnNwYWNlOjpJc29TdWJzcGFjZShDU3RyaW5nIG5h
bWUsIEhlYXAmIGhlYXAsIEhlYXBDZWxsVHlwZSogaGVhcENlbGxUeXBlLCBzCiAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3NwYWNlLmRpcmVjdG9yeUxvY2soKSk7CiAgICAgbV9kaXJlY3Rv
cnkuc2V0U3Vic3BhY2UodGhpcyk7CiAgICAgbV9zcGFjZS5hZGRCbG9ja0RpcmVjdG9yeShsb2Nr
ZXIsICZtX2RpcmVjdG9yeSk7Ci0gICAgbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5yZWdpc3Rl
ckRpcmVjdG9yeSgmbV9kaXJlY3RvcnkpOworICAgIG1fYWxpZ25lZE1lbW9yeUFsbG9jYXRvci0+
cmVnaXN0ZXJEaXJlY3RvcnkoaGVhcCwgJm1fZGlyZWN0b3J5KTsKICAgICBtX2ZpcnN0RGlyZWN0
b3J5ID0gJm1fZGlyZWN0b3J5OwogfQogCkBAIC0xMTEsOCArMTEyLDcgQEAgdm9pZCogSXNvU3Vi
c3BhY2U6OnRyeUFsbG9jYXRlRnJvbUxvd2VyVGllcigpCiAgICAgICAgIHJldHVybiByZXZpdmUo
YWxsb2NhdGlvbik7CiAgICAgfQogICAgIGlmIChtX3JlbWFpbmluZ0xvd2VyVGllckNlbGxDb3Vu
dCkgewotICAgICAgICBzaXplX3Qgc2l6ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxNYXJr
ZWRTcGFjZTo6c2l6ZVN0ZXA+KG1fc2l6ZSk7Ci0gICAgICAgIFByZWNpc2VBbGxvY2F0aW9uKiBh
bGxvY2F0aW9uID0gUHJlY2lzZUFsbG9jYXRpb246OmNyZWF0ZUZvckxvd2VyVGllcigqbV9zcGFj
ZS5oZWFwKCksIHNpemUsIHRoaXMsIC0tbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQpOwor
ICAgICAgICBQcmVjaXNlQWxsb2NhdGlvbiogYWxsb2NhdGlvbiA9IFByZWNpc2VBbGxvY2F0aW9u
OjpjcmVhdGVGb3JMb3dlclRpZXIobV9zcGFjZS5oZWFwKCksIGNlbGxTaXplKCksIHRoaXMsIC0t
bV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQpOwogICAgICAgICByZXR1cm4gcmV2aXZlKGFs
bG9jYXRpb24pOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZS5oCmluZGV4IGNhNzc3ZDA4YWYxZGE1ZTAwOTVjMjg4OWMxMjQ0
ZjRkZTZjY2E1NjMuLmE1MTQzYmRhZWVjYjNiOWM0MmQ1OGNkYWViNWYyNGIzMTM3ZDA1ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2UuaApAQCAtNDAsNyArNDAsNyBA
QCBjbGFzcyBJc29TdWJzcGFjZSA6IHB1YmxpYyBTdWJzcGFjZSB7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSXNvU3Vic3BhY2UoQ1N0cmluZyBuYW1lLCBIZWFwJiwgSGVhcENlbGxUeXBlKiwgc2l6
ZV90IHNpemUsIHVpbnQ4X3QgbnVtYmVyT2ZMb3dlclRpZXJDZWxscyk7CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgfklzb1N1YnNwYWNlKCk7CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZTsgfQorICAgIHNpemVfdCBjZWxsU2l6ZSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5
LmNlbGxTaXplKCk7IH0KIAogICAgIEFsbG9jYXRvciBhbGxvY2F0b3JGb3Ioc2l6ZV90LCBBbGxv
Y2F0b3JGb3JNb2RlKSBvdmVycmlkZTsKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yRm9yTm9uVmly
dHVhbChzaXplX3QsIEFsbG9jYXRvckZvck1vZGUpOwpAQCAtNjMsMTggKzYzLDE2IEBAIGNsYXNz
IElzb1N1YnNwYWNlIDogcHVibGljIFN1YnNwYWNlIHsKICAgICB2b2lkIGRpZFJlbW92ZUJsb2Nr
KHNpemVfdCBibG9ja0luZGV4KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEJlZ2luU3dlZXBpbmdU
b0ZyZWVMaXN0KE1hcmtlZEJsb2NrOjpIYW5kbGUqKSBvdmVycmlkZTsKICAgICAKLSAgICBzaXpl
X3QgbV9zaXplOwogICAgIEJsb2NrRGlyZWN0b3J5IG1fZGlyZWN0b3J5OwogICAgIExvY2FsQWxs
b2NhdG9yIG1fbG9jYWxBbGxvY2F0b3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0FsaWduZWRN
ZW1vcnlBbGxvY2F0b3I+IG1faXNvQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjsKICAgICBTZW50aW5l
bExpbmtlZExpc3Q8UHJlY2lzZUFsbG9jYXRpb24sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxQcmVj
aXNlQWxsb2NhdGlvbj4+IG1fbG93ZXJUaWVyRnJlZUxpc3Q7CiAgICAgU2VudGluZWxMaW5rZWRM
aXN0PElzb0NlbGxTZXQsIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxJc29DZWxsU2V0Pj4gbV9jZWxs
U2V0czsKLSAgICB1aW50OF90IG1fcmVtYWluaW5nTG93ZXJUaWVyQ2VsbENvdW50IHsgMCB9Owog
fTsKIAogQUxXQVlTX0lOTElORSBBbGxvY2F0b3IgSXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5v
blZpcnR1YWwoc2l6ZV90IHNpemUsIEFsbG9jYXRvckZvck1vZGUpCiB7Ci0gICAgUkVMRUFTRV9B
U1NFUlQoc2l6ZSA9PSB0aGlzLT5zaXplKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXpl
KCkpOwogICAgIHJldHVybiBBbGxvY2F0b3IoJm1fbG9jYWxBbGxvY2F0b3IpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZUlubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCmluZGV4IDA1
MThhN2ZlMDYyZDYwOTE2OWQ3YmMzZjc1M2M1ODRkYzRlZWNmNzAuLjQ2NjBlNzc4M2FhNjcyZWM4
YTI5ZjRmNGYzM2MyMzJjYjQ2ZGY3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCkBAIC0yNywxMSArMjcsMTEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogSXNvU3Vic3BhY2U6OmFsbG9jYXRlTm9uVmly
dHVhbChWTSYsIHNpemVfdCBzaXplLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCitBTFdBWVNfSU5MSU5FIHZvaWQq
IElzb1N1YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwoVk0mIHZtLCBzaXplX3Qgc2l6ZSwgR0NE
ZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlIGZh
aWx1cmVNb2RlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKHNpemUgPT0gdGhpcy0+c2l6ZSgpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6
OmF0b21TaXplPihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKICAgICBBbGxvY2F0b3IgYWxsb2NhdG9y
ID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpNdXN0QWxy
ZWFkeUhhdmVBbGxvY2F0b3IpOwotICAgIHZvaWQqIHJlc3VsdCA9IGFsbG9jYXRvci5hbGxvY2F0
ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICB2b2lkKiByZXN1bHQgPSBhbGxv
Y2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSXNvU3Vic3BhY2VQZXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
c29TdWJzcGFjZVBlclZNLmNwcAppbmRleCBiOWUxODUwOTA0MmU3MDE3MDdiNjc2ZTg4MjFiMGM0
MWFmNWQ4ZDgyLi5iMmY2YmJkOWI5NDc4YzJhNTFjM2YxMzgxODcyZDFhNmRjZmI2NmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZVBlclZNLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBjbGFzcyBJc29TdWJzcGFjZVBlclZNOjpBdXRvcmVtb3ZpbmdJc29TdWJz
cGFjZSA6IHB1YmxpYyBJc29TdWJzcGFjZSB7CiAgICAgfkF1dG9yZW1vdmluZ0lzb1N1YnNwYWNl
KCkKICAgICB7CiAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wZXJWTS5tX2xvY2sp
OwotICAgICAgICBtX3BlclZNLm1fc3Vic3BhY2VQZXJWTS5yZW1vdmUoJnNwYWNlKCkuaGVhcCgp
LT52bSgpKTsKKyAgICAgICAgbV9wZXJWTS5tX3N1YnNwYWNlUGVyVk0ucmVtb3ZlKCZzcGFjZSgp
LmhlYXAoKS52bSgpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Mb2NhbEFsbG9jYXRvci5jcHAKaW5kZXggNTNlMDUwOGFiMmZmMDFjZjRkNDlhN2Zm
MDcwMTc3MWYwZjBhYzRhZC4uZjU1NTcxYzg2Y2ZiMmUwYWU0Y2JkMWUwYWUyN2ZkYjg1MGJkMGZh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmNwcApA
QCAtMTEwLDEyICsxMTAsMTEgQEAgdm9pZCBMb2NhbEFsbG9jYXRvcjo6c3RvcEFsbG9jYXRpbmdG
b3JHb29kKCkKICAgICByZXNldCgpOwogfQogCi12b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2Nh
dGVTbG93Q2FzZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCit2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVT
bG93Q2FzZShIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBB
bGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2Nv
cGUgc3VwZXJTYW1wbGVyU2NvcGUoZmFsc2UpOwotICAgIEhlYXAmIGhlYXAgPSAqbV9kaXJlY3Rv
cnktPm1faGVhcDsKICAgICBBU1NFUlQoaGVhcC52bSgpLmN1cnJlbnRUaHJlYWRJc0hvbGRpbmdB
UElMb2NrKCkpOwotICAgIGRvVGVzdENvbGxlY3Rpb25zSWZOZWVkZWQoZGVmZXJyYWxDb250ZXh0
KTsKKyAgICBkb1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKGhlYXAsIGRlZmVycmFsQ29udGV4dCk7
CiAKICAgICBBU1NFUlQoIW1fZGlyZWN0b3J5LT5tYXJrZWRTcGFjZSgpLmlzSXRlcmF0aW5nKCkp
OwogICAgIGhlYXAuZGlkQWxsb2NhdGUobV9mcmVlTGlzdC5vcmlnaW5hbFNpemUoKSk7CkBAIC0x
MjksNyArMTI4LDcgQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OmFsbG9jYXRlU2xvd0Nhc2UoR0NE
ZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2MKICAgICAvLyBHb29meSBjb3Ju
ZXIgY2FzZTogdGhlIEdDIGNhbGxlZCBhIGNhbGxiYWNrIGFuZCBub3cgdGhpcyBkaXJlY3Rvcnkg
aGFzIGEgY3VycmVudEJsb2NrLiBUaGlzIG9ubHkKICAgICAvLyBoYXBwZW5zIHdoZW4gcnVubmlu
ZyBXZWJLaXQgdGVzdHMsIHdoaWNoIGluamVjdCBhIGNhbGxiYWNrIGludG8gdGhlIEdDJ3MgZmlu
YWxpemF0aW9uLgogICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnRCbG9jaykpCi0gICAgICAgIHJl
dHVybiBhbGxvY2F0ZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKKyAgICAgICAgcmV0
dXJuIGFsbG9jYXRlKGhlYXAsIGRlZmVycmFsQ29udGV4dCwgZmFpbHVyZU1vZGUpOwogICAgIAog
ICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICAK
QEAgLTE0Miw3ICsxNDEsNyBAQCB2b2lkKiBMb2NhbEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2Fz
ZShHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvYwogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgTWFya2VkQmxvY2s6OkhhbmRsZSogYmxv
Y2sgPSBtX2RpcmVjdG9yeS0+dHJ5QWxsb2NhdGVCbG9jaygpOworICAgIE1hcmtlZEJsb2NrOjpI
YW5kbGUqIGJsb2NrID0gbV9kaXJlY3RvcnktPnRyeUFsbG9jYXRlQmxvY2soaGVhcCk7CiAgICAg
aWYgKCFibG9jaykgewogICAgICAgICBpZiAoZmFpbHVyZU1vZGUgPT0gQWxsb2NhdGlvbkZhaWx1
cmVNb2RlOjpBc3NlcnQpCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMjQ5LDE4ICsyNDgsMTggQEAgdm9pZCogTG9jYWxBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
SW4oTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dm9pZCBMb2NhbEFsbG9jYXRvcjo6ZG9UZXN0Q29sbGVjdGlvbnNJZk5lZWRlZChHQ0RlZmVycmFs
Q29udGV4dCogZGVmZXJyYWxDb250ZXh0KQordm9pZCBMb2NhbEFsbG9jYXRvcjo6ZG9UZXN0Q29s
bGVjdGlvbnNJZk5lZWRlZChIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxD
b250ZXh0KQogewogICAgIGlmICghT3B0aW9uczo6c2xvd1BhdGhBbGxvY3NCZXR3ZWVuR0NzKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRpYyB1bnNpZ25lZCBhbGxvY2F0aW9uQ291bnQg
PSAwOwogICAgIGlmICghYWxsb2NhdGlvbkNvdW50KSB7Ci0gICAgICAgIGlmICghbV9kaXJlY3Rv
cnktPm1faGVhcC0+aXNEZWZlcnJlZCgpKSB7CisgICAgICAgIGlmICghaGVhcC5pc0RlZmVycmVk
KCkpIHsKICAgICAgICAgICAgIGlmIChkZWZlcnJhbENvbnRleHQpCiAgICAgICAgICAgICAgICAg
ZGVmZXJyYWxDb250ZXh0LT5tX3Nob3VsZEdDID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBtX2RpcmVjdG9yeS0+bV9oZWFwLT5jb2xsZWN0Tm93KFN5bmMsIENvbGxl
Y3Rpb25TY29wZTo6RnVsbCk7CisgICAgICAgICAgICAgICAgaGVhcC5jb2xsZWN0Tm93KFN5bmMs
IENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKCsrYWxs
b2NhdGlvbkNvdW50ID49IE9wdGlvbnM6OnNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcygpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWxBbGxvY2F0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9yLmgKaW5kZXggNDM3MjczZjM2
NjgwZTRhODA5Njg3Y2RmOGM4ZTRhOGNmNGVjYzFhZC4uOWI2NTFiMDcwMzc2ODE0ZjJhMzk3YmIy
YTE4NmVkNzAwMDk5ZDM4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TG9jYWxBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFs
bG9jYXRvci5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCbG9j
a0RpcmVjdG9yeTsKIGNsYXNzIEdDRGVmZXJyYWxDb250ZXh0OworY2xhc3MgSGVhcDsKIAogY2xh
c3MgTG9jYWxBbGxvY2F0b3IgOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TG9jYWxBbGxv
Y2F0b3I+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMb2NhbEFsbG9jYXRvcik7CkBAIC00
Miw3ICs0Myw3IEBAIGNsYXNzIExvY2FsQWxsb2NhdG9yIDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPExvY2FsQWxsb2NhdG9yPiB7CiAgICAgTG9jYWxBbGxvY2F0b3IoQmxvY2tEaXJlY3Rv
cnkqKTsKICAgICB+TG9jYWxBbGxvY2F0b3IoKTsKICAgICAKLSAgICB2b2lkKiBhbGxvY2F0ZShH
Q0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9kZSk7CisgICAgdm9pZCogYWxs
b2NhdGUoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKTsK
ICAgICAKICAgICB1bnNpZ25lZCBjZWxsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJlZUxpc3Qu
Y2VsbFNpemUoKTsgfQogCkBAIC02MCwxMiArNjEsMTIgQEAgY2xhc3MgTG9jYWxBbGxvY2F0b3Ig
OiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TG9jYWxBbGxvY2F0b3I+IHsKICAgICBmcmll
bmQgY2xhc3MgQmxvY2tEaXJlY3Rvcnk7CiAgICAgCiAgICAgdm9pZCByZXNldCgpOwotICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoR0NEZWZlcnJhbENvbnRleHQq
LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFpbHVyZU1vZGUpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxs
b2NhdGlvbkZhaWx1cmVNb2RlKTsKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdCgpOwogICAg
IHZvaWQqIHRyeUFsbG9jYXRlV2l0aG91dENvbGxlY3RpbmcoKTsKICAgICB2b2lkKiB0cnlBbGxv
Y2F0ZUluKE1hcmtlZEJsb2NrOjpIYW5kbGUqKTsKICAgICB2b2lkKiBhbGxvY2F0ZUluKE1hcmtl
ZEJsb2NrOjpIYW5kbGUqKTsKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZG9UZXN0Q29sbGVjdGlv
bnNJZk5lZWRlZChHQ0RlZmVycmFsQ29udGV4dCopOworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBk
b1Rlc3RDb2xsZWN0aW9uc0lmTmVlZGVkKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCopOwogCiAg
ICAgQmxvY2tEaXJlY3RvcnkqIG1fZGlyZWN0b3J5OwogICAgIEZyZWVMaXN0IG1fZnJlZUxpc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbEFsbG9jYXRvcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5l
cy5oCmluZGV4IDAwZDU1NzQ3NDI2OWQ1NzI0MjdmZDdkOTU3OWExZjBjYTRhZDVhZjEuLmMzYzg2
OTVlODU4OGM3OTAzNTA4ZWFlOWY1MWEyZjc5OWY5ODNmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsQWxsb2NhdG9ySW5saW5lcy5oCkBAIC0zMCwxNCArMzAs
MTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogTG9jYWxBbGxv
Y2F0b3I6OmFsbG9jYXRlKEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9j
YXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKK0FMV0FZU19JTkxJTkUgdm9pZCogTG9jYWxB
bGxvY2F0b3I6OmFsbG9jYXRlKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJh
bENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBpZiAo
dmFsaWRhdGVERkdEb2VzR0MpCi0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZGlyZWN0b3J5LT5o
ZWFwKCktPmV4cGVjdERvZXNHQygpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaGVhcC5leHBl
Y3REb2VzR0MoKSk7CiAgICAgcmV0dXJuIG1fZnJlZUxpc3QuYWxsb2NhdGUoCiAgICAgICAgIFsm
XSAoKSAtPiBIZWFwQ2VsbCogewotICAgICAgICAgICAgc2FuaXRpemVTdGFja0ZvclZNKG1fZGly
ZWN0b3J5LT5oZWFwKCktPnZtKCkpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhl
YXBDZWxsKj4oYWxsb2NhdGVTbG93Q2FzZShkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKSk7
CisgICAgICAgICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0oaGVhcC52bSgpKTsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxIZWFwQ2VsbCo+KGFsbG9jYXRlU2xvd0Nhc2UoaGVhcCwgZGVm
ZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSkpOwogICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCmluZGV4IGM2ZTFmNmNkZjUwMjdmZTE0
MGY2NDRlY2E0OTE5MGY0ODQ4YjI1YTMuLjQyNTA0YTA4NmFlZGMyNjA4ZjA0NGI2NzllYTNmZjM5
NWJiZGEwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAK
QEAgLTM3Nyw4ICszNzcsOCBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmR1bXBTdGF0ZShQ
cmludFN0cmVhbSYgb3V0KQogICAgIENvbW1hUHJpbnRlciBjb21tYTsKICAgICBkaXJlY3Rvcnko
KS0+Zm9yRWFjaEJpdFZlY3RvcldpdGhOYW1lKAogICAgICAgICBob2xkTG9jayhkaXJlY3Rvcnko
KS0+Yml0dmVjdG9yTG9jaygpKSwKLSAgICAgICAgWyZdIChGYXN0Qml0VmVjdG9yJiBiaXR2ZWN0
b3IsIGNvbnN0IGNoYXIqIG5hbWUpIHsKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgbmFt
ZSwgIjoiLCBiaXR2ZWN0b3JbaW5kZXgoKV0gPyAiWUVTIiA6ICJubyIpOworICAgICAgICBbJl0o
YXV0byB2ZWN0b3JSZWYsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICAgICAgICAgIG91dC5wcmlu
dChjb21tYSwgbmFtZSwgIjoiLCB2ZWN0b3JSZWZbaW5kZXgoKV0gPyAiWUVTIiA6ICJubyIpOwog
ICAgICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
Y3BwCmluZGV4IDk3MDNlMzU3MWUzZjRjZGY4YjIxMjgwYzM5MTA3MTkxM2UzNWM4YTguLmQ0MDhk
NmVlZjFjMzcyMTEwODdlZjY2ZGY2Y2EyZDIyZmY5MzFkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRCbG9j
a0lubGluZXMuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlIDx3
dGYvTGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xOTUsOCArMTk2LDggQEAgdm9p
ZCBNYXJrZWRTcGFjZTo6aW5pdGlhbGl6ZVNpemVDbGFzc0ZvclN0ZXBTaXplKCkKIH0KIAogTWFy
a2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCi0gICAgOiBtX2hlYXAoaGVhcCkKIHsK
KyAgICBBU1NFUlRfVU5VU0VEKGhlYXAsIGhlYXAgPT0gJnRoaXMtPmhlYXAoKSk7CiAgICAgaW5p
dGlhbGl6ZVNpemVDbGFzc0ZvclN0ZXBTaXplKCk7CiB9CiAKQEAgLTIzNCw3ICsyMzUsNyBAQCB2
b2lkIE1hcmtlZFNwYWNlOjpsYXN0Q2hhbmNlVG9GaW5hbGl6ZSgpCiAKIHZvaWQgTWFya2VkU3Bh
Y2U6OnN3ZWVwQmxvY2tzKCkKIHsKLSAgICBtX2hlYXAtPnN3ZWVwZXIoKS5zdG9wU3dlZXBpbmco
KTsKKyAgICBoZWFwKCkuc3dlZXBlcigpLnN0b3BTd2VlcGluZygpOwogICAgIGZvckVhY2hEaXJl
Y3RvcnkoCiAgICAgICAgIFsmXSAoQmxvY2tEaXJlY3RvcnkmIGRpcmVjdG9yeSkgLT4gSXRlcmF0
aW9uU3RhdHVzIHsKICAgICAgICAgICAgIGRpcmVjdG9yeS5zd2VlcCgpOwpAQCAtMjcwLDEzICsy
NzEsMTMgQEAgdm9pZCBNYXJrZWRTcGFjZTo6c3dlZXBQcmVjaXNlQWxsb2NhdGlvbnMoKQogCiB2
b2lkIE1hcmtlZFNwYWNlOjpwcmVwYXJlRm9yQWxsb2NhdGlvbigpCiB7Ci0gICAgQVNTRVJUKCFU
aHJlYWQ6Om1heUJlR0NUaHJlYWQoKSB8fCBtX2hlYXAtPndvcmxkSXNTdG9wcGVkKCkpOworICAg
IEFTU0VSVCghVGhyZWFkOjptYXlCZUdDVGhyZWFkKCkgfHwgaGVhcCgpLndvcmxkSXNTdG9wcGVk
KCkpOwogICAgIGZvciAoU3Vic3BhY2UqIHN1YnNwYWNlIDogbV9zdWJzcGFjZXMpCiAgICAgICAg
IHN1YnNwYWNlLT5wcmVwYXJlRm9yQWxsb2NhdGlvbigpOwogCiAgICAgbV9hY3RpdmVXZWFrU2V0
cy50YWtlRnJvbShtX25ld0FjdGl2ZVdlYWtTZXRzKTsKICAgICAKLSAgICBpZiAobV9oZWFwLT5j
b2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCisgICAgaWYgKGhlYXAo
KS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4pCiAgICAgICAgIG1f
cHJlY2lzZUFsbG9jYXRpb25zTnVyc2VyeU9mZnNldEZvclN3ZWVwID0gbV9wcmVjaXNlQWxsb2Nh
dGlvbnNOdXJzZXJ5T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlv
bnNOdXJzZXJ5T2Zmc2V0Rm9yU3dlZXAgPSAwOwpAQCAtMjk4LDcgKzI5OSw3IEBAIHZvaWQgTWFy
a2VkU3BhY2U6OnZpc2l0V2Vha1NldHMoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgCiAgICAg
bV9uZXdBY3RpdmVXZWFrU2V0cy5mb3JFYWNoKHZpc2l0KTsKICAgICAKLSAgICBpZiAobV9oZWFw
LT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCisgICAgaWYgKGhl
YXAoKS5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpCiAgICAgICAg
IG1fYWN0aXZlV2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiB9CiAKQEAgLTMxMCw3ICszMTEsNyBA
QCB2b2lkIE1hcmtlZFNwYWNlOjpyZWFwV2Vha1NldHMoKQogICAgIAogICAgIG1fbmV3QWN0aXZl
V2Vha1NldHMuZm9yRWFjaCh2aXNpdCk7CiAgICAgCi0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlv
blNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQorICAgIGlmIChoZWFwKCkuY29sbGVj
dGlvblNjb3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpGdWxsKQogICAgICAgICBtX2FjdGl2ZVdl
YWtTZXRzLmZvckVhY2godmlzaXQpOwogfQogCkBAIC0zNTYsNyArMzU3LDcgQEAgdm9pZCBNYXJr
ZWRTcGFjZTo6cHJlcGFyZUZvckNvbnNlcnZhdGl2ZVNjYW4oKQogCiB2b2lkIE1hcmtlZFNwYWNl
OjpwcmVwYXJlRm9yTWFya2luZygpCiB7Ci0gICAgaWYgKG1faGVhcC0+Y29sbGVjdGlvblNjb3Bl
KCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQorICAgIGlmIChoZWFwKCkuY29sbGVjdGlvblNj
b3BlKCkgPT0gQ29sbGVjdGlvblNjb3BlOjpFZGVuKQogICAgICAgICBtX3ByZWNpc2VBbGxvY2F0
aW9uc09mZnNldEZvclRoaXNDb2xsZWN0aW9uID0gbV9wcmVjaXNlQWxsb2NhdGlvbnNOdXJzZXJ5
T2Zmc2V0OwogICAgIGVsc2UKICAgICAgICAgbV9wcmVjaXNlQWxsb2NhdGlvbnNPZmZzZXRGb3JU
aGlzQ29sbGVjdGlvbiA9IDA7CkBAIC00MTYsNyArNDE3LDcgQEAgdm9pZCBNYXJrZWRTcGFjZTo6
c2hyaW5rKCkKIAogdm9pZCBNYXJrZWRTcGFjZTo6YmVnaW5NYXJraW5nKCkKIHsKLSAgICBpZiAo
bV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpIHsKKyAg
ICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6RnVsbCkg
ewogICAgICAgICBmb3JFYWNoRGlyZWN0b3J5KAogICAgICAgICAgICAgWyZdIChCbG9ja0RpcmVj
dG9yeSYgZGlyZWN0b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAgICAgIGRp
cmVjdG9yeS5iZWdpbk1hcmtpbmdGb3JGdWxsQ29sbGVjdGlvbigpOwpAQCAtNTUxLDcgKzU1Miw3
IEBAIHZvaWQgTWFya2VkU3BhY2U6OmRpZEFsbG9jYXRlSW5CbG9jayhNYXJrZWRCbG9jazo6SGFu
ZGxlKiBibG9jaykKIAogdm9pZCBNYXJrZWRTcGFjZTo6c25hcHNob3RVbnN3ZXB0KCkKIHsKLSAg
ICBpZiAobV9oZWFwLT5jb2xsZWN0aW9uU2NvcGUoKSA9PSBDb2xsZWN0aW9uU2NvcGU6OkVkZW4p
IHsKKyAgICBpZiAoaGVhcCgpLmNvbGxlY3Rpb25TY29wZSgpID09IENvbGxlY3Rpb25TY29wZTo6
RWRlbikgewogICAgICAgICBmb3JFYWNoRGlyZWN0b3J5KAogICAgICAgICAgICAgWyZdIChCbG9j
a0RpcmVjdG9yeSYgZGlyZWN0b3J5KSAtPiBJdGVyYXRpb25TdGF0dXMgewogICAgICAgICAgICAg
ICAgIGRpcmVjdG9yeS5zbmFwc2hvdFVuc3dlcHRGb3JFZGVuQ29sbGVjdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKaW5kZXggMDA2ODA1YjQ0N2JlMWI1MjFi
Y2E0NDRjMWRjZWExZWY3NDI3ODQ4OC4uYWQzNjYyMmYxYjU3ZGQ2NmJjY2YzZDlhYTRmZjIxODYw
YzMxMjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCkBAIC05
NSw3ICs5NSw3IEBAIGNsYXNzIE1hcmtlZFNwYWNlIHsKICAgICBNYXJrZWRTcGFjZShIZWFwKik7
CiAgICAgfk1hcmtlZFNwYWNlKCk7CiAgICAgCi0gICAgSGVhcCogaGVhcCgpIGNvbnN0IHsgcmV0
dXJuIG1faGVhcDsgfQorICAgIEhlYXAmIGhlYXAoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGxh
c3RDaGFuY2VUb0ZpbmFsaXplKCk7IC8vIE11c3QgY2FsbCBzdG9wQWxsb2NhdGluZ0Zvckdvb2Qg
Zmlyc3QuCiAgICAgdm9pZCBmcmVlTWVtb3J5KCk7CkBAIC0yMTMsNyArMjEzLDYgQEAgY2xhc3Mg
TWFya2VkU3BhY2UgewogICAgIFByZWNpc2VBbGxvY2F0aW9uKiogbV9wcmVjaXNlQWxsb2NhdGlv
bnNGb3JUaGlzQ29sbGVjdGlvbkJlZ2luIHsgbnVsbHB0ciB9OwogICAgIFByZWNpc2VBbGxvY2F0
aW9uKiogbV9wcmVjaXNlQWxsb2NhdGlvbnNGb3JUaGlzQ29sbGVjdGlvbkVuZCB7IG51bGxwdHIg
fTsKIAotICAgIEhlYXAqIG1faGVhcDsKICAgICBzaXplX3QgbV9jYXBhY2l0eSB7IDAgfTsKICAg
ICBIZWFwVmVyc2lvbiBtX21hcmtpbmdWZXJzaW9uIHsgaW5pdGlhbFZlcnNpb24gfTsKICAgICBI
ZWFwVmVyc2lvbiBtX25ld2x5QWxsb2NhdGVkVmVyc2lvbiB7IGluaXRpYWxWZXJzaW9uIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZUlubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCmluZGV4
IGRmODUzMWQ5N2ZjNjk1YTIyY2YyN2QyNWExYTQ4OTBmMGJlMzVhZjUuLmVhODUxNDY0OTMzMDI4
YzUwOTA5OTZmMmU2NTE0NzdhMTQyZTNkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlSW5saW5lcy5oCkBAIC0zMCw2ICszMCwxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorQUxXQVlTX0lOTElORSBIZWFwJiBNYXJrZWRTcGFjZTo6aGVhcCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8SGVhcCo+KGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHRoaXMpIC0gT0JKRUNUX09GRlNFVE9GKEhlYXAsIG1fb2JqZWN0U3BhY2UpKTsKK30KKwog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmZvckVh
Y2hMaXZlQ2VsbChIZWFwSXRlcmF0aW9uU2NvcGUmLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewogICAgIEFTU0VSVChpc0l0ZXJhdGluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N1YnNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1
YnNwYWNlLmNwcAppbmRleCA5NGMyZmY0YzZiMmFjYTZjMTlkYzE1OGNiNGY4ZTYzNzM0ZDBlM2E3
Li5hYjk5ZTJkYTZjNWMzYjM1MTM2YjE3YWU0NGU1MWJhNzhhOTg5NzMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtl
ZEJsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1
ZGUgIlBhcmFsbGVsU291cmNlQWRhcHRlci5oIgogI2luY2x1ZGUgIlByZXZlbnRDb2xsZWN0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJTdWJzcGFjZUlubGluZXMuaCIKQEAgLTQ5LDcgKzUwLDcgQEAg
dm9pZCBTdWJzcGFjZTo6aW5pdGlhbGl6ZShIZWFwQ2VsbFR5cGUqIGhlYXBDZWxsVHlwZSwgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvciogYWwKICAgICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3IgPSBh
bGlnbmVkTWVtb3J5QWxsb2NhdG9yOwogICAgIG1fZGlyZWN0b3J5Rm9yRW1wdHlBbGxvY2F0aW9u
ID0gbV9hbGlnbmVkTWVtb3J5QWxsb2NhdG9yLT5maXJzdERpcmVjdG9yeSgpOwogCi0gICAgSGVh
cCYgaGVhcCA9ICptX3NwYWNlLmhlYXAoKTsKKyAgICBIZWFwJiBoZWFwID0gbV9zcGFjZS5oZWFw
KCk7CiAgICAgaGVhcC5vYmplY3RTcGFjZSgpLm1fc3Vic3BhY2VzLmFwcGVuZCh0aGlzKTsKICAg
ICBtX2FsaWduZWRNZW1vcnlBbGxvY2F0b3ItPnJlZ2lzdGVyU3Vic3BhY2UodGhpcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU3Vic3BhY2UuaAppbmRleCBiNTA4MTE0NGNkNGMwYjEyOTFj
ZDJjMzUzYzIyYzZmYzQ3YzFmZmFiLi4zNGVhMzQxMTgzMWJlMDg3ZTNlNTNlYmU2MDdiNGE4ZTYw
M2RkZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdWJzcGFjZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1YnNwYWNlLmgKQEAgLTExOSw2ICsx
MTksOCBAQCBjbGFzcyBTdWJzcGFjZSB7CiAgICAgQ1N0cmluZyBtX25hbWU7CiAKICAgICBib29s
IG1faXNJc29TdWJzcGFjZSB7IGZhbHNlIH07Citwcm90ZWN0ZWQ6CisgICAgdWludDhfdCBtX3Jl
bWFpbmluZ0xvd2VyVGllckNlbGxDb3VudCB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IGE4ZWQ2YjgyODkwMGZlMDIxM2JkZWQ5YzYzNzVj
OTdiMGEzNmM4NTkuLjg4NWI3YjE3M2IxMWE2MDFiZTI5YTMzMmFiOWQyYTQxNGQ1NjIxMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAK
IGNsYXNzIFByaW50U3RyZWFtOwogCi1pbmxpbmUgc2l6ZV90IGZhc3RCaXRWZWN0b3JBcnJheUxl
bmd0aChzaXplX3QgbnVtQml0cykgeyByZXR1cm4gKG51bUJpdHMgKyAzMSkgLyAzMjsgfQoraW5s
aW5lIGNvbnN0ZXhwciBzaXplX3QgZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKHNpemVfdCBudW1C
aXRzKSB7IHJldHVybiAobnVtQml0cyArIDMxKSAvIDMyOyB9CiAKIGNsYXNzIEZhc3RCaXRWZWN0
b3JXb3JkVmlldyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MjEsNiArNDIx
LDkgQEAgY2xhc3MgRmFzdEJpdFZlY3RvckltcGwgewogICAgIH0KICAgICAKICAgICB0eXBlbmFt
ZSBXb3Jkczo6Vmlld1R5cGUgd29yZFZpZXcoKSBjb25zdCB7IHJldHVybiBtX3dvcmRzLnZpZXco
KTsgfQorCisgICAgV29yZHMmIHVuc2FmZVdvcmRzKCkgeyByZXR1cm4gbV93b3JkczsgfQorICAg
IGNvbnN0IFdvcmRzJiB1bnNhZmVXb3JkcygpIGNvbnN0IHsgcmV0dXJuIG1fd29yZHM7IH0KICAg
ICAKIHByaXZhdGU6CiAgICAgLy8gWW91J2QgdGhpbmsgdGhhdCB3ZSBjb3VsZCByZW1vdmUgdGhp
cyBmcmllbmQgaWYgd2UgdXNlZCBwcm90ZWN0ZWQsIGJ1dCB5b3UnZCBiZSB3cm9uZywKQEAgLTQz
Niw2ICs0MzksMzggQEAgY2xhc3MgRmFzdEJpdFZlY3RvckltcGwgewogICAgIFdvcmRzIG1fd29y
ZHM7CiB9OwogCitjbGFzcyBGYXN0Qml0UmVmZXJlbmNlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBGYXN0Qml0UmVmZXJlbmNlKCkgPSBkZWZhdWx0OworCisg
ICAgRmFzdEJpdFJlZmVyZW5jZSh1aW50MzJfdCogd29yZCwgdWludDMyX3QgbWFzaykKKyAgICAg
ICAgOiBtX3dvcmQod29yZCkKKyAgICAgICAgLCBtX21hc2sobWFzaykKKyAgICB7CisgICAgfQor
CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gISEoKm1fd29yZCAmIG1fbWFzayk7CisgICAgfQorCisgICAgRmFzdEJpdFJlZmVyZW5jZSYg
b3BlcmF0b3I9KGJvb2wgdmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUpCisgICAgICAg
ICAgICAqbV93b3JkIHw9IG1fbWFzazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm1fd29y
ZCAmPSB+bV9tYXNrOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHVpbnQzMl90KiBtX3dvcmQgeyBudWxscHRyIH07CisgICAgdWludDMyX3QgbV9tYXNrIHsg
MCB9OworfTsKKworCisKIGNsYXNzIEZhc3RCaXRWZWN0b3IgOiBwdWJsaWMgRmFzdEJpdFZlY3Rv
ckltcGw8RmFzdEJpdFZlY3RvcldvcmRPd25lcj4gewogcHVibGljOgogICAgIEZhc3RCaXRWZWN0
b3IoKSB7IH0KQEAgLTUxOCw0MiArNTUzLDEzIEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgOiBwdWJs
aWMgRmFzdEJpdFZlY3RvckltcGw8RmFzdEJpdFZlY3RvcldvcmRPd25lcj4gewogICAgICAgICBy
ZXR1cm4gYXRJbXBsKGluZGV4KTsKICAgICB9CiAgICAgCi0gICAgY2xhc3MgQml0UmVmZXJlbmNl
IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFJlZmVyZW5jZSgpIHsgfQotICAgICAgICAKLSAg
ICAgICAgQml0UmVmZXJlbmNlKHVpbnQzMl90KiB3b3JkLCB1aW50MzJfdCBtYXNrKQotICAgICAg
ICAgICAgOiBtX3dvcmQod29yZCkKLSAgICAgICAgICAgICwgbV9tYXNrKG1hc2spCi0gICAgICAg
IHsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhISgqbV93b3JkICYgbV9tYXNr
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgQml0UmVmZXJlbmNlJiBvcGVyYXRvcj0o
Ym9vbCB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgICAgICptX3dvcmQgfD0gbV9tYXNrOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICptX3dvcmQgJj0gfm1fbWFzazsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICB1aW50MzJfdCogbV93b3JkIHsg
bnVsbHB0ciB9OwotICAgICAgICB1aW50MzJfdCBtX21hc2sgeyAwIH07Ci0gICAgfTsKLSAgICAK
LSAgICBCaXRSZWZlcmVuY2UgYXQoc2l6ZV90IGluZGV4KQorICAgIEZhc3RCaXRSZWZlcmVuY2Ug
YXQoc2l6ZV90IGluZGV4KQogICAgIHsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaW5kZXggPCBudW1CaXRzKCkpOwotICAgICAgICByZXR1cm4gQml0UmVmZXJlbmNl
KCZtX3dvcmRzLndvcmQoaW5kZXggPj4gNSksIDEgPDwgKGluZGV4ICYgMzEpKTsKKyAgICAgICAg
cmV0dXJuIEZhc3RCaXRSZWZlcmVuY2UoJm1fd29yZHMud29yZChpbmRleCA+PiA1KSwgMSA8PCAo
aW5kZXggJiAzMSkpOwogICAgIH0KICAgICAKLSAgICBCaXRSZWZlcmVuY2Ugb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpCisgICAgRmFzdEJpdFJlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdCBpbmRl
eCkKICAgICB7CiAgICAgICAgIHJldHVybiBhdChpbmRleCk7CiAgICAgfQo=
</data>
<flag name="review"
          id="399270"
          type_id="1"
          status="+"
          setter="rmorisset"
    />
          </attachment>
      

    </bug>

</bugzilla>