<?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>158911</bug_id>
          
          <creation_ts>2016-06-19 12:51:02 -0700</creation_ts>
          <short_desc>InlineAccess should do StringLength</short_desc>
          <delta_ts>2018-08-31 10:07:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local 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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>pnormand</cc>
    
    <cc>sukolsak</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1203627</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-19 12:51:02 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203851</commentid>
    <comment_count>1</comment_count>
      <attachid>281668</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-20 12:56:09 -0700</bug_when>
    <thetext>Created attachment 281668
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203856</commentid>
    <comment_count>2</comment_count>
      <attachid>281668</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-06-20 13:09:05 -0700</bug_when>
    <thetext>Comment on attachment 281668
patch

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

r=me with comments.

&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:305
&gt; +    auto branchToSlowPath = jit.patchableBranch8(
&gt; +        CCallHelpers::NotEqual,
&gt; +        CCallHelpers::Address(base, JSCell::typeInfoTypeOffset()),
&gt; +        CCallHelpers::TrustedImm32(StringType));

I think it would be helpful here to put a comment saying the the patchableBranch is used to avoid branch compaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447857</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-03 18:17:47 -0700</bug_when>
    <thetext>Are you planning landing this patch? I think InlinedAccessCase for StringLength is profitable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447864</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-03 18:46:46 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; Are you planning landing this patch? I think InlinedAccessCase for
&gt; StringLength is profitable.

I forgot about this! I&apos;ll rebase and land it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454734</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-28 23:15:46 -0700</bug_when>
    <thetext>Will try to get this landed tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455081</commentid>
    <comment_count>6</comment_count>
      <attachid>348456</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-29 18:08:55 -0700</bug_when>
    <thetext>Created attachment 348456
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455083</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-29 18:10:27 -0700</bug_when>
    <thetext>Attachment 348456 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/InlineAccess.cpp:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/InlineAccess.cpp:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455099</commentid>
    <comment_count>8</comment_count>
      <attachid>348460</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-29 18:49:26 -0700</bug_when>
    <thetext>Created attachment 348460
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455308</commentid>
    <comment_count>9</comment_count>
      <attachid>348460</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-30 11:21:42 -0700</bug_when>
    <thetext>Comment on attachment 348460
patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/InlineAccess.cpp:173
&gt; +    GPRReg base = stubInfo.baseGPR();

Nice improvement.

&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:201
&gt;  #endif

I think we can use GPRReg directly here (instead of int8_t), since they are `enum : int8_t` now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455323</commentid>
    <comment_count>10</comment_count>
      <attachid>348460</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-30 11:38:38 -0700</bug_when>
    <thetext>Comment on attachment 348460
patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:201
&gt;&gt;  #endif
&gt; 
&gt; I think we can use GPRReg directly here (instead of int8_t), since they are `enum : int8_t` now!

Let&apos;s do this as a follow up for all these fields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455326</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-30 11:39:55 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #10)
&gt; Comment on attachment 348460 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348460&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:201
&gt; &gt;&gt;  #endif
&gt; &gt; 
&gt; &gt; I think we can use GPRReg directly here (instead of int8_t), since they are `enum : int8_t` now!
&gt; 
&gt; Let&apos;s do this as a follow up for all these fields.

https://bugs.webkit.org/show_bug.cgi?id=189166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455340</commentid>
    <comment_count>12</comment_count>
      <attachid>348460</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-08-30 12:06:25 -0700</bug_when>
    <thetext>Comment on attachment 348460
patch

FWIW, r=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455360</commentid>
    <comment_count>13</comment_count>
      <attachid>348460</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-30 12:47:06 -0700</bug_when>
    <thetext>Comment on attachment 348460
patch

Clearing flags on attachment: 348460

Committed r235517: &lt;https://trac.webkit.org/changeset/235517&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455361</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-30 12:47:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455650</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-31 04:49:13 -0700</bug_when>
    <thetext>This patch broke my ARMv7 linux WPE build:

Source/JavaScriptCore/bytecode/InlineAccess.cpp:53:13: error: &apos;class JSC::CCallHelpers&apos; has no member named &apos;patchableBranch8&apos;; did you mean &apos;patchableBranch32&apos;?
         jit.patchableBranch8(
             ^~~~~~~~~~~~~~~~
             patchableBranch32
In file included from DerivedSources/JavaScriptCore/unified-sources/UnifiedSource29.cpp:5:0:
Source/JavaScriptCore/bytecode/InlineAccess.cpp: In static member function &apos;static bool JSC::InlineAccess::generateStringLength(JSC::StructureStubInfo&amp;)&apos;:
/home/phil/workspace/sources/wpewebkit/Source/JavaScriptCore/bytecode/InlineAccess.cpp:298:33: error: &apos;class JSC::CCallHelpers&apos; has no member named &apos;patchableBranch8&apos;; did you mean &apos;patchableBranch32&apos;?
     auto branchToSlowPath = jit.patchableBranch8(
                                 ^~~~~~~~~~~~~~~~
                                 patchableBranch32</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455651</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-31 04:49:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/43935465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455656</commentid>
    <comment_count>17</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2018-08-31 05:06:16 -0700</bug_when>
    <thetext>The JSCOnly ARMv7 build bots also expose this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455657</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-31 05:06:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/43935775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455726</commentid>
    <comment_count>19</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-08-31 09:55:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/43935465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455731</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-08-31 10:07:30 -0700</bug_when>
    <thetext>ARMv7 speculative build fix landed in r235557: &lt;https://trac.webkit.org/r235557&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281668</attachid>
            <date>2016-06-20 12:56:09 -0700</date>
            <delta_ts>2018-08-29 18:08:55 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>14630</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyMjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE2LTA2LTIwICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZUFjY2VzcyBzaG91bGQgZG8gU3RyaW5nTGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5MTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgSW5saW5lQWNj
ZXNzIHRvIHN1cHBvcnQgU3RyaW5nTGVuZ3RoLgorICAgICAgICBUaGlzIHBhdGNoIGFsc28gZml4
ZXMgQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvCisgICAgICAgIHRvIHN1cHBvcnQg
QXJyYXlMZW5ndGggYW5kIFN0cmluZ0xlbmd0aC4gSSBmb3Jnb3QgdG8gaW1wbGVtZW50CisgICAg
ICAgIHRoaXMgZm9yIEFycmF5TGVuZ3RoIGluIG15IHByZXZpb3VzIHBhdGNoLiBTdXBwb3J0aW5n
IFN0cmluZ0xlbmd0aAorICAgICAgICBpcyBhIG5hdHVyYWwgZXh0ZW5zaW9uIG9mIHRoZSBJbmxp
bmVBY2Nlc3MgbWFjaGluZXJ5LgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2gzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjpwYXRjaGFibGVCcmFuY2g4KToKKyAgICAgICAg
KiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpwYXRjaGFibGVCcmFuY2hQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTY0OjpwYXRjaGFibGVCcmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJBUk02NDo6cGF0Y2hhYmxlQnJhbmNoVGVzdDMyKToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3
OjpwYXRjaGFibGVCcmFuY2hQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3
OjpwYXRjaGFibGVCcmFuY2g4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6
cGF0Y2hhYmxlQnJhbmNoVGVzdDMyKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKToKKyAg
ICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpJbmxpbmVB
Y2Nlc3M6OmR1bXBDYWNoZVNpemVzQW5kQ3Jhc2gpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nl
c3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5QWNjZXNzKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNj
ZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eVJlcGxhY2UpOgorICAgICAgICAoSlNDOjpJbmxpbmVB
Y2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgpOgorICAgICAgICAoSlNDOjpJbmxpbmVBY2Nlc3M6
OmdlbmVyYXRlU3RyaW5nTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpyZXdp
cmVTdHViQXNKdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9JbmxpbmVBY2Nlc3MuaDoKKyAgICAg
ICAgKEpTQzo6SW5saW5lQWNjZXNzOjpzaXplRm9yUHJvcGVydHlSZXBsYWNlKToKKyAgICAgICAg
KEpTQzo6SW5saW5lQWNjZXNzOjpzaXplRm9yTGVuZ3RoQWNjZXNzKToKKyAgICAgICAgKiBieXRl
Y29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkFjY2Vzc0Nhc2U6OmZy
b21TdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEFycmF5TGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmluaXRTdHJpbmdMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRSZXBsYWNlKToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OmRlcmVmKToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHVi
SW5mbzo6cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjp2YWx1ZVJlZ3Mp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YmFzZUdQUik6CisgICAgICAgICog
aml0L1JlcGF0Y2guY3BwOgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorCiAyMDE2
LTA2LTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogY29uc29sZS5wcm9maWxlIHNob3VsZCB1c2UgdGhlIG5ldyBTYW1wbGlu
ZyBQcm9maWxlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjAyMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDgsNiAr
NDQ4LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKGJy
YW5jaDMyKGNvbmQsIGFkZHJlc3MsIGltbSkpOwogICAgIH0KKworICAgIFBhdGNoYWJsZUp1bXAg
cGF0Y2hhYmxlQnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVz
cywgVHJ1c3RlZEltbTMyIGltbSkKKyAgICB7CisgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1w
KGJyYW5jaDgoY29uZCwgYWRkcmVzcywgaW1tKSk7CisgICAgfQogI2VuZGlmCiAjZW5kaWYKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTTY0LmgJKHJldmlzaW9uIDIwMjIzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcx
LDYgKzMwNzEsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1
bHQpOwogICAgIH0KIAorICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoOChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIGltbSkKKyAgICB7
CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSB0cnVlOworICAgICAgICBKdW1wIHJlc3Vs
dCA9IGJyYW5jaDgoY29uZCwgbGVmdCwgaW1tKTsKKyAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJs
ZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gUGF0Y2hhYmxlSnVtcChyZXN1bHQpOworICAgIH0K
KwogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIo
LTEpKQogICAgIHsKICAgICAgICAgbV9tYWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
QVJNdjcuaAkocmV2aXNpb24gMjAyMjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NTEsNiArMTg1
MSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSBmYWxzZTsKICAg
ICAgICAgcmV0dXJuIFBhdGNoYWJsZUp1bXAocmVzdWx0KTsKICAgICB9CisKKyAgICBQYXRjaGFi
bGVKdW1wIHBhdGNoYWJsZUJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNz
IGxlZnQsIFRydXN0ZWRJbW0zMiBpbW0pCisgICAgeworICAgICAgICBtX21ha2VKdW1wUGF0Y2hh
YmxlID0gdHJ1ZTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2g4KGNvbmQsIGxlZnQsIGlt
bSk7CisgICAgICAgIG1fbWFrZUp1bXBQYXRjaGFibGUgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IFBhdGNoYWJsZUp1bXAocmVzdWx0KTsKKyAgICB9CiAgICAgCiAgICAgUGF0Y2hhYmxlSnVtcCBw
YXRjaGFibGVCcmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVn
LCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIw
MjIzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NDQsNiArNDQ0LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByaW50R2V0
QnlJZENhY2hlU3RhdHVzKAogICAgICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CiAg
ICAgICAgICAgICBvdXQucHJpbnRmKCJBcnJheUxlbmd0aCIpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCJTdHJpbmdMZW5ndGgiKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
bGluZUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIwMjIzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbmxpbmVBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nywx
OSBAQCB2b2lkIElubGluZUFjY2Vzczo6ZHVtcENhY2hlU2l6ZXNBbmRDcmFzCiAgICAgewogICAg
ICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSk7CiAKKyAgICAgICAgaml0LnBhdGNoYWJsZUJyYW5j
aDgoCisgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAor
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAg
ICAgICBqaXQubG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlLCBKU1N0cmluZzo6b2Zm
c2V0T2ZMZW5ndGgoKSksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgaml0LmJveEludDMy
KHJlZ3MucGF5bG9hZEdQUigpLCByZWdzKTsKKworICAgICAgICBkYXRhTG9nKCJzdHJpbmcgbGVu
Z3RoIHNpemU6ICIsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCAiXG4iKTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIENDYWxsSGVscGVycyBqaXQoJnZtKTsKKwogICAgICAg
ICBqaXQucGF0Y2hhYmxlQnJhbmNoMzIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLApAQCAtMTU5LDcgKzE3Miw3IEBAIGJvb2wgSW5saW5lQWNj
ZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUEKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSk7
CiAKLSAgICBHUFJSZWcgYmFzZSA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gu
YmFzZUdQUik7CisgICAgR1BSUmVnIGJhc2UgPSBzdHViSW5mby5iYXNlR1BSKCk7CiAgICAgSlNW
YWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52YWx1ZVJlZ3MoKTsKIAogICAgIGF1dG8gYnJhbmNo
VG9TbG93UGF0aCA9IGppdC5wYXRjaGFibGVCcmFuY2gzMigKQEAgLTIxNyw3ICsyMzAsNyBAQCBi
b29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlSCiAKICAgICBDQ2FsbEhlbHBl
cnMgaml0KCZ2bSk7CiAKLSAgICBHUFJSZWcgYmFzZSA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1
YkluZm8ucGF0Y2guYmFzZUdQUik7CisgICAgR1BSUmVnIGJhc2UgPSBzdHViSW5mby5iYXNlR1BS
KCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52YWx1ZVJlZ3MoKTsKIAogICAg
IGF1dG8gYnJhbmNoVG9TbG93UGF0aCA9IGppdC5wYXRjaGFibGVCcmFuY2gzMigKQEAgLTI2MSw3
ICsyNzQsNyBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVBcnJheUxlbmd0aChWCiAKICAg
ICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSk7CiAKLSAgICBHUFJSZWcgYmFzZSA9IHN0YXRpY19jYXN0
PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CisgICAgR1BSUmVnIGJhc2UgPSBzdHVi
SW5mby5iYXNlR1BSKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52YWx1ZVJl
Z3MoKTsKICAgICBHUFJSZWcgc2NyYXRjaCA9IGdldFNjcmF0Y2hSZWdpc3RlcihzdHViSW5mbyk7
CiAKQEAgLTI3OSw2ICsyOTIsMjYgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlQXJyYXlM
ZW5ndGgoVgogICAgIHJldHVybiBsaW5rZWRDb2RlSW5saW5lOwogfQogCitib29sIElubGluZUFj
Y2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgoVk0mIHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdCgmdm0pOworCisgICAgR1BSUmVnIGJhc2Ug
PSBzdHViSW5mby5iYXNlR1BSKCk7CisgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52
YWx1ZVJlZ3MoKTsKKworICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0aCA9IGppdC5wYXRjaGFibGVC
cmFuY2g4KAorICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICBDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoYmFzZSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCisgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAgICBqaXQubG9h
ZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHZhbHVlLnBheWxvYWRHUFIoKSk7CisgICAgaml0LmJveEludDMyKHZhbHVlLnBheWxvYWRH
UFIoKSwgdmFsdWUpOworCisgICAgYm9vbCBsaW5rZWRDb2RlSW5saW5lID0gbGlua0NvZGVJbmxp
bmUoInN0cmluZyBsZW5ndGgiLCBqaXQsIHN0dWJJbmZvLCBbJl0gKExpbmtCdWZmZXImIGxpbmtC
dWZmZXIpIHsKKyAgICAgICAgbGlua0J1ZmZlci5saW5rKGJyYW5jaFRvU2xvd1BhdGgsIHN0dWJJ
bmZvLnNsb3dQYXRoU3RhcnRMb2NhdGlvbigpKTsKKyAgICB9KTsKKyAgICByZXR1cm4gbGlua2Vk
Q29kZUlubGluZTsKK30KKwogdm9pZCBJbmxpbmVBY2Nlc3M6OnJld2lyZVN0dWJBc0p1bXAoVk0m
IHZtLCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIENvZGVMb2NhdGlvbkxhYmVsIHRhcmdl
dCkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0KCZ2bSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFjY2Vzcy5oCShyZXZpc2lvbiAyMDIyMzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgLy8gVGhp
cyBpcyB0aGUgbWF4aW11bSBiZXR3ZWVuIGFycmF5IGFuZCBzdHJpbmcgbGVuZ3RoIGFjY2VzcyBz
aXplcy4KICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBzaXplRm9yTGVuZ3RoQWNjZXNzKCkK
ICAgICB7CiAjaWYgQ1BVKFg4Nl82NCkKQEAgLTEwMywxMyArMTA0LDE0IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZQcm9wZXJ0eVJlcGxhY2UoVk0mLCBTdHJ1Y3R1cmVT
dHViSW5mbyYsIFN0cnVjdHVyZSosIFByb3BlcnR5T2Zmc2V0KTsKICAgICBzdGF0aWMgYm9vbCBp
c0NhY2hlYWJsZUFycmF5TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwogICAg
IHN0YXRpYyBib29sIGdlbmVyYXRlQXJyYXlMZW5ndGgoVk0mLCBTdHJ1Y3R1cmVTdHViSW5mbyYs
IEpTQXJyYXkqKTsKKyAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVN0cmluZ0xlbmd0aChWTSYsIFN0
cnVjdHVyZVN0dWJJbmZvJik7CiAgICAgc3RhdGljIHZvaWQgcmV3aXJlU3R1YkFzSnVtcChWTSYs
IFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWwpOwogCiAgICAgLy8gVGhpcyBp
cyBoZWxwZnVsIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNpemUgb2YgYW4gSUMgb24KICAgICAvLyB2
YXJpb3VzIHBsYXRmb3Jtcy4gV2hlbiBhZGRpbmcgYSBuZXcgdHlwZSBvZiBJQywgaW1wbGVtZW50
CiAgICAgLy8gaXRzIHBsYWNlaG9sZGVyIGNvZGUgaGVyZSwgYW5kIGxvZyB0aGUgc2l6ZS4gVGhh
dCB3YXkgd2UKICAgICAvLyBjYW4gaW50ZWxsaWdlbnRseSBjaG9vc2Ugc2l6ZXMgb24gdmFyaW91
cyBwbGF0Zm9ybXMuCi0gICAgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGR1bXBDYWNoZVNp
emVzQW5kQ3Jhc2goVk0mKTsKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0YXRpYyB2b2lk
IGR1bXBDYWNoZVNpemVzQW5kQ3Jhc2goVk0mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBo
aWNBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDIyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNiAr
MzY1LDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBBY2Nlc3NDYXNlOjoKICAgICAg
ICAgcmV0dXJuIHJlcGxhY2UoCiAgICAgICAgICAgICB2bSwgb3duZXIsIHN0dWJJbmZvLnUuYnlJ
ZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSwgc3R1YkluZm8udS5ieUlkU2VsZi5vZmZz
ZXQpOwogCisgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3RoOgorICAgICAgICByZXR1cm4g
Z2V0TGVuZ3RoKHZtLCBvd25lciwgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGgpOworCisgICAgY2Fz
ZSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0aDoKKyAgICAgICAgcmV0dXJuIGdldExlbmd0aCh2bSwg
b3duZXIsIEFjY2Vzc0Nhc2U6OlN0cmluZ0xlbmd0aCk7CisKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJKHJldmlzaW9uIDIwMjIzMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDExIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86
OmluaXRBcnJheUxlbmd0aCgKICAgICBjYWNoZVR5cGUgPSBDYWNoZVR5cGU6OkFycmF5TGVuZ3Ro
OwogfQogCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0U3RyaW5nTGVuZ3RoKCkKK3sKKyAg
ICBjYWNoZVR5cGUgPSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0aDsKK30KKwogdm9pZCBTdHJ1Y3R1
cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRSZXBsYWNlKENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1
Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKICAg
ICBjYWNoZVR5cGUgPSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBsYWNlOwpAQCAtOTMsNiArOTgsNyBA
QCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjpkZXJlZigpCiAgICAgY2FzZSBDYWNoZVR5cGU6Okdl
dEJ5SWRTZWxmOgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKICAgICBjYXNl
IENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CisgICAgY2FzZSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0
aDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA5LDYgKzExNSw3IEBAIHZvaWQgU3Ry
dWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoKQogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlk
U2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CiAgICAgY2FzZSBDYWNo
ZVR5cGU6OkFycmF5TGVuZ3RoOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2NSw2ICsyNzIsNyBAQCBib29sIFN0cnVjdHVy
ZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0CiAgICAgc3dpdGNoIChjYWNoZVR5cGUpIHsKICAg
ICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3Ro
OgorICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6
UHV0QnlJZFJlcGxhY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMjAyMjMxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDcgKzU4LDggQEAgZW51bSBjbGFzcyBDYWNoZVR5cGUgOiBpbnQ4X3QgewogICAgIEdl
dEJ5SWRTZWxmLAogICAgIFB1dEJ5SWRSZXBsYWNlLAogICAgIFN0dWIsCi0gICAgQXJyYXlMZW5n
dGgKKyAgICBBcnJheUxlbmd0aCwKKyAgICBTdHJpbmdMZW5ndGgKIH07CiAKIGNsYXNzIFN0cnVj
dHVyZVN0dWJJbmZvIHsKQEAgLTcwLDYgKzcxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbml0
R2V0QnlJZFNlbGYoQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCk7CiAgICAgdm9pZCBpbml0QXJyYXlMZW5ndGgoKTsKKyAgICB2b2lkIGlu
aXRTdHJpbmdMZW5ndGgoKTsKICAgICB2b2lkIGluaXRQdXRCeUlkUmVwbGFjZShDb2RlQmxvY2sq
LCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2
b2lkIGluaXRTdHViKENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxQb2x5bW9ycGhpY0FjY2Vz
cz4pOwogCkBAIC0xOTcsNiArMTk5LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdQUlJlZz4ocGF0Y2gudmFsdWVHUFIpKTsKICAgICB9CiAKKyAgICBHUFJSZWcgYmFzZUdQ
UigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R1BSUmVnPihwYXRj
aC5iYXNlR1BSKTsKKyAgICB9CisKIAogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZTsKICAgICBD
YWNoZVR5cGUgY2FjaGVUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBh
dGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2gu
Y3BwCShyZXZpc2lvbiAyMDIyMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0
Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDYgQEAgc3RhdGljIElubGluZUNh
Y2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoKSB7CiAgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkg
ewogICAgICAgICAgICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0
Ci0gICAgICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQogICAgICAg
ICAgICAgICAgICYmIElubGluZUFjY2Vzczo6aXNDYWNoZWFibGVBcnJheUxlbmd0aChzdHViSW5m
bywganNDYXN0PEpTQXJyYXkqPihiYXNlVmFsdWUpKSkgewogCiAgICAgICAgICAgICAgICAgYm9v
bCBnZW5lcmF0ZWRDb2RlSW5saW5lID0gSW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3Ro
KCpjb2RlQmxvY2stPnZtKCksIHN0dWJJbmZvLCBqc0Nhc3Q8SlNBcnJheSo+KGJhc2VWYWx1ZSkp
OwpAQCAtMTY3LDkgKzE2NiwxOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVH
ZXRCeUlECiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNl
OjpnZXRMZW5ndGgodm0sIGNvZGVCbG9jaywgQWNjZXNzQ2FzZTo6QXJyYXlMZW5ndGgpOwotICAg
ICAgICB9IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSkKKyAgICAgICAgfSBlbHNlIGlm
IChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby5jYWNo
ZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldCkgeworICAgICAgICAgICAgICAgIGJvb2wgZ2VuZXJh
dGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgoKmNvZGVC
bG9jay0+dm0oKSwgc3R1YkluZm8pOworICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0ZWRDb2Rl
SW5saW5lKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1
YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJ
ZEZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAgICAgICAgICAgc3R1YkluZm8uaW5pdFN0cmlu
Z0xlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbmV3Q2FzZSA9
IEFjY2Vzc0Nhc2U6OmdldExlbmd0aCh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpTdHJpbmdM
ZW5ndGgpOwotICAgICAgICBlbHNlIGlmIChEaXJlY3RBcmd1bWVudHMqIGFyZ3VtZW50cyA9IGpz
RHluYW1pY0Nhc3Q8RGlyZWN0QXJndW1lbnRzKj4oYmFzZVZhbHVlKSkgeworICAgICAgICB9IGVs
c2UgaWYgKERpcmVjdEFyZ3VtZW50cyogYXJndW1lbnRzID0ganNEeW5hbWljQ2FzdDxEaXJlY3RB
cmd1bWVudHMqPihiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIG92
ZXJyaWRlcywgdGhlbiB3ZSBjYW4gaGFuZGxlIHRoaXMgYXMgYSBub3JtYWwgcHJvcGVydHkgbG9h
ZCEgR3VhcmRpbmcKICAgICAgICAgICAgIC8vIHRoaXMgd2l0aCBzdWNoIGEgY2hlY2sgZW5hYmxl
cyB1cyB0byBhZGQgYW4gSUMgY2FzZSBmb3IgdGhhdCBsb2FkIGlmIG5lZWRlZC4KICAgICAgICAg
ICAgIGlmICghYXJndW1lbnRzLT5vdmVycm9kZVRoaW5ncygpKQo=
</data>
<flag name="review"
          id="305492"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348456</attachid>
            <date>2018-08-29 18:08:55 -0700</date>
            <delta_ts>2018-08-29 18:49:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>14391</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1NDkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE4LTA4LTI5ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZUFjY2VzcyBzaG91bGQgZG8gU3RyaW5nTGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5MTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgSW5saW5lQWNj
ZXNzIHRvIHN1cHBvcnQgU3RyaW5nTGVuZ3RoLiBUaGlzIHBhdGNoIGFsc28KKyAgICAgICAgZml4
ZXMgQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvIHRvIHN1cHBvcnQgQXJyYXlMZW5n
dGggYW5kIFN0cmluZ0xlbmd0aC4KKyAgICAgICAgSSBmb3Jnb3QgdG8gaW1wbGVtZW50IHRoaXMg
Zm9yIEFycmF5TGVuZ3RoIGluIHRoZSBpbml0aWFsIElubGluZUFjY2VzcworICAgICAgICBpbXBs
ZW1lbnRhdGlvbi4gIFN1cHBvcnRpbmcgU3RyaW5nTGVuZ3RoIGlzIGEgbmF0dXJhbCBleHRlbnNp
b24gb2YgdGhlCisgICAgICAgIElubGluZUFjY2VzcyBtYWNoaW5lcnkuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OnBhdGNoYWJsZUJyYW5jaDgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnBhdGNoYWJsZUJyYW5j
aDgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpkdW1wQ2FjaGVTaXplc0FuZENyYXNo
KToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUFjY2Vz
cyk6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6Oklu
bGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6
SW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SW5saW5l
QWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vz
czo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vz
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OmluaXRTdHJpbmdMZW5ndGgpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVy
ZWYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAg
ICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU3R1YkluZm86OmJhc2VHUFIgY29uc3QpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKwogMjAxOC0wOC0yOSAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIzNTQzMiBhbmQgcjIzNTQzNi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIzNTQ3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUwLDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQYXRj
aGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJlZywgaW1tKSk7CiAgICAgfQogCisgICAgUGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVCcmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFBhdGNo
YWJsZUp1bXAoYnJhbmNoOChjb25kLCBhZGRyZXNzLCBpbW0pKTsKKyAgICB9CisKICAgICBQYXRj
aGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAoYnJhbmNoMzIoY29uZCwgYWRkcmVzcywgaW1tKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAkocmV2aXNpb24gMjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzODgsNiArMzM4OCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CiAgICAgfQog
CisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgaW1tKQorICAgIHsKKyAgICAgICAgbV9t
YWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoOChj
b25kLCBsZWZ0LCBpbW0pOworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CisgICAgfQorCiAgICAgUGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVCcmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewog
ICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDIzNTQ3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIxLDYgKzEyMSwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CiAgICAgICAgIHJldHVy
biBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBJbkhpdCwgc3R1YkluZm8udS5ieUlkU2Vs
Zi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSk7
CiAKKyAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CisgICAgICAgIHJldHVybiBBY2Nl
c3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0aCk7CisKKyAg
ICBjYXNlIENhY2hlVHlwZTo6U3RyaW5nTGVuZ3RoOgorICAgICAgICByZXR1cm4gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKHZtLCBvd25lciwgQWNjZXNzQ2FzZTo6U3RyaW5nTGVuZ3RoKTsKKwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ3LDYgKzQ0Nyw5IEBAIHZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEdldEJ5SWQKICAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVu
Z3RoOgogICAgICAgICAgICAgb3V0LnByaW50ZigiQXJyYXlMZW5ndGgiKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3RyaW5nTGVuZ3RoOgorICAgICAgICAg
ICAgb3V0LnByaW50ZigiU3RyaW5nTGVuZ3RoIik7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMzU0NzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsMTggQEAgdm9pZCBJbmxpbmVBY2Nlc3M6OmR1bXBDYWNoZVNpemVzQW5kQ3JhcwogI2Vs
c2UKICAgICBKU1ZhbHVlUmVncyByZWdzKGJhc2UpOwogI2VuZGlmCisgICAgeworICAgICAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKKyAKKyAgICAgICAgaml0LnBhdGNoYWJsZUJyYW5jaDgoCisgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6Ok5vdEVxdWFsLAorICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
OjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAorICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAgICAgICBqaXQu
bG9hZDMyKENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHJlZ3MucGF5bG9hZEdQUigpKTsKKyAgICAgICAgaml0LmJveEludDMyKHJlZ3MucGF5
bG9hZEdQUigpLCByZWdzKTsKKworICAgICAgICBkYXRhTG9nKCJzdHJpbmcgbGVuZ3RoIHNpemU6
ICIsIGppdC5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpLCAiXG4iKTsKKyAgICB9CiAK
ICAgICB7CiAgICAgICAgIENDYWxsSGVscGVycyBqaXQ7CkBAIC0xNTgsNyArMTcwLDcgQEAgYm9v
bCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5QQogewogICAgIENDYWxsSGVscGVy
cyBqaXQ7CiAgICAgCi0gICAgR1BSUmVnIGJhc2UgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJ
bmZvLnBhdGNoLmJhc2VHUFIpOworICAgIEdQUlJlZyBiYXNlID0gc3R1YkluZm8uYmFzZUdQUigp
OwogICAgIEpTVmFsdWVSZWdzIHZhbHVlID0gc3R1YkluZm8udmFsdWVSZWdzKCk7CiAKICAgICBh
dXRvIGJyYW5jaFRvU2xvd1BhdGggPSBqaXQucGF0Y2hhYmxlQnJhbmNoMzIoCkBAIC0xODUsNyAr
MTk3LDcgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRlU2VsZlByb3BlcnR5QQogQUxXQVlT
X0lOTElORSBzdGF0aWMgR1BSUmVnIGdldFNjcmF0Y2hSZWdpc3RlcihTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8pCiB7CiAgICAgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yIGFsbG9jYXRvcihz
dHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJzKTsKLSAgICBhbGxvY2F0b3IubG9jayhzdGF0aWNf
Y2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpKTsKKyAgICBhbGxvY2F0b3IubG9j
ayhzdHViSW5mby5iYXNlR1BSKCkpOwogICAgIGFsbG9jYXRvci5sb2NrKHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpKTsKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQog
ICAgIGFsbG9jYXRvci5sb2NrKHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFz
ZVRhZ0dQUikpOwpAQCAtMjE2LDcgKzIyOCw3IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0
ZVNlbGZQcm9wZXJ0eVIKIAogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBHUFJSZWcgYmFz
ZSA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CisgICAgR1BS
UmVnIGJhc2UgPSBzdHViSW5mby5iYXNlR1BSKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBz
dHViSW5mby52YWx1ZVJlZ3MoKTsKIAogICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0aCA9IGppdC5w
YXRjaGFibGVCcmFuY2gzMigKQEAgLTI1OCw3ICsyNzAsNyBAQCBib29sIElubGluZUFjY2Vzczo6
Z2VuZXJhdGVBcnJheUxlbmd0aChTCiAKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgR1BS
UmVnIGJhc2UgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpOwor
ICAgIEdQUlJlZyBiYXNlID0gc3R1YkluZm8uYmFzZUdQUigpOwogICAgIEpTVmFsdWVSZWdzIHZh
bHVlID0gc3R1YkluZm8udmFsdWVSZWdzKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2ggPSBnZXRTY3Jh
dGNoUmVnaXN0ZXIoc3R1YkluZm8pOwogCkBAIC0yNzYsMTEgKzI4OCwzMiBAQCBib29sIElubGlu
ZUFjY2Vzczo6Z2VuZXJhdGVBcnJheUxlbmd0aChTCiAgICAgcmV0dXJuIGxpbmtlZENvZGVJbmxp
bmU7CiB9CiAKK2Jvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVN0cmluZ0xlbmd0aChTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8pCit7CisgICAgQ0NhbGxIZWxwZXJzIGppdDsKKworICAgIEdQ
UlJlZyBiYXNlID0gc3R1YkluZm8uYmFzZUdQUigpOworICAgIEpTVmFsdWVSZWdzIHZhbHVlID0g
c3R1YkluZm8udmFsdWVSZWdzKCk7CisKKyAgICBhdXRvIGJyYW5jaFRvU2xvd1BhdGggPSBqaXQu
cGF0Y2hhYmxlQnJhbmNoOCgKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKKyAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0
KCkpLAorICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSk7Cisg
ICAgaml0LmxvYWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZSwgSlNTdHJpbmc6Om9mZnNl
dE9mTGVuZ3RoKCkpLCB2YWx1ZS5wYXlsb2FkR1BSKCkpOworICAgIGppdC5ib3hJbnQzMih2YWx1
ZS5wYXlsb2FkR1BSKCksIHZhbHVlKTsKKworICAgIGJvb2wgbGlua2VkQ29kZUlubGluZSA9IGxp
bmtDb2RlSW5saW5lKCJzdHJpbmcgbGVuZ3RoIiwgaml0LCBzdHViSW5mbywgWyZdIChMaW5rQnVm
ZmVyJiBsaW5rQnVmZmVyKSB7CisgICAgICAgIGxpbmtCdWZmZXIubGluayhicmFuY2hUb1Nsb3dQ
YXRoLCBzdHViSW5mby5zbG93UGF0aFN0YXJ0TG9jYXRpb24oKSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGxpbmtlZENvZGVJbmxpbmU7Cit9CisKKwogYm9vbCBJbmxpbmVBY2Nlc3M6OmdlbmVyYXRl
U2VsZkluQWNjZXNzKFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIEdQUlJlZyBiYXNlID0gc3Rh
dGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKKyAgICBHUFJSZWcgYmFz
ZSA9IHN0dWJJbmZvLmJhc2VHUFIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1ZSA9IHN0dWJJbmZv
LnZhbHVlUmVncygpOwogCiAgICAgYXV0byBicmFuY2hUb1Nsb3dQYXRoID0gaml0LnBhdGNoYWJs
ZUJyYW5jaDMyKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lubGluZUFj
Y2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Jbmxp
bmVBY2Nlc3MuaAkocmV2aXNpb24gMjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lubGluZUFjY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4Nyw3IEBAIHB1
YmxpYzoKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIGNvbnN0ZXhwciB3aGVuIEdDQyBpcyBhYmxl
IHRvIGNvbXBpbGUgc3RkOjptYXgoKSBpbnNpZGUgYSBjb25zdGV4cHIgZnVuY3Rpb24uCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTQzNgogICAgIC8v
Ci0gICAgLy8gVGhpcyBpcyB0aGUgbWF4aW11bSBiZXR3ZWVuIHRoZSBzaXplIGZvciBhcnJheSBs
ZW5ndGggYWNjZXNzLCBhbmQgdGhlIHNpemUgZm9yIHJlZ3VsYXIgc2VsZiBhY2Nlc3MuCisgICAg
Ly8gVGhpcyBpcyB0aGUgbWF4aW11bSBiZXR3ZWVuIGFycmF5IGxlbmd0aCwgc3RyaW5nIGxlbmd0
aCwgYW5kIHJlZ3VsYXIgc2VsZiBhY2Nlc3Mgc2l6ZXMuCiAgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgc2l6ZV90IHNpemVGb3JMZW5ndGhBY2Nlc3MoKQogICAgIHsKICNpZiBDUFUoWDg2XzY0KQpA
QCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZUFycmF5
TGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJiwgSlNBcnJheSopOwogICAgIHN0YXRpYyB2b2lkIHJl
d2lyZVN0dWJBc0p1bXAoU3RydWN0dXJlU3R1YkluZm8mLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4pOwogICAgIHN0YXRpYyBib29sIGdlbmVyYXRlU2VsZkluQWNjZXNz
KFN0cnVjdHVyZVN0dWJJbmZvJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIGJvb2wgZ2VuZXJh
dGVTdHJpbmdMZW5ndGgoU3RydWN0dXJlU3R1YkluZm8mKTsKIAogICAgIC8vIFRoaXMgaXMgaGVs
cGZ1bCB3aGVuIGRldGVybWluaW5nIHRoZSBzaXplIG9mIGFuIElDIG9uCiAgICAgLy8gdmFyaW91
cyBwbGF0Zm9ybXMuIFdoZW4gYWRkaW5nIGEgbmV3IHR5cGUgb2YgSUMsIGltcGxlbWVudApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCShyZXZpc2lvbiAyMzU0NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODEsNyArMzgx
LDcgQEAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCBQb2x5bW9ycGhpY0FjY2VzcwogICAgIHN0YXRl
LnN0dWJJbmZvID0gJnN0dWJJbmZvOwogICAgIHN0YXRlLmlkZW50ID0gJmlkZW50OwogICAgIAot
ICAgIHN0YXRlLmJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJh
c2VHUFIpOworICAgIHN0YXRlLmJhc2VHUFIgPSBzdHViSW5mby5iYXNlR1BSKCk7CiAgICAgc3Rh
dGUudGhpc0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudGhpc0dQUik7
CiAgICAgc3RhdGUudmFsdWVSZWdzID0gc3R1YkluZm8udmFsdWVSZWdzKCk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZv
LmNwcAkocmV2aXNpb24gMjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTEgQEAg
dm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdEFycmF5TGVuZ3RoKAogICAgIGNhY2hlVHlwZSA9
IENhY2hlVHlwZTo6QXJyYXlMZW5ndGg7CiB9CiAKK3ZvaWQgU3RydWN0dXJlU3R1YkluZm86Omlu
aXRTdHJpbmdMZW5ndGgoKQoreworICAgIGNhY2hlVHlwZSA9IENhY2hlVHlwZTo6U3RyaW5nTGVu
Z3RoOworfQorCiB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0UHV0QnlJZFJlcGxhY2UoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVy
dHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGNhY2hlVHlwZSA9IENhY2hlVHlwZTo6UHV0QnlJZFJl
cGxhY2U7CkBAIC0xMDIsNiArMTA3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVyZWYo
KQogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKICAgICBjYXNlIENhY2hlVHlw
ZTo6SW5CeUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CisgICAgY2Fz
ZSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0aDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTE5LDYgKzEyNSw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmFib3V0VG9EaWUoKQogICAg
IGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKICAgICBjYXNlIENhY2hlVHlwZTo6SW5C
eUlkU2VsZjoKICAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CisgICAgY2FzZSBDYWNo
ZVR5cGU6OlN0cmluZ0xlbmd0aDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjkyLDYg
KzI5OSw3IEBAIGJvb2wgU3RydWN0dXJlU3R1YkluZm86OnByb3BhZ2F0ZVRyYW5zaXQKICAgICBz
d2l0Y2ggKGNhY2hlVHlwZSkgewogICAgIGNhc2UgQ2FjaGVUeXBlOjpVbnNldDoKICAgICBjYXNl
IENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CisgICAgY2FzZSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0
aDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDYWNoZVR5cGU6OkdldEJ5SWRTZWxm
OgogICAgIGNhc2UgQ2FjaGVUeXBlOjpQdXRCeUlkUmVwbGFjZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lv
biAyMzU0NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsOCBAQCBlbnVtIGNsYXNzIENhY2hl
VHlwZSA6IGludDhfdCB7CiAgICAgUHV0QnlJZFJlcGxhY2UsCiAgICAgSW5CeUlkU2VsZiwKICAg
ICBTdHViLAotICAgIEFycmF5TGVuZ3RoCisgICAgQXJyYXlMZW5ndGgsCisgICAgU3RyaW5nTGVu
Z3RoCiB9OwogCiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbyB7CkBAIC03Myw2ICs3NCw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgaW5pdEdldEJ5SWRTZWxmKENvZGVCbG9jayosIFN0cnVjdHVyZSog
YmFzZU9iamVjdFN0cnVjdHVyZSwgUHJvcGVydHlPZmZzZXQpOwogICAgIHZvaWQgaW5pdEFycmF5
TGVuZ3RoKCk7CisgICAgdm9pZCBpbml0U3RyaW5nTGVuZ3RoKCk7CiAgICAgdm9pZCBpbml0UHV0
QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiwgU3RydWN0dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQ
cm9wZXJ0eU9mZnNldCk7CiAgICAgdm9pZCBpbml0SW5CeUlkU2VsZihDb2RlQmxvY2sqLCBTdHJ1
Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKIApAQCAtMTk5LDYg
KzIwMSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9IHBhdGNoOwogCisgICAgR1BSUmVnIGJh
c2VHUFIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdQUlJlZz4o
cGF0Y2guYmFzZUdQUik7CisgICAgfQorCiAgICAgQ29kZUxvY2F0aW9uQ2FsbDxKU0ludGVybmFs
UHRyVGFnPiBzbG93UGF0aENhbGxMb2NhdGlvbigpIHsgcmV0dXJuIHBhdGNoLnN0YXJ0LmNhbGxB
dE9mZnNldDxKU0ludGVybmFsUHRyVGFnPihwYXRjaC5kZWx0YUZyb21TdGFydFRvU2xvd1BhdGhD
YWxsTG9jYXRpb24pOyB9CiAgICAgQ29kZUxvY2F0aW9uTGFiZWw8SlNJbnRlcm5hbFB0clRhZz4g
ZG9uZUxvY2F0aW9uKCkgeyByZXR1cm4gcGF0Y2guc3RhcnQubGFiZWxBdE9mZnNldDxKU0ludGVy
bmFsUHRyVGFnPihwYXRjaC5pbmxpbmVTaXplKTsgfQogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpJ
VFN0dWJSb3V0aW5lUHRyVGFnPiBzbG93UGF0aFN0YXJ0TG9jYXRpb24oKSB7IHJldHVybiBwYXRj
aC5zdGFydC5sYWJlbEF0T2Zmc2V0KHBhdGNoLmRlbHRhRnJvbVN0YXJ0VG9TbG93UGF0aFN0YXJ0
KTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAy
MzU0NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTUsOCArMjE1LDE4IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlD
YWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBuZXdDYXNl
ID0gQWNjZXNzQ2FzZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OkFycmF5TGVu
Z3RoKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNKU1N0cmluZyhiYXNlQ2VsbCkpCisgICAg
ICAgICAgICB9IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZUNlbGwpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHN0dWJJbmZvLmNhY2hlVHlwZSA9PSBDYWNoZVR5cGU6OlVuc2V0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGJvb2wgZ2VuZXJhdGVkQ29kZUlubGluZSA9IElubGluZUFjY2Vzczo6Z2Vu
ZXJhdGVTdHJpbmdMZW5ndGgoc3R1YkluZm8pOworICAgICAgICAgICAgICAgICAgICBpZiAoZ2Vu
ZXJhdGVkQ29kZUlubGluZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZnRsVGh1bmtBd2Fy
ZVJlcGF0Y2hDYWxsKGNvZGVCbG9jaywgc3R1YkluZm8uc2xvd1BhdGhDYWxsTG9jYXRpb24oKSwg
YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKGtpbmQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0dWJJbmZvLmluaXRTdHJpbmdMZW5ndGgoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBSZXRyeUNhY2hlTGF0ZXI7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBuZXdDYXNlID0gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKHZtLCBjb2RlQmxvY2ssIEFjY2Vzc0Nhc2U6OlN0cmluZ0xlbmd0aCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChEaXJlY3RBcmd1bWVudHMqIGFyZ3VtZW50
cyA9IGpzRHluYW1pY0Nhc3Q8RGlyZWN0QXJndW1lbnRzKj4odm0sIGJhc2VDZWxsKSkgewogICAg
ICAgICAgICAgICAgIC8vIElmIHRoZXJlIHdlcmUgb3ZlcnJpZGVzLCB0aGVuIHdlIGNhbiBoYW5k
bGUgdGhpcyBhcyBhIG5vcm1hbCBwcm9wZXJ0eSBsb2FkISBHdWFyZGluZwogICAgICAgICAgICAg
ICAgIC8vIHRoaXMgd2l0aCBzdWNoIGEgY2hlY2sgZW5hYmxlcyB1cyB0byBhZGQgYW4gSUMgY2Fz
ZSBmb3IgdGhhdCBsb2FkIGlmIG5lZWRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348460</attachid>
            <date>2018-08-29 18:49:26 -0700</date>
            <delta_ts>2018-08-30 12:47:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>14389</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM1NDkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDE4LTA4LTI5ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IElubGluZUFjY2VzcyBzaG91bGQgZG8gU3RyaW5nTGVuZ3RoCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg5MTEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGV4dGVuZHMgSW5saW5lQWNj
ZXNzIHRvIHN1cHBvcnQgU3RyaW5nTGVuZ3RoLiBUaGlzIHBhdGNoIGFsc28KKyAgICAgICAgZml4
ZXMgQWNjZXNzQ2FzZTo6ZnJvbVN0cnVjdHVyZVN0dWJJbmZvIHRvIHN1cHBvcnQgQXJyYXlMZW5n
dGggYW5kIFN0cmluZ0xlbmd0aC4KKyAgICAgICAgSSBmb3Jnb3QgdG8gaW1wbGVtZW50IHRoaXMg
Zm9yIEFycmF5TGVuZ3RoIGluIHRoZSBpbml0aWFsIElubGluZUFjY2VzcworICAgICAgICBpbXBs
ZW1lbnRhdGlvbi4gIFN1cHBvcnRpbmcgU3RyaW5nTGVuZ3RoIGlzIGEgbmF0dXJhbCBleHRlbnNp
b24gb2YgdGhlCisgICAgICAgIElubGluZUFjY2VzcyBtYWNoaW5lcnkuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6
OnBhdGNoYWJsZUJyYW5jaDgpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OnBhdGNoYWJsZUJyYW5j
aDgpOgorICAgICAgICAqIGJ5dGVjb2RlL0FjY2Vzc0Nhc2UuY3BwOgorICAgICAgICAoSlNDOjpB
Y2Nlc3NDYXNlOjpmcm9tU3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlRHVtcGVyLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5saW5lQWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpkdW1wQ2FjaGVTaXplc0FuZENyYXNo
KToKKyAgICAgICAgKEpTQzo6SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUFjY2Vz
cyk6CisgICAgICAgIChKU0M6OmdldFNjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6Oklu
bGluZUFjY2Vzczo6Z2VuZXJhdGVTZWxmUHJvcGVydHlSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6
SW5saW5lQWNjZXNzOjpnZW5lcmF0ZUFycmF5TGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SW5saW5l
QWNjZXNzOjpnZW5lcmF0ZVNlbGZJbkFjY2Vzcyk6CisgICAgICAgIChKU0M6OklubGluZUFjY2Vz
czo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0lubGluZUFjY2Vz
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcDoKKyAgICAgICAg
KEpTQzo6UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86
OmluaXRTdHJpbmdMZW5ndGgpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6ZGVy
ZWYpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6YWJvdXRUb0RpZSk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyk6CisgICAg
ICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU3R1YkluZm86OmJhc2VHUFIgY29uc3QpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKwogMjAxOC0wOC0yOSAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIzNTQzMiBhbmQgcjIzNTQzNi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDIzNTQ3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUwLDYgKzQ1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQYXRj
aGFibGVKdW1wKGJyYW5jaDMyKGNvbmQsIHJlZywgaW1tKSk7CiAgICAgfQogCisgICAgUGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVCcmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1tKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFBhdGNo
YWJsZUp1bXAoYnJhbmNoOChjb25kLCBhZGRyZXNzLCBpbW0pKTsKKyAgICB9CisKICAgICBQYXRj
aGFibGVKdW1wIHBhdGNoYWJsZUJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRk
cmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAgcmV0dXJuIFBh
dGNoYWJsZUp1bXAoYnJhbmNoMzIoY29uZCwgYWRkcmVzcywgaW1tKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQu
aAkocmV2aXNpb24gMjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzODgsNiArMzM4OCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CiAgICAgfQog
CisgICAgUGF0Y2hhYmxlSnVtcCBwYXRjaGFibGVCcmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgaW1tKQorICAgIHsKKyAgICAgICAgbV9t
YWtlSnVtcFBhdGNoYWJsZSA9IHRydWU7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoOChj
b25kLCBsZWZ0LCBpbW0pOworICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybiBQYXRjaGFibGVKdW1wKHJlc3VsdCk7CisgICAgfQorCiAgICAgUGF0Y2hh
YmxlSnVtcCBwYXRjaGFibGVCcmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewog
ICAgICAgICBtX21ha2VKdW1wUGF0Y2hhYmxlID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDIzNTQ3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIxLDYgKzEyMSwxMiBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gQWNj
ZXNzQ2FzZTo6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJZFNlbGY6CiAgICAgICAgIHJldHVy
biBBY2Nlc3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBJbkhpdCwgc3R1YkluZm8udS5ieUlkU2Vs
Zi5vZmZzZXQsIHN0dWJJbmZvLnUuYnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKSk7
CiAKKyAgICBjYXNlIENhY2hlVHlwZTo6QXJyYXlMZW5ndGg6CisgICAgICAgIHJldHVybiBBY2Nl
c3NDYXNlOjpjcmVhdGUodm0sIG93bmVyLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0aCk7CisKKyAg
ICBjYXNlIENhY2hlVHlwZTo6U3RyaW5nTGVuZ3RoOgorICAgICAgICByZXR1cm4gQWNjZXNzQ2Fz
ZTo6Y3JlYXRlKHZtLCBvd25lciwgQWNjZXNzQ2FzZTo6U3RyaW5nTGVuZ3RoKTsKKwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24g
MjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ3LDYgKzQ0Nyw5IEBAIHZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEdldEJ5SWQKICAgICAgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVu
Z3RoOgogICAgICAgICAgICAgb3V0LnByaW50ZigiQXJyYXlMZW5ndGgiKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENhY2hlVHlwZTo6U3RyaW5nTGVuZ3RoOgorICAgICAgICAg
ICAgb3V0LnByaW50ZigiU3RyaW5nTGVuZ3RoIik7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bmxpbmVBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMzU0NzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsMTggQEAgdm9pZCBJbmxpbmVBY2Nlc3M6OmR1bXBDYWNoZVNpemVzQW5kQ3JhcwogI2Vs
c2UKICAgICBKU1ZhbHVlUmVncyByZWdzKGJhc2UpOwogI2VuZGlmCisgICAgeworICAgICAgICBD
Q2FsbEhlbHBlcnMgaml0OworCisgICAgICAgIGppdC5wYXRjaGFibGVCcmFuY2g4KAorICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpOb3RFcXVhbCwKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6
QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKKyAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKTsKKyAgICAgICAgaml0Lmxv
YWQzMihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoYmFzZSwgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3Ro
KCkpLCByZWdzLnBheWxvYWRHUFIoKSk7CisgICAgICAgIGppdC5ib3hJbnQzMihyZWdzLnBheWxv
YWRHUFIoKSwgcmVncyk7CisKKyAgICAgICAgZGF0YUxvZygic3RyaW5nIGxlbmd0aCBzaXplOiAi
LCBqaXQubV9hc3NlbWJsZXIuYnVmZmVyKCkuY29kZVNpemUoKSwgIlxuIik7CisgICAgfQogCiAg
ICAgewogICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwpAQCAtMTU4LDcgKzE3MCw3IEBAIGJvb2wg
SW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUEKIHsKICAgICBDQ2FsbEhlbHBlcnMg
aml0OwogICAgIAotICAgIEdQUlJlZyBiYXNlID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5m
by5wYXRjaC5iYXNlR1BSKTsKKyAgICBHUFJSZWcgYmFzZSA9IHN0dWJJbmZvLmJhc2VHUFIoKTsK
ICAgICBKU1ZhbHVlUmVncyB2YWx1ZSA9IHN0dWJJbmZvLnZhbHVlUmVncygpOwogCiAgICAgYXV0
byBicmFuY2hUb1Nsb3dQYXRoID0gaml0LnBhdGNoYWJsZUJyYW5jaDMyKApAQCAtMTg1LDcgKzE5
Nyw3IEBAIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNlbGZQcm9wZXJ0eUEKIEFMV0FZU19J
TkxJTkUgc3RhdGljIEdQUlJlZyBnZXRTY3JhdGNoUmVnaXN0ZXIoU3RydWN0dXJlU3R1YkluZm8m
IHN0dWJJbmZvKQogewogICAgIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvciBhbGxvY2F0b3Ioc3R1
YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyk7Ci0gICAgYWxsb2NhdG9yLmxvY2soc3RhdGljX2Nh
c3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKSk7CisgICAgYWxsb2NhdG9yLmxvY2so
c3R1YkluZm8uYmFzZUdQUigpKTsKICAgICBhbGxvY2F0b3IubG9jayhzdGF0aWNfY2FzdDxHUFJS
ZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKSk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAg
ICBhbGxvY2F0b3IubG9jayhzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VU
YWdHUFIpKTsKQEAgLTIxNiw3ICsyMjgsNyBAQCBib29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVT
ZWxmUHJvcGVydHlSCiAKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCi0gICAgR1BSUmVnIGJhc2Ug
PSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLmJhc2VHUFIpOworICAgIEdQUlJl
ZyBiYXNlID0gc3R1YkluZm8uYmFzZUdQUigpOwogICAgIEpTVmFsdWVSZWdzIHZhbHVlID0gc3R1
YkluZm8udmFsdWVSZWdzKCk7CiAKICAgICBhdXRvIGJyYW5jaFRvU2xvd1BhdGggPSBqaXQucGF0
Y2hhYmxlQnJhbmNoMzIoCkBAIC0yNTgsNyArMjcwLDcgQEAgYm9vbCBJbmxpbmVBY2Nlc3M6Omdl
bmVyYXRlQXJyYXlMZW5ndGgoUwogCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAotICAgIEdQUlJl
ZyBiYXNlID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNlR1BSKTsKKyAg
ICBHUFJSZWcgYmFzZSA9IHN0dWJJbmZvLmJhc2VHUFIoKTsKICAgICBKU1ZhbHVlUmVncyB2YWx1
ZSA9IHN0dWJJbmZvLnZhbHVlUmVncygpOwogICAgIEdQUlJlZyBzY3JhdGNoID0gZ2V0U2NyYXRj
aFJlZ2lzdGVyKHN0dWJJbmZvKTsKIApAQCAtMjc2LDExICsyODgsMzIgQEAgYm9vbCBJbmxpbmVB
Y2Nlc3M6OmdlbmVyYXRlQXJyYXlMZW5ndGgoUwogICAgIHJldHVybiBsaW5rZWRDb2RlSW5saW5l
OwogfQogCitib29sIElubGluZUFjY2Vzczo6Z2VuZXJhdGVTdHJpbmdMZW5ndGgoU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvKQoreworICAgIENDYWxsSGVscGVycyBqaXQ7CisKKyAgICBHUFJS
ZWcgYmFzZSA9IHN0dWJJbmZvLmJhc2VHUFIoKTsKKyAgICBKU1ZhbHVlUmVncyB2YWx1ZSA9IHN0
dWJJbmZvLnZhbHVlUmVncygpOworCisgICAgYXV0byBicmFuY2hUb1Nsb3dQYXRoID0gaml0LnBh
dGNoYWJsZUJyYW5jaDgoCisgICAgICAgIENDYWxsSGVscGVyczo6Tm90RXF1YWwsCisgICAgICAg
IENDYWxsSGVscGVyczo6QWRkcmVzcyhiYXNlLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgp
KSwKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpOworICAg
IGppdC5sb2FkMzIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJhc2UsIEpTU3RyaW5nOjpvZmZzZXRP
Zkxlbmd0aCgpKSwgdmFsdWUucGF5bG9hZEdQUigpKTsKKyAgICBqaXQuYm94SW50MzIodmFsdWUu
cGF5bG9hZEdQUigpLCB2YWx1ZSk7CisKKyAgICBib29sIGxpbmtlZENvZGVJbmxpbmUgPSBsaW5r
Q29kZUlubGluZSgic3RyaW5nIGxlbmd0aCIsIGppdCwgc3R1YkluZm8sIFsmXSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlcikgeworICAgICAgICBsaW5rQnVmZmVyLmxpbmsoYnJhbmNoVG9TbG93UGF0
aCwgc3R1YkluZm8uc2xvd1BhdGhTdGFydExvY2F0aW9uKCkpOworICAgIH0pOworICAgIHJldHVy
biBsaW5rZWRDb2RlSW5saW5lOworfQorCisKIGJvb2wgSW5saW5lQWNjZXNzOjpnZW5lcmF0ZVNl
bGZJbkFjY2VzcyhTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKLSAgICBHUFJSZWcgYmFzZSA9IHN0YXRp
Y19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2guYmFzZUdQUik7CisgICAgR1BSUmVnIGJhc2Ug
PSBzdHViSW5mby5iYXNlR1BSKCk7CiAgICAgSlNWYWx1ZVJlZ3MgdmFsdWUgPSBzdHViSW5mby52
YWx1ZVJlZ3MoKTsKIAogICAgIGF1dG8gYnJhbmNoVG9TbG93UGF0aCA9IGppdC5wYXRjaGFibGVC
cmFuY2gzMigKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVBY2Nl
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5l
QWNjZXNzLmgJKHJldmlzaW9uIDIzNTQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbmxpbmVBY2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IE1ha2UgdGhpcyBjb25zdGV4cHIgd2hlbiBHQ0MgaXMgYWJsZSB0
byBjb21waWxlIHN0ZDo6bWF4KCkgaW5zaWRlIGEgY29uc3RleHByIGZ1bmN0aW9uLgogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk0MzYKICAgICAvLwot
ICAgIC8vIFRoaXMgaXMgdGhlIG1heGltdW0gYmV0d2VlbiB0aGUgc2l6ZSBmb3IgYXJyYXkgbGVu
Z3RoIGFjY2VzcywgYW5kIHRoZSBzaXplIGZvciByZWd1bGFyIHNlbGYgYWNjZXNzLgorICAgIC8v
IFRoaXMgaXMgdGhlIG1heGltdW0gYmV0d2VlbiBhcnJheSBsZW5ndGgsIHN0cmluZyBsZW5ndGgs
IGFuZCByZWd1bGFyIHNlbGYgYWNjZXNzIHNpemVzLgogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHNpemVfdCBzaXplRm9yTGVuZ3RoQWNjZXNzKCkKICAgICB7CiAjaWYgQ1BVKFg4Nl82NCkKQEAg
LTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZ2VuZXJhdGVBcnJheUxl
bmd0aChTdHJ1Y3R1cmVTdHViSW5mbyYsIEpTQXJyYXkqKTsKICAgICBzdGF0aWMgdm9pZCByZXdp
cmVTdHViQXNKdW1wKFN0cnVjdHVyZVN0dWJJbmZvJiwgQ29kZUxvY2F0aW9uTGFiZWw8SklUU3R1
YlJvdXRpbmVQdHJUYWc+KTsKICAgICBzdGF0aWMgYm9vbCBnZW5lcmF0ZVNlbGZJbkFjY2VzcyhT
dHJ1Y3R1cmVTdHViSW5mbyYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBib29sIGdlbmVyYXRl
U3RyaW5nTGVuZ3RoKFN0cnVjdHVyZVN0dWJJbmZvJik7CiAKICAgICAvLyBUaGlzIGlzIGhlbHBm
dWwgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2l6ZSBvZiBhbiBJQyBvbgogICAgIC8vIHZhcmlvdXMg
cGxhdGZvcm1zLiBXaGVuIGFkZGluZyBhIG5ldyB0eXBlIG9mIElDLCBpbXBsZW1lbnQKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAkocmV2aXNpb24gMjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDcgKzM4MSw3
IEBAIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQgUG9seW1vcnBoaWNBY2Nlc3MKICAgICBzdGF0ZS5z
dHViSW5mbyA9ICZzdHViSW5mbzsKICAgICBzdGF0ZS5pZGVudCA9ICZpZGVudDsKICAgICAKLSAg
ICBzdGF0ZS5iYXNlR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC5iYXNl
R1BSKTsKKyAgICBzdGF0ZS5iYXNlR1BSID0gc3R1YkluZm8uYmFzZUdQUigpOwogICAgIHN0YXRl
LnRoaXNHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnRoaXNHUFIpOwog
ICAgIHN0YXRlLnZhbHVlUmVncyA9IHN0dWJJbmZvLnZhbHVlUmVncygpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAJKHJldmlzaW9uIDIzNTQ3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDExIEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OmluaXRBcnJheUxlbmd0aCgKICAgICBjYWNoZVR5cGUgPSBD
YWNoZVR5cGU6OkFycmF5TGVuZ3RoOwogfQogCit2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjppbml0
U3RyaW5nTGVuZ3RoKCkKK3sKKyAgICBjYWNoZVR5cGUgPSBDYWNoZVR5cGU6OlN0cmluZ0xlbmd0
aDsKK30KKwogdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6aW5pdFB1dEJ5SWRSZXBsYWNlKENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUqIGJhc2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCkKIHsKICAgICBjYWNoZVR5cGUgPSBDYWNoZVR5cGU6OlB1dEJ5SWRSZXBs
YWNlOwpAQCAtMTAyLDYgKzEwNyw3IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OmRlcmVmKCkK
ICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CiAgICAgY2FzZSBDYWNoZVR5cGU6
OkluQnlJZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3RoOgorICAgIGNhc2Ug
Q2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEx
OSw2ICsxMjUsNyBAQCB2b2lkIFN0cnVjdHVyZVN0dWJJbmZvOjphYm91dFRvRGllKCkKICAgICBj
YXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkluQnlJ
ZFNlbGY6CiAgICAgY2FzZSBDYWNoZVR5cGU6OkFycmF5TGVuZ3RoOgorICAgIGNhc2UgQ2FjaGVU
eXBlOjpTdHJpbmdMZW5ndGg6CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI5Miw2ICsy
OTksNyBAQCBib29sIFN0cnVjdHVyZVN0dWJJbmZvOjpwcm9wYWdhdGVUcmFuc2l0CiAgICAgc3dp
dGNoIChjYWNoZVR5cGUpIHsKICAgICBjYXNlIENhY2hlVHlwZTo6VW5zZXQ6CiAgICAgY2FzZSBD
YWNoZVR5cGU6OkFycmF5TGVuZ3RoOgorICAgIGNhc2UgQ2FjaGVUeXBlOjpTdHJpbmdMZW5ndGg6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ2FjaGVUeXBlOjpHZXRCeUlkU2VsZjoK
ICAgICBjYXNlIENhY2hlVHlwZTo6UHV0QnlJZFJlcGxhY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24g
MjM1NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJ
bmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDggQEAgZW51bSBjbGFzcyBDYWNoZVR5
cGUgOiBpbnQ4X3QgewogICAgIFB1dEJ5SWRSZXBsYWNlLAogICAgIEluQnlJZFNlbGYsCiAgICAg
U3R1YiwKLSAgICBBcnJheUxlbmd0aAorICAgIEFycmF5TGVuZ3RoLAorICAgIFN0cmluZ0xlbmd0
aAogfTsKIAogY2xhc3MgU3RydWN0dXJlU3R1YkluZm8gewpAQCAtNzMsNiArNzQsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGluaXRHZXRCeUlkU2VsZihDb2RlQmxvY2sqLCBTdHJ1Y3R1cmUqIGJh
c2VPYmplY3RTdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0KTsKICAgICB2b2lkIGluaXRBcnJheUxl
bmd0aCgpOworICAgIHZvaWQgaW5pdFN0cmluZ0xlbmd0aCgpOwogICAgIHZvaWQgaW5pdFB1dEJ5
SWRSZXBsYWNlKENvZGVCbG9jayosIFN0cnVjdHVyZSogYmFzZU9iamVjdFN0cnVjdHVyZSwgUHJv
cGVydHlPZmZzZXQpOwogICAgIHZvaWQgaW5pdEluQnlJZFNlbGYoQ29kZUJsb2NrKiwgU3RydWN0
dXJlKiBiYXNlT2JqZWN0U3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCk7CiAKQEAgLTE5OSw2ICsy
MDEsMTEgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfSBwYXRjaDsKIAorICAgIEdQUlJlZyBiYXNl
R1BSKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHUFJSZWc+KHBh
dGNoLmJhc2VHUFIpOworICAgIH0KKwogICAgIENvZGVMb2NhdGlvbkNhbGw8SlNJbnRlcm5hbFB0
clRhZz4gc2xvd1BhdGhDYWxsTG9jYXRpb24oKSB7IHJldHVybiBwYXRjaC5zdGFydC5jYWxsQXRP
ZmZzZXQ8SlNJbnRlcm5hbFB0clRhZz4ocGF0Y2guZGVsdGFGcm9tU3RhcnRUb1Nsb3dQYXRoQ2Fs
bExvY2F0aW9uKTsgfQogICAgIENvZGVMb2NhdGlvbkxhYmVsPEpTSW50ZXJuYWxQdHJUYWc+IGRv
bmVMb2NhdGlvbigpIHsgcmV0dXJuIHBhdGNoLnN0YXJ0LmxhYmVsQXRPZmZzZXQ8SlNJbnRlcm5h
bFB0clRhZz4ocGF0Y2guaW5saW5lU2l6ZSk7IH0KICAgICBDb2RlTG9jYXRpb25MYWJlbDxKSVRT
dHViUm91dGluZVB0clRhZz4gc2xvd1BhdGhTdGFydExvY2F0aW9uKCkgeyByZXR1cm4gcGF0Y2gu
c3RhcnQubGFiZWxBdE9mZnNldChwYXRjaC5kZWx0YUZyb21TdGFydFRvU2xvd1BhdGhTdGFydCk7
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjM1
NDc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjE1LDggKzIxNSwxOCBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2Fj
aGVHZXRCeUlECiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9
IEFjY2Vzc0Nhc2U6OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpBcnJheUxlbmd0
aCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSlNTdHJpbmcoYmFzZUNlbGwpKQorICAgICAg
ICAgICAgfSBlbHNlIGlmIChpc0pTU3RyaW5nKGJhc2VDZWxsKSkgeworICAgICAgICAgICAgICAg
IGlmIChzdHViSW5mby5jYWNoZVR5cGUgPT0gQ2FjaGVUeXBlOjpVbnNldCkgeworICAgICAgICAg
ICAgICAgICAgICBib29sIGdlbmVyYXRlZENvZGVJbmxpbmUgPSBJbmxpbmVBY2Nlc3M6OmdlbmVy
YXRlU3RyaW5nTGVuZ3RoKHN0dWJJbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVy
YXRlZENvZGVJbmxpbmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ0bFRodW5rQXdhcmVS
ZXBhdGNoQ2FsbChjb2RlQmxvY2ssIHN0dWJJbmZvLnNsb3dQYXRoQ2FsbExvY2F0aW9uKCksIGFw
cHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihraW5kKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHViSW5mby5pbml0U3RyaW5nTGVuZ3RoKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gUmV0cnlDYWNoZUxhdGVyOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6
OmNyZWF0ZSh2bSwgY29kZUJsb2NrLCBBY2Nlc3NDYXNlOjpTdHJpbmdMZW5ndGgpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoRGlyZWN0QXJndW1lbnRzKiBhcmd1bWVudHMg
PSBqc0R5bmFtaWNDYXN0PERpcmVjdEFyZ3VtZW50cyo+KHZtLCBiYXNlQ2VsbCkpIHsKICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIG92ZXJyaWRlcywgdGhlbiB3ZSBjYW4gaGFuZGxl
IHRoaXMgYXMgYSBub3JtYWwgcHJvcGVydHkgbG9hZCEgR3VhcmRpbmcKICAgICAgICAgICAgICAg
ICAvLyB0aGlzIHdpdGggc3VjaCBhIGNoZWNrIGVuYWJsZXMgdXMgdG8gYWRkIGFuIElDIGNhc2Ug
Zm9yIHRoYXQgbG9hZCBpZiBuZWVkZWQuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>