<?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>185637</bug_id>
          
          <creation_ts>2018-05-14 18:17:59 -0700</creation_ts>
          <short_desc>UnlinkedFunctionExecutable doesn&apos;t need a parent source override field since it&apos;s only used for default class constructors</short_desc>
          <delta_ts>2018-05-17 09:17: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>Safari Technology Preview</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>ddkilzer</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>jlewis3</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1423889</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-14 18:17:59 -0700</bug_when>
    <thetext>When looking at heap sizes for JS programs, UnlinkedFunctionExecutable often takes up large portions of the heap.

Some ideas:
- It shouldn&apos;t be a cell (8 bytes)
- I don&apos;t think we really need the parentSourceOverride field since it&apos;s only used in one particular case (we can probably represent that with a bit). Then, we can probably regenerate source as needed (24 bytes)
- We have 3 different name fields. I wonder if we really need 3. 
- We use 32-bits to store parameter count. Maybe we can make that 16bit. If we do this, we should probably do it in a way that parsing such a function is an OOM in the parser.
- We store type profiling start offset, type profiling end offset, and the source length. Type profiling end offset is just typeProfilingStartOffset + length - 1. We should just compute it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1423905</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-14 19:01:32 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #0)
&gt; When looking at heap sizes for JS programs, UnlinkedFunctionExecutable often
&gt; takes up large portions of the heap.
&gt; 
&gt; Some ideas:
&gt; - It shouldn&apos;t be a cell (8 bytes)
Not gonna do this. It makes sense that it&apos;s a cell
&gt; - I don&apos;t think we really need the parentSourceOverride field since it&apos;s
&gt; only used in one particular case (we can probably represent that with a
&gt; bit). Then, we can probably regenerate source as needed (24 bytes)
&gt; - We have 3 different name fields. I wonder if we really need 3. 
&gt; - We use 32-bits to store parameter count. Maybe we can make that 16bit. If
&gt; we do this, we should probably do it in a way that parsing such a function
&gt; is an OOM in the parser.
&gt; - We store type profiling start offset, type profiling end offset, and the
&gt; source length. Type profiling end offset is just typeProfilingStartOffset +
&gt; length - 1. We should just compute it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424160</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-15 16:16:55 -0700</bug_when>
    <thetext>I&apos;m just going to remove the parentSourceOverride field. All we need is a bit to represent this. Not 24 bytes of a SourceCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424174</commentid>
    <comment_count>3</comment_count>
      <attachid>340444</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-15 16:35:02 -0700</bug_when>
    <thetext>Created attachment 340444
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424239</commentid>
    <comment_count>4</comment_count>
      <attachid>340444</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-05-15 21:49:09 -0700</bug_when>
    <thetext>Comment on attachment 340444
patch

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

r=me. Maybe it&apos;s worth adding a static_assert(sizeof(UnlinkedFunctionExecutable) &lt;= 160, &quot;Increasing the size of UnlinkedFunctionExecutable means that it increases its size class&quot;);?

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:66
&gt; +    case ConstructorKind::Extends:
&gt; +        static NeverDestroyed&lt;const String&gt; derivedConstructorCode(MAKE_STATIC_STRING_IMPL(&quot;(function (...args) { super(...args); })&quot;));
&gt; +        static LazyNeverDestroyed&lt;SourceCode&gt; result;
&gt; +        static std::once_flag onceFlag;
&gt; +        std::call_once(onceFlag, [&amp;] {
&gt; +            result.construct(makeSource(derivedConstructorCode, { }));
&gt; +        });
&gt; +        return result;

Nit: put { } around the case since you are allocating variables.

&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:77
&gt; -        return createExecutable(m_vm, makeSource(baseConstructorCode, { }), name, constructorKind, ConstructAbility::CanConstruct);
&gt; +        return createExecutable(m_vm, defaultConstructorSourceCode(constructorKind), name, constructorKind, ConstructAbility::CanConstruct);

I think you can get rid of this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424559</commentid>
    <comment_count>5</comment_count>
      <attachid>340444</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-16 17:36:53 -0700</bug_when>
    <thetext>Comment on attachment 340444
patch

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

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:66
&gt;&gt; +        return result;
&gt; 
&gt; Nit: put { } around the case since you are allocating variables.

sounds good.

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinExecutables.cpp:77
&gt;&gt; +        return createExecutable(m_vm, defaultConstructorSourceCode(constructorKind), name, constructorKind, ConstructAbility::CanConstruct);
&gt; 
&gt; I think you can get rid of this line.

good call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424561</commentid>
    <comment_count>6</comment_count>
      <attachid>340545</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-16 17:50:54 -0700</bug_when>
    <thetext>Created attachment 340545
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424615</commentid>
    <comment_count>7</comment_count>
      <attachid>340545</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-16 22:21:47 -0700</bug_when>
    <thetext>Comment on attachment 340545
patch for landing

Clearing flags on attachment: 340545

Committed r231889: &lt;https://trac.webkit.org/changeset/231889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424616</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-16 22:21:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424617</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-16 22:22:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/40321629&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424678</commentid>
    <comment_count>10</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2018-05-17 04:46:05 -0700</bug_when>
    <thetext>This caused a build failure on Windows (from an EWS build on another patch):

c:\cygwin\home\buildbot\webkit\source\javascriptcore\builtins\builtinexecutables.cpp(69): error C2220: warning treated as error - no &apos;object&apos; file generated [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\JavaScriptCore\JavaScriptCore.vcxproj]
c:\cygwin\home\buildbot\webkit\source\javascriptcore\builtins\builtinexecutables.cpp(69): warning C4715: &apos;JSC::BuiltinExecutables::defaultConstructorSourceCode&apos;: not all control paths return a value [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\JavaScriptCore\JavaScriptCore.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424750</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-17 08:57:40 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #10)
&gt; This caused a build failure on Windows (from an EWS build on another patch):
&gt; 
&gt; c:
&gt; \cygwin\home\buildbot\webkit\source\javascriptcore\builtins\builtinexecutable
&gt; s.cpp(69): error C2220: warning treated as error - no &apos;object&apos; file
&gt; generated
&gt; [C:
&gt; \cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\JavaScriptCore\JavaSc
&gt; riptCore.vcxproj]
&gt; c:
&gt; \cygwin\home\buildbot\webkit\source\javascriptcore\builtins\builtinexecutable
&gt; s.cpp(69): warning C4715:
&gt; &apos;JSC::BuiltinExecutables::defaultConstructorSourceCode&apos;: not all control
&gt; paths return a value
&gt; [C:
&gt; \cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\JavaScriptCore\JavaSc
&gt; riptCore.vcxproj]

Will attempt a commit to fix in ~5 minutes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424752</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-17 09:04:03 -0700</bug_when>
    <thetext>windows build fix:
https://trac.webkit.org/changeset/231901/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1424759</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-05-17 09:17:30 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #12)
&gt; windows build fix:
&gt; https://trac.webkit.org/changeset/231901/webkit

Fix the build after this windows attempt broke the build:
https://trac.webkit.org/changeset/231904/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340444</attachid>
            <date>2018-05-15 16:35:02 -0700</date>
            <delta_ts>2018-05-16 17:50:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>15797</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMxODE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE4LTA1LTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGRvZXNuJ3QgbmVlZCBhIHBhcmVudCBzb3VyY2Ug
b3ZlcnJpZGUgZmllbGQgc2luY2UgaXQncyBvbmx5IHVzZWQgZm9yIGRlZmF1bHQgY2xhc3MgY29u
c3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODU2MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBoYWQgdGhpcyBnZW5lcmFsIG1lY2hhbmlzbSBmb3Igb3ZlcnJpZGluZyBhbiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSdzIHBhcmVudAorICAgICAgICBzb3VyY2UgY29kZS4gSG93ZXZl
ciwgd2Ugd2VyZSBvbmx5IHVzaW5nIHRoaXMgZm9yIGRlZmF1bHQgY2xhc3MgY29uc3RydWN0b3Jz
LiBUaGVyZQorICAgICAgICBhcmUgb25seSB0d28gdHlwZXMgb2YgZGVmYXVsdCBjbGFzcyBjb25z
dHJ1Y3RvcnMuIFRoaXMgcGF0Y2ggbWFrZXMgaXQgc28gdGhhdAorICAgICAgICB3ZSBqdXN0IHN0
b3JlIHRoaXMgaW5mb3JtYXRpb24gaW5zaWRlIG9mIGEgc2luZ2xlIGJpdCwgYW5kIGFzayBmb3Ig
dGhlIHNvdXJjZQorICAgICAgICBjb2RlIGFzIG5lZWRlZCBpbnN0ZWFkIG9mIGhvbGRpbmcgaXQg
aW4gYSBudWxsYWJsZSBmaWVsZCB0aGF0IGlzIDI0IGJ5dGVzIGluIHNpemUuCisgICAgICAgIAor
ICAgICAgICBUaGlzIGJyaW5ncyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSdzIHNpemUgZG93
biBmcm9tIDE4NCBieXRlcyB0byAxNjAgYnl0ZXMuCisgICAgICAgIFRoaXMgaGFzIHRoZSBjb25z
ZXF1ZW5jZSBvZiBtYWtpbmcgaXQgYWxsb2NhdGVkIG91dCBvZiBhIDE2MCBieXRlIHNpemUgY2xh
c3MKKyAgICAgICAgaW5zdGVhZCBvZiBhIDIyNCBieXRlIHNpemUgY2xhc3MuIFRoaXMgc2hvdWxk
IGJyaW5nIGRvd24gaXRzIG1lbW9yeSBmb290cHJpbnQKKyAgICAgICAgYnkgfjQwJS4KKworICAg
ICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6CisgICAgICAgIChKU0M6OkJ1
aWx0aW5FeGVjdXRhYmxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291cmNlQ29kZSk6CisgICAgICAg
IChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKToKKyAg
ICAgICAgKEpTQzo6QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlKToKKyAgICAg
ICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNh
Y2hlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRVbmxpbmtlZEdsb2JhbEZ1bmN0
aW9uRXhlY3V0YWJsZSk6CisKIDIwMTgtMDUtMTUgIERldmluIFJvdXNzbyAgPHdlYmtpdEBkZXZp
bnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHJ1bGVycyBhbmQgZ3Vp
ZGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmNwcAkocmV2aXNpb24gMjMxODEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00MiwxOCArNDIsNDEgQEAgQnVpbHRpbkV4ZWN1dGFibGVzOjpCdWlsdGluRXhlY3V0YWJsZXMo
VgogewogfQogCitjb25zdCBTb3VyY2VDb2RlJiBCdWlsdGluRXhlY3V0YWJsZXM6OmRlZmF1bHRD
b25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCkKK3sK
KyAgICBzd2l0Y2ggKGNvbnN0cnVjdG9yS2luZCkgeworICAgIGNhc2UgQ29uc3RydWN0b3JLaW5k
OjpOb25lOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNhc2Ug
Q29uc3RydWN0b3JLaW5kOjpCYXNlOiB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxj
b25zdCBTdHJpbmc+IGJhc2VDb25zdHJ1Y3RvckNvZGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
IihmdW5jdGlvbiAoKSB7IH0pIikpOworICAgICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PFNvdXJjZUNvZGU+IHJlc3VsdDsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VG
bGFnOworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgICAg
IHJlc3VsdC5jb25zdHJ1Y3QobWFrZVNvdXJjZShiYXNlQ29uc3RydWN0b3JDb2RlLCB7IH0pKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIGNhc2UgQ29u
c3RydWN0b3JLaW5kOjpFeHRlbmRzOgorICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBkZXJpdmVkQ29uc3RydWN0b3JDb2RlKE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCIoZnVuY3Rpb24gKC4uLmFyZ3MpIHsgc3VwZXIoLi4uYXJncyk7IH0pIikpOworICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFNvdXJjZUNvZGU+IHJlc3VsdDsKKyAgICAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgWyZdIHsKKyAgICAgICAgICAgIHJlc3VsdC5jb25zdHJ1Y3QobWFrZVNvdXJjZShkZXJp
dmVkQ29uc3RydWN0b3JDb2RlLCB7IH0pKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorfQorCiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4
ZWN1dGFibGVzOjpjcmVhdGVEZWZhdWx0Q29uc3RydWN0b3IoQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKIHsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBiYXNlQ29uc3RydWN0b3JDb2RlKE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCIoZnVuY3Rpb24gKCkgeyB9KSIpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RyaW5nPiBkZXJpdmVkQ29uc3RydWN0b3JDb2RlKE1BS0VfU1RBVElDX1NUUklO
R19JTVBMKCIoZnVuY3Rpb24gKC4uLmFyZ3MpIHsgc3VwZXIoLi4uYXJncyk7IH0pIikpOwogCiAg
ICAgc3dpdGNoIChjb25zdHJ1Y3RvcktpbmQpIHsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
Tm9uZToKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6Ci0g
ICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIG1ha2VTb3VyY2UoYmFzZUNvbnN0
cnVjdG9yQ29kZSwgeyB9KSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5Db25zdHJ1Y3QpOworICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBk
ZWZhdWx0Q29uc3RydWN0b3JTb3VyY2VDb2RlKGNvbnN0cnVjdG9yS2luZCksIG5hbWUsIGNvbnN0
cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKICAgICBjYXNlIENv
bnN0cnVjdG9yS2luZDo6RXh0ZW5kczoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUo
bV92bSwgbWFrZVNvdXJjZShkZXJpdmVkQ29uc3RydWN0b3JDb2RlLCB7IH0pLCBuYW1lLCBjb25z
dHJ1Y3RvcktpbmQsIENvbnN0cnVjdEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVFeGVjdXRhYmxlKG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUo
Y29uc3RydWN0b3JLaW5kKSwgbmFtZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5Db25zdHJ1Y3QpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTczLDEwICs5Niw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBCdWlsdGluRXhlY3UKIHsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lOwogICAgIFBhcnNlckVycm9yIGVycm9yOwotICAgIGJvb2wgaXNQYXJzaW5nRGVm
YXVsdENvbnN0cnVjdG9yID0gY29uc3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZTsKLSAgICBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gaXNQYXJzaW5nRGVmYXVs
dENvbnN0cnVjdG9yID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2Vy
QnVpbHRpbk1vZGU6OkJ1aWx0aW47Ci0gICAgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCA9IGlz
UGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IFVubGlua2VkTm9ybWFsRnVuY3Rpb24gOiBVbmxp
bmtlZEJ1aWx0aW5GdW5jdGlvbjsKLSAgICBTb3VyY2VDb2RlIHBhcmVudFNvdXJjZU92ZXJyaWRl
ID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gc291cmNlIDogU291cmNlQ29kZSgpOwor
ICAgIGJvb2wgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvcktp
bmQgIT0gQ29uc3RydWN0b3JLaW5kOjpOb25lOworICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVp
bHRpbk1vZGUgPSBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA/IEpTUGFyc2VyQnVp
bHRpbk1vZGU6Ok5vdEJ1aWx0aW4gOiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluOworICAg
IFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQgPSBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1
Y3RvciA/IFVubGlua2VkTm9ybWFsRnVuY3Rpb24gOiBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFt
Tm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAog
ICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2Rl
OjpDbGFzc2ljLCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwgZXJyb3IsCkBAIC0xMDUsNyArMTI3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIEJ1aWx0aW5FeGVjdQogICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhKTsKICAgICBt
ZXRhZGF0YS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVt
bXlURFpWYXJpYWJsZXM7Ci0gICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3Vy
Y2UsIG1ldGFkYXRhLCBraW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6
OkNsYXNzaWMsIGR1bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIFdU
Rk1vdmUocGFyZW50U291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNy
ZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFy
c2VyU2NyaXB0TW9kZTo6Q2xhc3NpYywgZHVtbXlURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0
VHlwZTo6Tm9uZSwgaXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIHJldHVy
biBmdW5jdGlvbkV4ZWN1dGFibGU7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgJKHJldmlzaW9uIDIzMTgxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00OSw2ICs0OSw3IEBAIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJj
ZSgpIHsgcmV0dXIKICAgICBKU0NfRk9SRUFDSF9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5f
RVhFQ1VUQUJMRVMpCiAjdW5kZWYgRVhQT1NFX0JVSUxUSU5fU09VUkNFUwogCisgICAgc3RhdGlj
IGNvbnN0IFNvdXJjZUNvZGUmIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0
b3JLaW5kKTsKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENv
bnN0cnVjdG9yKENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAKICAg
ICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0m
LCBjb25zdCBTb3VyY2VDb2RlJiwgY29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwg
Q29uc3RydWN0QWJpbGl0eSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlz
aW9uIDIzMTgxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRl
ICJDb2RlQ2FjaGUuaCIKQEAgLTc2LDcgKzc3LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25D
b2RlQmxvY2sqIGdlbmVyYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIFNvdXJjZUNvZGUm
JiBwYXJlbnRTb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlu
a2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwg
SlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVu
dFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
KQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBhcmVudFNv
dXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIGtp
bmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2Rl
IHNjcmlwdE1vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQnVpbHRpbkRl
ZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkKICAgICAs
IG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgpIC0gcGFyZW50U291cmNlLmZpcnN0
TGluZSgpLm9uZUJhc2VkSW50KCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0TGluZSgp
IC0gbm9kZS0+Zmlyc3RMaW5lKCkpCkBAIC05NCw2ICs5NSw3IEBAIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1faXNJblN0cmljdENvbnRleHQobm9kZS0+
aXNJblN0cmljdENvbnRleHQoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMoZmFsc2Up
CiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGtpbmQgPT0gVW5saW5rZWRCdWlsdGluRnVuY3Rp
b24pCisgICAgLCBtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKGlzQnVpbHRpbkRl
ZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0YXRpY19j
YXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0b3JLaW5k
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAgICAgLCBt
X2Z1bmN0aW9uTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+ZnVuY3Rpb25Nb2RlKCkp
KQpAQCAtMTAzLDcgKzEwNSw2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtl
ZEZ1bmMKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9lY21hTmFtZShub2Rl
LT5lY21hTmFtZSgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWROYW1lKCkp
Ci0gICAgLCBtX3BhcmVudFNvdXJjZU92ZXJyaWRlKFdURk1vdmUocGFyZW50U291cmNlT3ZlcnJp
ZGUpKQogICAgICwgbV9jbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKQogICAgICwgbV9w
YXJlbnRTY29wZVREWlZhcmlhYmxlcyh2bS0+bV9jb21wYWN0VmFyaWFibGVNYXAtPmdldChwYXJl
bnRTY29wZVREWlZhcmlhYmxlcykpCiB7CkBAIC0xMTQsNiArMTE1LDcgQEAgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgIEFTU0VSVChtX3NjcmlwdE1vZGUgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9zdXBlckJp
bmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSk7CiAg
ICAgQVNTRVJUKG1fZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZXJpdmVkQ29udGV4dFR5cGUpKTsKKyAgICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1bHRDbGFz
c0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9u
ZSkpOwogfQogCiB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZXN0cm95KEpTQ2Vs
bCogY2VsbCkKQEAgLTEzMiw3ICsxMzQsNyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjp2aXNpdENoCiAKIEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGU6OmxpbmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBwYXNzZWRQYXJlbnRTb3VyY2Us
IHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIsIEludHJpbnNpYyBpbnRyaW5z
aWMpCiB7Ci0gICAgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlID0gbV9wYXJlbnRTb3Vy
Y2VPdmVycmlkZS5pc051bGwoKSA/IHBhc3NlZFBhcmVudFNvdXJjZSA6IG1fcGFyZW50U291cmNl
T3ZlcnJpZGU7CisgICAgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlID0gIW1faXNCdWls
dGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPyBwYXNzZWRQYXJlbnRTb3VyY2UgOiBCdWlsdGlu
RXhlY3V0YWJsZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JLaW5k
KCkpOwogICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHBhcmVudFNvdXJjZS5maXJzdExpbmUoKS5v
bmVCYXNlZEludCgpICsgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSBwYXJlbnRTb3VyY2Uuc3RhcnRPZmZzZXQoKSArIG1fc3RhcnRPZmZzZXQ7CiAgICAgdW5z
aWduZWQgbGluZUNvdW50ID0gbV9saW5lQ291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aAkocmV2aXNpb24gMjMxODEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCwxMCArNTgs
MTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1
cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBj
cmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29u
c3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUgc2NyaXB0
TW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIERlcml2
ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIFNvdXJjZUNvZGUmJiBwYXJlbnRTb3Vy
Y2VPdmVycmlkZSA9IFNvdXJjZUNvZGUoKSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgRnVuY3Rp
b25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2VkRnVuY3Rp
b25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0
TW9kZSBzY3JpcHRNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlh
YmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0J1aWx0
aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKLSAgICAgICAgICAgIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGTW92ZShwYXJlbnRTb3VyY2VPdmVycmlkZSks
IG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3JpcHRNb2Rl
LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZGVyaXZlZENvbnRleHRUeXBlKTsKKyAgICAgICAg
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5jdGlvbktp
bmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIHBhcmVudFNjb3BlVERaVmFyaWFibGVz
LCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKTsK
ICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICAgICB9CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBpbmdVUkwp
IHsgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTDsgfQogCiBw
cml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0dXJlKiwg
Y29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUNvZGUmJiBwYXJlbnRTb3VyY2VPdmVycmlkZSwgRnVu
Y3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0
eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiwgIEpTQzo6RGVyaXZl
ZENvbnRleHRUeXBlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSosIFN0cnVj
dHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVubGlua2Vk
RnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUsIFZhcmlh
YmxlRW52aXJvbm1lbnQmLCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExpbmVPZmZz
ZXQ7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CkBAIC0xNTcsNiArMTU3LDcgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICB1bnNpZ25lZCBt
X2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkZ1bmN0
aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9y
IDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5zaWduZWQg
bV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2RlIDogMjsg
Ly8gRnVuY3Rpb25Nb2RlCkBAIC0xNzAsNyArMTcxLDYgQEAgcHJpdmF0ZToKICAgICBJZGVudGlm
aWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1fZWNtYU5hbWU7CiAgICAgSWRlbnRpZmllciBt
X2luZmVycmVkTmFtZTsKLSAgICBTb3VyY2VDb2RlIG1fcGFyZW50U291cmNlT3ZlcnJpZGU7CiAg
ICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwogCiAgICAgU3RyaW5nIG1fc291cmNlVVJMRGly
ZWN0aXZlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUu
Y3BwCShyZXZpc2lvbiAyMzE4MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDggQEAgVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6ZwogICAgIAogICAgIG1ldGFkYXRhLT5vdmVy
cmlkZU5hbWUobmFtZSk7CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpOwotICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhh
cyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5k
ZXIgVERaLgorICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBhY2Nlc3Mg
dG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIgVERaIHVu
bGVzcyB0aGV5J3JlCisgICAgLy8gaW4gdGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25tZW50LCB3
aGljaCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2VzIGZyb20uCiAgICAgVmFyaWFibGVFbnZp
cm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVj
dEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5wYXJzZU1v
ZGUoKSk7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJs
ZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFk
YXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNj
cmlwdE1vZGU6OkNsYXNzaWMsIGVtcHR5VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6
Ok5vbmUpOwo=
</data>
<flag name="review"
          id="358703"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340545</attachid>
            <date>2018-05-16 17:50:54 -0700</date>
            <delta_ts>2018-05-16 22:21:47 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>16202</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMxODE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBA
CisyMDE4LTA1LTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGRvZXNuJ3QgbmVlZCBhIHBhcmVudCBzb3VyY2Ug
b3ZlcnJpZGUgZmllbGQgc2luY2UgaXQncyBvbmx5IHVzZWQgZm9yIGRlZmF1bHQgY2xhc3MgY29u
c3RydWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODU2MzcKKworICAgICAgICBSZXZpZXdlZCBieSBLZWl0aCBNaWxsZXIuCisKKyAgICAgICAg
V2UgaGFkIHRoaXMgZ2VuZXJhbCBtZWNoYW5pc20gZm9yIG92ZXJyaWRpbmcgYW4gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUncyBwYXJlbnQKKyAgICAgICAgc291cmNlIGNvZGUuIEhvd2V2ZXIs
IHdlIHdlcmUgb25seSB1c2luZyB0aGlzIGZvciBkZWZhdWx0IGNsYXNzIGNvbnN0cnVjdG9ycy4g
VGhlcmUKKyAgICAgICAgYXJlIG9ubHkgdHdvIHR5cGVzIG9mIGRlZmF1bHQgY2xhc3MgY29uc3Ry
dWN0b3JzLiBUaGlzIHBhdGNoIG1ha2VzIGl0IHNvIHRoYXQKKyAgICAgICAgd2UganVzdCBzdG9y
ZSB0aGlzIGluZm9ybWF0aW9uIGluc2lkZSBvZiBhIHNpbmdsZSBiaXQsIGFuZCBhc2sgZm9yIHRo
ZSBzb3VyY2UKKyAgICAgICAgY29kZSBhcyBuZWVkZWQgaW5zdGVhZCBvZiBob2xkaW5nIGl0IGlu
IGEgbnVsbGFibGUgZmllbGQgdGhhdCBpcyAyNCBieXRlcyBpbiBzaXplLgorICAgICAgICAKKyAg
ICAgICAgVGhpcyBicmluZ3MgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUncyBzaXplIGRvd24g
ZnJvbSAxODQgYnl0ZXMgdG8gMTYwIGJ5dGVzLgorICAgICAgICBUaGlzIGhhcyB0aGUgY29uc2Vx
dWVuY2Ugb2YgbWFraW5nIGl0IGFsbG9jYXRlZCBvdXQgb2YgYSAxNjAgYnl0ZSBzaXplIGNsYXNz
CisgICAgICAgIGluc3RlYWQgb2YgYSAyMjQgYnl0ZSBzaXplIGNsYXNzLiBUaGlzIHNob3VsZCBi
cmluZyBkb3duIGl0cyBtZW1vcnkgZm9vdHByaW50CisgICAgICAgIGJ5IH40MCUuCisKKyAgICAg
ICAgKiBidWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWls
dGluRXhlY3V0YWJsZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUpOgorICAgICAgICAo
SlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6CisgICAgICAg
ICogYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNo
ZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0VW5saW5rZWRHbG9iYWxGdW5jdGlv
bkV4ZWN1dGFibGUpOgorCiAyMDE4LTA1LTE1ICBEZXZpbiBSb3Vzc28gIDx3ZWJraXRAZGV2aW5y
b3Vzc28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBydWxlcnMgYW5kIGd1aWRl
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5FeGVjdXRhYmxlcy5jcHAJKHJldmlzaW9uIDIzMTgxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDIsMTggKzQyLDQxIEBAIEJ1aWx0aW5FeGVjdXRhYmxlczo6QnVpbHRpbkV4ZWN1dGFibGVzKFYK
IHsKIH0KIAorY29uc3QgU291cmNlQ29kZSYgQnVpbHRpbkV4ZWN1dGFibGVzOjpkZWZhdWx0Q29u
c3RydWN0b3JTb3VyY2VDb2RlKENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQpCit7Cisg
ICAgc3dpdGNoIChjb25zdHJ1Y3RvcktpbmQpIHsKKyAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6
Tm9uZToKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjYXNlIENv
bnN0cnVjdG9yS2luZDo6QmFzZTogeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBiYXNlQ29uc3RydWN0b3JDb2RlKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCIo
ZnVuY3Rpb24gKCkgeyB9KSIpKTsKKyAgICAgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3llZDxT
b3VyY2VDb2RlPiByZXN1bHQ7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSB7CisgICAgICAgICAgICBy
ZXN1bHQuY29uc3RydWN0KG1ha2VTb3VyY2UoYmFzZUNvbnN0cnVjdG9yQ29kZSwgeyB9KSk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBjYXNlIENvbnN0
cnVjdG9yS2luZDo6RXh0ZW5kczogeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29u
c3QgU3RyaW5nPiBkZXJpdmVkQ29uc3RydWN0b3JDb2RlKE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCIoZnVuY3Rpb24gKC4uLmFyZ3MpIHsgc3VwZXIoLi4uYXJncyk7IH0pIikpOworICAgICAgICBz
dGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFNvdXJjZUNvZGU+IHJlc3VsdDsKKyAgICAgICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOworICAgICAgICBzdGQ6OmNhbGxfb25jZShvbmNl
RmxhZywgWyZdIHsKKyAgICAgICAgICAgIHJlc3VsdC5jb25zdHJ1Y3QobWFrZVNvdXJjZShkZXJp
dmVkQ29uc3RydWN0b3JDb2RlLCB7IH0pKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIH0KK30KKwogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gYmFzZUNvbnN0cnVjdG9yQ29kZShNQUtFX1NU
QVRJQ19TVFJJTkdfSU1QTCgiKGZ1bmN0aW9uICgpIHsgfSkiKSk7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZGVyaXZlZENvbnN0cnVjdG9yQ29kZShNQUtFX1NUQVRJ
Q19TVFJJTkdfSU1QTCgiKGZ1bmN0aW9uICguLi5hcmdzKSB7IHN1cGVyKC4uLmFyZ3MpOyB9KSIp
KTsKIAogICAgIHN3aXRjaCAoY29uc3RydWN0b3JLaW5kKSB7CiAgICAgY2FzZSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmU6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpC
YXNlOgotICAgICAgICByZXR1cm4gY3JlYXRlRXhlY3V0YWJsZShtX3ZtLCBtYWtlU291cmNlKGJh
c2VDb25zdHJ1Y3RvckNvZGUsIHsgfSksIG5hbWUsIGNvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0
QWJpbGl0eTo6Q2FuQ29uc3RydWN0KTsKICAgICBjYXNlIENvbnN0cnVjdG9yS2luZDo6RXh0ZW5k
czoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUV4ZWN1dGFibGUobV92bSwgbWFrZVNvdXJjZShkZXJp
dmVkQ29uc3RydWN0b3JDb2RlLCB7IH0pLCBuYW1lLCBjb25zdHJ1Y3RvcktpbmQsIENvbnN0cnVj
dEFiaWxpdHk6OkNhbkNvbnN0cnVjdCk7CisgICAgICAgIHJldHVybiBjcmVhdGVFeGVjdXRhYmxl
KG1fdm0sIGRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0b3JLaW5kKSwgbmFt
ZSwgY29uc3RydWN0b3JLaW5kLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3QpOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTcz
LDEwICs5Niw5IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKIHsK
ICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIFBhcnNl
ckVycm9yIGVycm9yOwotICAgIGJvb2wgaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID0gY29u
c3RydWN0b3JLaW5kICE9IENvbnN0cnVjdG9yS2luZDo6Tm9uZTsKLSAgICBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gSlNQYXJz
ZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW47
Ci0gICAgVW5saW5rZWRGdW5jdGlvbktpbmQga2luZCA9IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1
Y3RvciA/IFVubGlua2VkTm9ybWFsRnVuY3Rpb24gOiBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbjsK
LSAgICBTb3VyY2VDb2RlIHBhcmVudFNvdXJjZU92ZXJyaWRlID0gaXNQYXJzaW5nRGVmYXVsdENv
bnN0cnVjdG9yID8gc291cmNlIDogU291cmNlQ29kZSgpOworICAgIGJvb2wgaXNCdWlsdGluRGVm
YXVsdENsYXNzQ29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5k
OjpOb25lOworICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBpc0J1aWx0aW5E
ZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA/IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4g
OiBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluOworICAgIFVubGlua2VkRnVuY3Rpb25LaW5k
IGtpbmQgPSBpc0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA/IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24gOiBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgICZ2bSwg
c291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAogICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJTY3JpcHRNb2RlOjpDbGFzc2ljLCBTb3VyY2VQYXJz
ZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJyb3IsCkBAIC0x
MDUsNyArMTI3LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdQog
ICAgIFJFTEVBU0VfQVNTRVJUKG1ldGFkYXRhKTsKICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1l
KG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGR1bW15VERaVmFy
aWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIFdURk1vdmUocGFyZW50U291cmNlT3Zl
cnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0
YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2VyU2NyaXB0TW9kZTo6Q2xhc3Np
YywgZHVtbXlURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgaXNCdWlsdGlu
RGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogICAgIHJldHVybiBmdW5jdGlvbkV4ZWN1dGFibGU7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0
YWJsZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbkV4ZWN1dGFibGVzLmgJKHJldmlzaW9uIDIzMTgxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw2ICs0
OSw3IEBAIGNvbnN0IFNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIHsgcmV0dXIKICAgICBKU0Nf
Rk9SRUFDSF9CVUlMVElOX0NPREUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCiAjdW5kZWYg
RVhQT1NFX0JVSUxUSU5fU09VUkNFUwogCisgICAgc3RhdGljIGNvbnN0IFNvdXJjZUNvZGUmIGRl
ZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoQ29uc3RydWN0b3JLaW5kKTsKICAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yKENvbnN0cnVjdG9y
S2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZUV4ZWN1dGFibGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwg
Y29uc3QgSWRlbnRpZmllciYsIENvbnN0cnVjdG9yS2luZCwgQ29uc3RydWN0QWJpbGl0eSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDIzMTgxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTMsIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogCisjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTQw
LDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSA8PSAyNTYsICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSBzaG91bGQgZml0IGluIGEgMjU2LWJ5dGUgY2VsbC4iKTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSA8PSAxNjAsICJVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSBzaG91bGQgZml0IGluIGEgMTYwLWJ5dGUgY2VsbC4gSWYgeW91IGluY3JlYXNl
IHRoZSBzaXplIG9mIHRoaXMgY2xhc3MsIGNvbnNpZGVyIG1ha2luZyBhIHNpemUgY2xhc3MgdGhh
dCBwZXJmZWN0bHkgZml0cyBpdC4iKTsKIAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjpzX2luZm8gPSB7ICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUpIH07CiAKQEAgLTc2LDcgKzc3LDcgQEAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2sqIGdlbmVyYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSogdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBTb3VyY2VDb2RlJiBwYXJlbnRTb3VyY2UsIFNvdXJj
ZUNvZGUmJiBwYXJlbnRTb3VyY2VPdmVycmlkZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUs
IFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJp
bGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlIHNjcmlwdE1vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQm
IHBhcmVudFNjb3BlVERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRl
eHRUeXBlKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFNvdXJjZUNvZGUmIHBh
cmVudFNvdXJjZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25L
aW5kIGtpbmQsIENvbnN0cnVjdEFiaWxpdHkgY29uc3RydWN0QWJpbGl0eSwgSlNQYXJzZXJTY3Jp
cHRNb2RlIHNjcmlwdE1vZGUsIFZhcmlhYmxlRW52aXJvbm1lbnQmIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgIDogQmFzZSgqdm0sIHN0cnVjdHVyZSkK
ICAgICAsIG1fZmlyc3RMaW5lT2Zmc2V0KG5vZGUtPmZpcnN0TGluZSgpIC0gcGFyZW50U291cmNl
LmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0
TGluZSgpIC0gbm9kZS0+Zmlyc3RMaW5lKCkpCkBAIC05NCw2ICs5NSw3IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmMKICAgICAsIG1faXNJblN0cmljdENvbnRleHQo
bm9kZS0+aXNJblN0cmljdENvbnRleHQoKSkKICAgICAsIG1faGFzQ2FwdHVyZWRWYXJpYWJsZXMo
ZmFsc2UpCiAgICAgLCBtX2lzQnVpbHRpbkZ1bmN0aW9uKGtpbmQgPT0gVW5saW5rZWRCdWlsdGlu
RnVuY3Rpb24pCisgICAgLCBtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKGlzQnVp
bHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVjdG9yKQogICAgICwgbV9jb25zdHJ1Y3RBYmlsaXR5KHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RBYmlsaXR5KSkKICAgICAsIG1fY29uc3RydWN0
b3JLaW5kKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5jb25zdHJ1Y3RvcktpbmQoKSkpCiAg
ICAgLCBtX2Z1bmN0aW9uTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKQpAQCAtMTAzLDcgKzEwNSw2IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpV
bmxpbmtlZEZ1bmMKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9lY21hTmFt
ZShub2RlLT5lY21hTmFtZSgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9kZS0+aW5mZXJyZWRO
YW1lKCkpCi0gICAgLCBtX3BhcmVudFNvdXJjZU92ZXJyaWRlKFdURk1vdmUocGFyZW50U291cmNl
T3ZlcnJpZGUpKQogICAgICwgbV9jbGFzc1NvdXJjZShub2RlLT5jbGFzc1NvdXJjZSgpKQogICAg
ICwgbV9wYXJlbnRTY29wZVREWlZhcmlhYmxlcyh2bS0+bV9jb21wYWN0VmFyaWFibGVNYXAtPmdl
dChwYXJlbnRTY29wZVREWlZhcmlhYmxlcykpCiB7CkBAIC0xMTQsNiArMTE1LDcgQEAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuYwogICAgIEFTU0VSVChtX3NjcmlwdE1v
ZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdE1vZGUpKTsKICAgICBBU1NFUlQobV9z
dXBlckJpbmRpbmcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygp
KSk7CiAgICAgQVNTRVJUKG1fZGVyaXZlZENvbnRleHRUeXBlID09IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKTsKKyAgICBBU1NFUlQoIShtX2lzQnVpbHRpbkRlZmF1
bHRDbGFzc0NvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSkpOwogfQogCiB2b2lkIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpkZXN0cm95
KEpTQ2VsbCogY2VsbCkKQEAgLTEzMiw3ICsxMzQsNyBAQCB2b2lkIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlOjp2aXNpdENoCiAKIEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU6OmxpbmsoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBwYXNzZWRQYXJlbnRT
b3VyY2UsIHN0ZDo6b3B0aW9uYWw8aW50PiBvdmVycmlkZUxpbmVOdW1iZXIsIEludHJpbnNpYyBp
bnRyaW5zaWMpCiB7Ci0gICAgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlID0gbV9wYXJl
bnRTb3VyY2VPdmVycmlkZS5pc051bGwoKSA/IHBhc3NlZFBhcmVudFNvdXJjZSA6IG1fcGFyZW50
U291cmNlT3ZlcnJpZGU7CisgICAgY29uc3QgU291cmNlQ29kZSYgcGFyZW50U291cmNlID0gIW1f
aXNCdWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IgPyBwYXNzZWRQYXJlbnRTb3VyY2UgOiBC
dWlsdGluRXhlY3V0YWJsZXM6OmRlZmF1bHRDb25zdHJ1Y3RvclNvdXJjZUNvZGUoY29uc3RydWN0
b3JLaW5kKCkpOwogICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHBhcmVudFNvdXJjZS5maXJzdExp
bmUoKS5vbmVCYXNlZEludCgpICsgbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgc3Rh
cnRPZmZzZXQgPSBwYXJlbnRTb3VyY2Uuc3RhcnRPZmZzZXQoKSArIG1fc3RhcnRPZmZzZXQ7CiAg
ICAgdW5zaWduZWQgbGluZUNvdW50ID0gbV9saW5lQ291bnQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaAkocmV2aXNpb24gMjMxODEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCwx
MCArNTgsMTAgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBT
dHJ1Y3R1cmVJc0ltbW9ydGFsOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtlZEZ1bmN0aW9uS2lu
ZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUg
c2NyaXB0TW9kZSwgVmFyaWFibGVFbnZpcm9ubWVudCYgcGFyZW50U2NvcGVURFpWYXJpYWJsZXMs
IERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIFNvdXJjZUNvZGUmJiBwYXJl
bnRTb3VyY2VPdmVycmlkZSA9IFNvdXJjZUNvZGUoKSkKKyAgICBzdGF0aWMgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG5vZGUsIFVubGlua2VkRnVuY3Rpb25LaW5kIHVubGlua2Vk
RnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHksIEpTUGFyc2Vy
U2NyaXB0TW9kZSBzY3JpcHRNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVRE
WlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBp
c0J1aWx0aW5EZWZhdWx0Q2xhc3NDb25zdHJ1Y3RvciA9IGZhbHNlKQogICAgIHsKICAgICAgICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLT5oZWFwKSkKLSAgICAgICAg
ICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RGTW92ZShwYXJlbnRTb3VyY2VPdmVy
cmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBzY3Jp
cHRNb2RlLCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZGVyaXZlZENvbnRleHRUeXBlKTsKKyAg
ICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2bS0+dW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgbm9kZSwgdW5saW5rZWRGdW5j
dGlvbktpbmQsIGNvbnN0cnVjdEFiaWxpdHksIHNjcmlwdE1vZGUsIHBhcmVudFNjb3BlVERaVmFy
aWFibGVzLCBkZXJpdmVkQ29udGV4dFR5cGUsIGlzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0cnVj
dG9yKTsKICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJl
dHVybiBpbnN0YW5jZTsKICAgICB9CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0U291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZShjb25zdCBTdHJpbmcmIHNvdXJjZU1hcHBp
bmdVUkwpIHsgbV9zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlID0gc291cmNlTWFwcGluZ1VSTDsg
fQogCiBwcml2YXRlOgotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiwgU3RydWN0
dXJlKiwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUNvZGUmJiBwYXJlbnRTb3VyY2VPdmVycmlk
ZSwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0
QWJpbGl0eSwgSlNQYXJzZXJTY3JpcHRNb2RlLCBWYXJpYWJsZUVudmlyb25tZW50JiwgIEpTQzo6
RGVyaXZlZENvbnRleHRUeXBlKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZShWTSos
IFN0cnVjdHVyZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIFVu
bGlua2VkRnVuY3Rpb25LaW5kLCBDb25zdHJ1Y3RBYmlsaXR5LCBKU1BhcnNlclNjcmlwdE1vZGUs
IFZhcmlhYmxlRW52aXJvbm1lbnQmLCAgSlNDOjpEZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNC
dWlsdGluRGVmYXVsdENsYXNzQ29uc3RydWN0b3IpOwogCiAgICAgdW5zaWduZWQgbV9maXJzdExp
bmVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CkBAIC0xNTcsNiArMTU3LDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lzSW5TdHJpY3RDb250ZXh0IDogMTsKICAgICB1bnNp
Z25lZCBtX2hhc0NhcHR1cmVkVmFyaWFibGVzIDogMTsKICAgICB1bnNpZ25lZCBtX2lzQnVpbHRp
bkZ1bmN0aW9uIDogMTsKKyAgICB1bnNpZ25lZCBtX2lzQnVpbHRpbkRlZmF1bHRDbGFzc0NvbnN0
cnVjdG9yIDogMTsKICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdEFiaWxpdHk6IDE7CiAgICAgdW5z
aWduZWQgbV9jb25zdHJ1Y3RvcktpbmQgOiAyOwogICAgIHVuc2lnbmVkIG1fZnVuY3Rpb25Nb2Rl
IDogMjsgLy8gRnVuY3Rpb25Nb2RlCkBAIC0xNzAsNyArMTcxLDYgQEAgcHJpdmF0ZToKICAgICBJ
ZGVudGlmaWVyIG1fbmFtZTsKICAgICBJZGVudGlmaWVyIG1fZWNtYU5hbWU7CiAgICAgSWRlbnRp
ZmllciBtX2luZmVycmVkTmFtZTsKLSAgICBTb3VyY2VDb2RlIG1fcGFyZW50U291cmNlT3ZlcnJp
ZGU7CiAgICAgU291cmNlQ29kZSBtX2NsYXNzU291cmNlOwogCiAgICAgU3RyaW5nIG1fc291cmNl
VVJMRGlyZWN0aXZlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNh
Y2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
Q2FjaGUuY3BwCShyZXZpc2lvbiAyMzE4MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDggQEAgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIENvZGVDYWNoZTo6ZwogICAgIAogICAgIG1ldGFkYXRh
LT5vdmVycmlkZU5hbWUobmFtZSk7CiAgICAgbWV0YWRhdGEtPnNldEVuZFBvc2l0aW9uKHBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUpOwotICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBv
bmx5IGhhcyBhY2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwg
YmUgdW5kZXIgVERaLgorICAgIC8vIFRoZSBGdW5jdGlvbiBjb25zdHJ1Y3RvciBvbmx5IGhhcyBh
Y2Nlc3MgdG8gZ2xvYmFsIHZhcmlhYmxlcywgc28gbm8gdmFyaWFibGVzIHdpbGwgYmUgdW5kZXIg
VERaIHVubGVzcyB0aGV5J3JlCisgICAgLy8gaW4gdGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25t
ZW50LCB3aGljaCB3ZSBhbHdheXMgVERaIGNoZWNrIGFjY2Vzc2VzIGZyb20uCiAgICAgVmFyaWFi
bGVFbnZpcm9ubWVudCBlbXB0eVREWlZhcmlhYmxlczsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNv
bnN0cnVjdEFiaWxpdHkgPSBjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKG1ldGFkYXRhLT5w
YXJzZU1vZGUoKSk7CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2Us
IG1ldGFkYXRhLCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBjb25zdHJ1Y3RBYmlsaXR5LCBKU1Bh
cnNlclNjcmlwdE1vZGU6OkNsYXNzaWMsIGVtcHR5VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>