<?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>239666</bug_id>
          
          <creation_ts>2022-04-22 12:23:43 -0700</creation_ts>
          <short_desc>[Wasm-GC] Add support for recursion groups</short_desc>
          <delta_ts>2022-11-02 17:15:04 -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>WebAssembly</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=244061</see_also>
          <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>
          <dependson>244062</dependson>
          <blocked>247394</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Asumu Takikawa">asumu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bashorov</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1863741</commentid>
    <comment_count>0</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-04-22 12:23:43 -0700</bug_when>
    <thetext>The latest version of the Wasm GC proposal introduces a notion of a &quot;recursion group&quot; (https://github.com/WebAssembly/gc/blob/main/proposals/gc/MVP.md#type-definitions), which is a way to explicitly introduce recursive types in an iso-recursive type system. These type definitions use the operator `rec` to introduce types.

An example `rec` type declaration:

```
(module
  (rec (type $f (func (result (ref 0))))
       (type $s (struct))))
```

JSC will need to support these and also new `sub` types to fully support the GC proposal. The basic implementation of rec types is thankfully not too difficult in JSC thanks to the fact that Wasm type definitions are already hash-consed. (the iso-recursive type system design makes it easy to support a bottom-up, hash-consed implementation strategy)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863783</commentid>
    <comment_count>1</comment_count>
      <attachid>458174</attachid>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-04-22 14:26:13 -0700</bug_when>
    <thetext>Created attachment 458174
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863785</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-04-22 14:27:47 -0700</bug_when>
    <thetext>This patch modifies one of the wasm.json files. Please ensure that any changes in one have been mirrored to the other. You can find the wasm.json files at &quot;Source/JavaScriptCore/wasm/wasm.json&quot; and &quot;JSTests/wasm/wasm.json&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863861</commentid>
    <comment_count>3</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-04-22 22:30:25 -0700</bug_when>
    <thetext>I&apos;ve marked this for review now since EWS is looking green.

If this patch lands after more Wasm GC struct patches land, it will likely need to change to also put in type expansion in appropriate places for struct operations. (if it lands before, then the struct patches should change for the same reason)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864980</commentid>
    <comment_count>4</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-04-27 16:31:07 -0700</bug_when>
    <thetext>I&apos;m rebasing this now on top of recent Wasm GC patches that landed (there are some conflicts).

The patch also needs some modification because I found a bug in the GC reference interpreter (https://github.com/WebAssembly/gc/issues/290), which changes some of expectations for test cases.

(Specifically, function signatures should be tracked as type indices in more places because, e.g., import or call_indirect signature checks need to use the type index of the recursion group projection instead of just the underlying function)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865202</commentid>
    <comment_count>5</comment_count>
      <attachid>458536</attachid>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-04-28 11:15:06 -0700</bug_when>
    <thetext>Created attachment 458536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865497</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-29 12:24:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/92537953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866920</commentid>
    <comment_count>7</comment_count>
      <attachid>458895</attachid>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-05-05 11:03:49 -0700</bug_when>
    <thetext>Created attachment 458895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866921</commentid>
    <comment_count>8</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-05-05 11:04:45 -0700</bug_when>
    <thetext>Rebased and made some small refactorings to prepare it better for the `sub` type patch. I&apos;ve also mostly finished a patch for sub types, which I&apos;ll upload after `rec` types land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1870104</commentid>
    <comment_count>9</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-05-18 12:37:49 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/740</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1891795</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-16 16:15:35 -0700</bug_when>
    <thetext>Committed 253491@main (5f3859595e5e): &lt;https://commits.webkit.org/253491@main&gt;

Reviewed commits have been landed. Closing PR #740 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1892064</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-08-17 15:20:03 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 244062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893386</commentid>
    <comment_count>12</comment_count>
    <who name="Asumu Takikawa">asumu</who>
    <bug_when>2022-08-23 17:07:19 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/3599</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1893530</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-24 12:40:13 -0700</bug_when>
    <thetext>Committed 253736@main (38c77df13331): &lt;https://commits.webkit.org/253736@main&gt;

Reviewed commits have been landed. Closing PR #3599 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458174</attachid>
            <date>2022-04-22 14:26:13 -0700</date>
            <delta_ts>2022-04-28 11:15:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239666-20220422142613.patch</filename>
            <type>text/plain</type>
            <size>76865</size>
            <attacher name="Asumu Takikawa">asumu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YTZkYWE0OWQ0NDk0OGMyNjIwNTg1MDk4MmZhZjg0ODg5YmQ3MGYzLi41YmZkMGNiYzE1Y2E4OTU2
MWE0ZTQyMjY1ZDMwYTBjYzYzYmQ3MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzAgQEAKKzIwMjItMDQtMjIgIEFzdW11IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNv
bT4KKworICAgICAgICBbV2FzbS1HQ10gQWRkIHN1cHBvcnQgZm9yIFdlYkFzc2VtYmx5IEdDIHJl
Y3Vyc2lvbiBncm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzOTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBHQyBwcm9wb3NhbCdzIHJlY3Vyc2lvbiBn
cm91cHMuIFRoZXNlIGFyZQorICAgICAgICBhIG5ldyBraW5kIG9mIFR5cGVEZWZpbml0aW9uIHRo
YXQgYWxsb3dzIGZvciByZWN1cnNpdmUgdHlwZQorICAgICAgICBkZWZpbml0aW9ucy4gUmVjdXJz
aXZlIHR5cGUgaW5kZXggcmVmZXJlbmNlcyBhcmUgb25seSBhbGxvd2VkIHdpdGgKKyAgICAgICAg
cmVjdXJzaW9uIGdyb3VwIGRlZmluaXRpb25zLgorCisgICAgICAgIFJlY3Vyc2lvbiBncm91cHMg
Y2FuIGJlIHN0b3JlZCBoYXNoLWNvbnNlZCBsaWtlIG90aGVyIHR5cGUKKyAgICAgICAgZGVmaW5p
dGlvbnMsIGJ1dCB0byBzdWNjZXNzZnVsbHkgY29tcGFyZSB0aGVtIHRoZXkgbXVzdCBzdG9yZSBz
ZXZlcmFsCisgICAgICAgIGRlZmluaXRpb25zIGluIHRoZSB0eXBlIHN0b3JlOgorCisgICAgICAg
ICAgLSBUaGUgcmVjdXJzaW9uIGdyb3VwIGl0c2VsZiAocmVjICh0eXBlIC4uLikgLi4uKQorICAg
ICAgICAgIC0gRWFjaCB0eXBlIGNvbXBvbmVudCBpbiB0aGUgZ3JvdXAgKHR5cGUgLi4uKSwgd2hl
cmUgYW55IHBvdGVudGlhbAorICAgICAgICAgICAgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYXJlIHJl
cHJlc2VudGVkIGFzIGEgc3BlY2lhbCB2YWx1ZSB0eXBlLgorICAgICAgICAgIC0gUHJvamVjdGlv
bnMgaW50byB0aGUgcmVjdXJzaW9uIGdyb3VwICgocmVjIC4uLikuPGk+KQorCisgICAgICAgIFBy
b2plY3Rpb25zIGNhbiBiZSBleHBhbmRlZCBpbnRvIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uL3N0
cnVjdC9ldGMKKyAgICAgICAgdHlwZSB3aGVuIHRoZSB2YWxpZGF0b3IgbmVlZHMgdG8gZXhhbWlu
ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSB0eXBlLgorICAgICAgICBUaGlzIG9wZXJhdGlvbiBleHBv
c2VzIHRoZSB0eXBlIGNvbXBvbmVudCBpbiB0aGUgZ3JvdXAsIGFuZCByZXBsYWNlcworICAgICAg
ICByZWN1cnNpdmUgcmVmZXJlbmNlcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwcm9qZWN0aW9uICh3
aGljaCBjYW4gdGhlbgorICAgICAgICBiZSBleHBhbmRlZCBpZiByZXF1aXJlZCwgYW5kIHNvIG9u
KS4KKworICAgICAgICBJZiBleHBhbnNpb24gYmVjb21lcyBhIGJvdHRsZW5lY2ssIGl0IGlzIGVh
c3kgdG8gbWVtb2l6ZSBpdCB3aXRoIHRoZQorICAgICAgICBhZGRpdGlvbiBvZiBhIFR5cGVJbmRl
eCB0byBUeXBlSW5kZXggbWFwcGluZyBpbiB0aGUgdHlwZSBzdG9yZS4KKworICAgICAgICBHZW5l
cmFsbHksIHRoZSBleHBhbnNpb24gb3BlcmF0aW9uIGlzIG5lZWRlZCB3aGVuIGNvZGUgcmVsaWVz
IG9uIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb2YgdGhlIHVuZGVybHlpbmcgdHlwZS4gRm9yIGZ1
bmN0aW9ucywgdGhlc2UgdXNlcyB1c3VhbGx5CisgICAgICAgIGxvb2sgbGlrZSBgc2lnbmF0dXJl
LmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpYC4gVGhlIHNpZ25hdHVyZSAqbXVzdCogYmUKKyAgICAg
ICAgZXhwYW5kZWQgYmVmb3JlIHN1Y2ggYSBjb252ZXJzaW9uIGlzIGNhbGxlZC4KKworICAgICAg
ICBSZWN1cnNpdmUgcmVmZXJlbmNlcyBhcmUgbm90IHJlcHJlc2VudGVkIGluIHRoZSBiaW5hcnkg
Zm9ybWF0IGFuZCBhcmUKKyAgICAgICAgaW50ZXJuYWwgdG8gdGhlIHNlbWFudGljcyBhbmQgaW1w
bGVtZW50YXRpb24uIFRvIGF2b2lkIHVzaW5nIGV4dHJhCisgICAgICAgIG9wY29kZXMsIHRoZXkg
YXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQgYXMgYSB0eXBlIHRoYXQgdXNlcyB0aGUKKyAgICAg
ICAgb3Bjb2RlIGZvciByZWN1cnNpb24gZ3JvdXAgKFR5cGVLaW5kOjpSZWMpLCB3aGljaCBjYW5u
b3Qgbm9ybWFsbHkgYmUKKyAgICAgICAgdXNlZCBmb3IgdmFsdWUgdHlwZXMgaW4gdGhlIGJpbmFy
eSBmb3JtYXQsIHdpdGggYSBoZWFwIHR5cGUgdGhhdAorICAgICAgICBlbmNvZGVzIHRoZSBpbmRl
eCBpbnRvIHRoZSByZWN1cnNpb24gZ3JvdXAncyB0eXBlIGxpc3QuCisKKyAgICAgICAgKiB3YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJh
dG9yOjpBaXJJUkdlbmVyYXRvcik6CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OndvcmspOgorICAgICAgICAoSlNDOjpXYXNtOjpC
QlFQbGFuOjpjb21waWxlRnVuY3Rpb24pOgorICAgICAgICAqIHdhc20vV2FzbUZvcm1hdC5oOgor
ICAgICAgICAoSlNDOjpXYXNtOjppc1ZhbHVlVHlwZSk6CisgICAgICAgICogd2FzbS9XYXNtRnVu
Y3Rpb25QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6c3BsaXRTdGFjayk6CisgICAgICAg
IChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5jdGlvblBhcnNlcik6Cisg
ICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSk6CisgICAg
ICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZUV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjpXYXNtOjpGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJl
YWNoYWJsZUV4cHJlc3Npb24pOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6SW5zdGFuY2U6OmluaXRFbGVtZW50U2VnbWVudCk6CisgICAgICAg
ICogd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpMTElu
dEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6TExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZSk6CisgICAgICAgIChK
U0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMpOgorICAgICAgICAqIHdhc20v
V2FzbUxMSW50UGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkxMSW50UGxhbjo6ZGlkQ29t
cGxldGVDb21waWxhdGlvbik6CisgICAgICAgICogd2FzbS9XYXNtTGltaXRzLmg6CisgICAgICAg
ICogd2FzbS9XYXNtUGFyc2VyLmg6CisgICAgICAgIChKU0M6Oldhc206OlBhcnNlcjo6UmVjdXJz
aW9uR3JvdXBHdWFyZDo6UmVjdXJzaW9uR3JvdXBHdWFyZCk6CisgICAgICAgIChKU0M6Oldhc206
OlBhcnNlcjo6UmVjdXJzaW9uR3JvdXBHdWFyZDo6flJlY3Vyc2lvbkdyb3VwR3VhcmQpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpQYXJzZXIpOgorICAgICAgICAo
SlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUhlYXBUeXBlKToKKyAgICAgICAg
KEpTQzo6V2FzbTo6UGFyc2VyPFN1Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUpOgorICAgICAg
ICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0
aW9uUGFyc2VyOjpwYXJzZVR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpTZWN0aW9uUGFyc2Vy
OjpwYXJzZUltcG9ydCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
RWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNlUmVjdXJz
aW9uR3JvdXApOgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuaDoKKyAgICAgICAg
KiB3YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlR5cGVE
ZWZpbml0aW9uOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9uR3Jv
dXA6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9uR3JvdXA6
OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpQcm9qZWN0aW9uOjp0b1N0cmluZyBj
b25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlByb2plY3Rpb246OmR1bXAgY29uc3QpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpjb21wdXRlUmVjdXJzaW9uR3JvdXBIYXNoKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6Y29tcHV0ZVByb2plY3Rpb25IYXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VHlw
ZURlZmluaXRpb246Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpUeXBlRGVmaW5p
dGlvbjo6dHJ5Q3JlYXRlRnVuY3Rpb25TaWduYXR1cmUpOgorICAgICAgICAoSlNDOjpXYXNtOjpU
eXBlRGVmaW5pdGlvbjo6dHJ5Q3JlYXRlU3RydWN0VHlwZSk6CisgICAgICAgIChKU0M6Oldhc206
OlR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVSZWN1cnNpb25Hcm91cCk6CisgICAgICAgIChKU0M6
Oldhc206OlR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVQcm9qZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6VHlwZURlZmluaXRpb246OnN1YnN0aXR1dGUpOgorICAgICAgICAoSlNDOjpXYXNt
OjpUeXBlRGVmaW5pdGlvbjo6dW5yb2xsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6VHlw
ZURlZmluaXRpb246OmV4cGFuZCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9u
UGFyYW1ldGVyVHlwZXM6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6U3RydWN0UGFyYW1l
dGVyVHlwZXM6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9uR3JvdXBQYXJh
bWV0ZXJUeXBlczo6aGFzaCk6CisgICAgICAgIChKU0M6Oldhc206OlJlY3Vyc2lvbkdyb3VwUGFy
YW1ldGVyVHlwZXM6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9uR3JvdXBQ
YXJhbWV0ZXJUeXBlczo6dHJhbnNsYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlv
blBhcmFtZXRlclR5cGVzOjpoYXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlvblBh
cmFtZXRlclR5cGVzOjplcXVhbCk6CisgICAgICAgIChKU0M6Oldhc206OlByb2plY3Rpb25QYXJh
bWV0ZXJUeXBlczo6dHJhbnNsYXRlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VHlwZUluZm9ybWF0
aW9uOjp0eXBlRGVmaW5pdGlvbkZvclJlY3Vyc2lvbkdyb3VwKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6VHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvclByb2plY3Rpb24pOgorICAgICAg
ICAqIHdhc20vV2FzbVR5cGVEZWZpbml0aW9uLmg6CisgICAgICAgIChKU0M6Oldhc206OlJlY3Vy
c2lvbkdyb3VwOjpSZWN1cnNpb25Hcm91cCk6CisgICAgICAgIChKU0M6Oldhc206OlJlY3Vyc2lv
bkdyb3VwOjp0eXBlQ291bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNpb25H
cm91cDo6dHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlJlY3Vyc2lvbkdyb3VwOjpn
ZXRUeXBlKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9uR3JvdXA6OnN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNpb25Hcm91cDo6c3RvcmFnZSBjb25zdCk6CisgICAg
ICAgIChKU0M6Oldhc206OlByb2plY3Rpb246OlByb2plY3Rpb24pOgorICAgICAgICAoSlNDOjpX
YXNtOjpQcm9qZWN0aW9uOjpyZWN1cnNpb25Hcm91cCBjb25zdCk6CisgICAgICAgIChKU0M6Oldh
c206OlByb2plY3Rpb246OmluZGV4IGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVj
dGlvbjo6Z2V0UmVjdXJzaW9uR3JvdXApOgorICAgICAgICAoSlNDOjpXYXNtOjpQcm9qZWN0aW9u
OjpnZXRJbmRleCk6CisgICAgICAgIChKU0M6Oldhc206OlByb2plY3Rpb246OnN0b3JhZ2UpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpQcm9qZWN0aW9uOjpzdG9yYWdlIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6VHlwZURlZmluaXRpb246OlR5cGVEZWZpbml0aW9uKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6VHlwZURlZmluaXRpb246OmFsbG9jYXRlZFJlY3Vyc2lvbkdyb3VwU2l6ZSk6Cisg
ICAgICAgIChKU0M6Oldhc206OlR5cGVEZWZpbml0aW9uOjphbGxvY2F0ZWRQcm9qZWN0aW9uU2l6
ZSk6CisgICAgICAgICogd2FzbS9XYXNtVHlwZURlZmluaXRpb25JbmxpbmVzLmg6CisgICAgICAg
IChKU0M6Oldhc206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0RnVuY3Rpb25TaWduYXR1cmUpOgorICAg
ICAgICAqIHdhc20vanMvV2FzbVRvSlMuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp3YXNtVG9K
Uyk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHA6CisgICAg
ICAgIChKU0M6OldlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplRXhwb3J0cyk6Cisg
ICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjItMDQtMjIgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5IHB1cmlmeU5hTiBpbiBtb3JlIHBsYWNlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
CmluZGV4IDAxZGIyOGJiM2IzMmM3MzE1ZmJhYWZkMzllMzg2ZDdhZTFhMjhhMTQuLjMyMWQ0NWQ5
NTg5MTRlOGU0ZTdhY2Y1NmRlZTk4NzhlNWRlMjNhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtOTMzLDcgKzkzMyw3IEBA
IHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVXYXNtQ29udGV4dEluc3RhbmNlKEJhc2ljQmxv
Y2sqIGJsb2NrLCBUeXBlZFRtcCBpbnN0CiAgICAgZW1pdFBhdGNocG9pbnQoYmxvY2ssIHBhdGNo
cG9pbnQsIFRtcCgpLCBpbnN0YW5jZSk7CiB9CiAKLUFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVy
YXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvY2Vk
dXJlLCBJbnRlcm5hbEZ1bmN0aW9uKiBjb21waWxhdGlvbiwgVmVjdG9yPFVubGlua2VkV2FzbVRv
V2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgTWVtb3J5TW9kZSBtb2RlLCB1bnNp
Z25lZCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBjb25zdCBUeXBlRGVmaW5p
dGlvbiYgc2lnbmF0dXJlLCB1bnNpZ25lZCYgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSkKK0Fp
cklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5m
bywgQjM6OlByb2NlZHVyZSYgcHJvY2VkdXJlLCBJbnRlcm5hbEZ1bmN0aW9uKiBjb21waWxhdGlv
biwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxs
cywgTWVtb3J5TW9kZSBtb2RlLCB1bnNpZ25lZCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCog
dGllclVwLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgb3JpZ2luYWxTaWduYXR1cmUsIHVuc2lnbmVk
JiBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplKQogICAgIDogbV9pbmZvKGluZm8pCiAgICAgLCBt
X21vZGUobW9kZSkKICAgICAsIG1fZnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4KQpAQCAtMTAz
OCw2ICsxMDM4LDcgQEAgQWlySVJHZW5lcmF0b3I6OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVs
ZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2VkdXJlJiBwcm8KICAgICBtX21haW5FbnRyeXBv
aW50U3RhcnQgPSBtX2NvZGUuYWRkQmxvY2soKTsKICAgICBtX2N1cnJlbnRCbG9jayA9IG1fbWFp
bkVudHJ5cG9pbnRTdGFydDsKIAorICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUg
PSBvcmlnaW5hbFNpZ25hdHVyZS5leHBhbmQoKTsKICAgICBBU1NFUlQoIW1fbG9jYWxzLnNpemUo
KSk7CiAgICAgbV9sb2NhbHMuZ3JvdyhzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkt
PmFyZ3VtZW50Q291bnQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVy
ZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCA4ZTE4YTc3MjIzMjBh
NGNiZDRlZTBlOGMyM2I3NzQyNWZmZDJhMDQ3Li43OGU3N2Y5NDFkZmI5MjM3OGU5ZmY0MDUyNGVh
NGI0OGRlNjJlM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBCQlFQbGFuOjp3b3JrKENvbXBpbGF0aW9uRWZm
b3J0IGVmZm9ydCkKIAogICAgIHNpemVfdCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX2Z1bmN0aW9u
SW5kZXggKyBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCk7CiAgICAg
VHlwZUluZGV4IHR5cGVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVuY3Rp
b25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOwotICAgIGNvbnN0IFR5cGVEZWZpbml0aW9u
JiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpOworICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5k
ZXgpLmV4cGFuZCgpOwogICAgIGZ1bmN0aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0gbWFr
ZVVuaXF1ZTxDb21waWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX1dBU01fQ09ERV9GT1JfTU9E
RShDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIGxpbmtCdWZmZXIsIEpJVENvbXBpbGF0aW9uUHRy
VGFnLCAiV2ViQXNzZW1ibHkgQkJRIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgbV9mdW5jdGlv
bkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmluZyhJ
bmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5hbWVT
ZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAgICAg
ICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwpAQCAtMTkzLDcg
KzE5Myw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgpCiAgICAgaWYgKG1fZXhwb3J0ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVuY3Rp
b25JbmRleCkgfHwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+cmVmZXJlbmNlZEZ1bmN0aW9ucygpLmNv
bnRhaW5zKGZ1bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKICAgICAgICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmlu
dGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgY29uc3Qg
VHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRl
eCk7CisgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5mb3Jt
YXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFuZCgpOwogCiAgICAgICAgIG1fY29tcGlsYXRpb25D
b250ZXh0c1tmdW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5pcXVl
PENDYWxsSGVscGVycz4oKTsKICAgICAgICAgYXV0byBlbWJlZGRlclRvV2FzbUludGVybmFsRnVu
Y3Rpb24gPSBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoKm1fY29tcGlsYXRpb25Db250ZXh0c1tmdW5j
dGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQsIHNpZ25hdHVyZSwgJm1fdW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0KCks
IG1fbW9kZSwgZnVuY3Rpb25JbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmgKaW5kZXggYWNlODU3ZmQyMGJmOWY5MDVkZDQ4ZDUyZTcxNWQ5M2IyZDY4NzZmYy4uODBh
MTY5MWYxMDgyZWMyMzYwNjBiMjM2MTVlZjQyNDM5ZTFiNGM5YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Gb3JtYXQuaApAQCAtNzQsNiArNzQsMTAgQEAgaW5saW5lIGJvb2wgaXNW
YWx1ZVR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICBjYXNlIFR5
cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlU
eXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpOworICAgIC8vIFJlYyB0eXBlIGtpbmRzIGFyZSB1c2Vk
IGludGVybmFsbHkgdG8gcmVwcmVzZW50IGByZWMuPGk+YCByZWZlcmVuY2VzCisgICAgLy8gd2l0
aGluIHJlY3Vyc2lvbiBncm91cHMuIFRoZXkgYXJlIGludmFsaWQgaW4gb3RoZXIgY29udGV4dHMu
CisgICAgY2FzZSBUeXBlS2luZDo6UmVjOgorICAgICAgICByZXR1cm4gT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlHQygpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZGIx
YzlhZWY4MmQ2NWE1ODAxMjU0MjdjM2ZjMTUyOTQyN2ExZGQxZC4uYzAwODBhZjg1NjczNjBiOTE5
YWE0YTgxZjUyYjgzNjg4M2JjYzk2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTQ4LDggKzQ4LDkgQEAgZW51bSBjbGFzcyBDYXRj
aEtpbmQgewogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW5jbG9zaW5nU3RhY2ssIHR5cGVuYW1l
IE5ld1N0YWNrPgotdm9pZCBzcGxpdFN0YWNrKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgRW5j
bG9zaW5nU3RhY2smIGVuY2xvc2luZ1N0YWNrLCBOZXdTdGFjayYgbmV3U3RhY2spCit2b2lkIHNw
bGl0U3RhY2soQmxvY2tTaWduYXR1cmUgb3JpZ2luYWxTaWduYXR1cmUsIEVuY2xvc2luZ1N0YWNr
JiBlbmNsb3NpbmdTdGFjaywgTmV3U3RhY2smIG5ld1N0YWNrKQogeworICAgIEJsb2NrU2lnbmF0
dXJlIHNpZ25hdHVyZSA9ICZvcmlnaW5hbFNpZ25hdHVyZS0+ZXhwYW5kKCk7CiAgICAgbmV3U3Rh
Y2sucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaWduYXR1cmUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJl
PigpLT5hcmd1bWVudENvdW50KCkpOwogICAgIEFTU0VSVChlbmNsb3NpbmdTdGFjay5zaXplKCkg
Pj0gc2lnbmF0dXJlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpKTsK
ICAgICB1bnNpZ25lZCBvZmZzZXQgPSBlbmNsb3NpbmdTdGFjay5zaXplKCkgLSBzaWduYXR1cmUt
PmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCk7CkBAIC0yMjksNyArMjMw
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpGdW5jdGlvblBhcnNlcihDb250ZXh0JiBjb250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlv
blN0YXJ0LCBzaXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWdu
YXR1cmUsIGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQogICAgIDogUGFyc2VyKGZ1bmN0
aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAg
LCBtX3NpZ25hdHVyZShzaWduYXR1cmUpCisgICAgLCBtX3NpZ25hdHVyZShzaWduYXR1cmUuZXhw
YW5kKCkpCiAgICAgLCBtX2luZm8oaW5mbykKIHsKICAgICBpZiAodmVyYm9zZSkKQEAgLTI0Miw2
ICsyNDMsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpIC0+IFJlc3Vs
dAogewogICAgIHVpbnQzMl90IGxvY2FsR3JvdXBzQ291bnQ7CiAKKyAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFtX3NpZ25hdHVyZS5pczxGdW5jdGlvblNpZ25hdHVyZT4oKSwgInR5cGUgc2lnbmF0
dXJlIHdhcyBub3QgYSBmdW5jdGlvbiBzaWduYXR1cmUiKTsKICAgICBjb25zdCBhdXRvJiBzaWdu
YXR1cmUgPSAqbV9zaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighbV9jb250ZXh0LmFkZEFyZ3VtZW50cyhtX3NpZ25hdHVyZSksICJjYW4n
dCBhZGQgIiwgc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgIiBhcmd1bWVudHMgdG8gRnVuY3Rp
b24iKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihsb2NhbEdyb3Vw
c0NvdW50KSwgImNhbid0IGdldCBsb2NhbCBncm91cHMgY291bnQiKTsKQEAgLTExOTMsNyArMTE5
NSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRleChmdW5jdGlvbklu
ZGV4KSk7CiAKICAgICAgICAgVHlwZUluZGV4IGNhbGxlZVR5cGVJbmRleCA9IG1faW5mby50eXBl
SW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwotICAgICAgICBjb25z
dCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChj
YWxsZWVUeXBlSW5kZXgpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmlu
aXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjYWxsZWVUeXBlSW5kZXgpLmV4cGFuZCgpOwog
ICAgICAgICBjb25zdCBhdXRvJiBjYWxsZWVTaWduYXR1cmUgPSAqdHlwZURlZmluaXRpb24uYXM8
RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY2FsbGVl
U2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNh
bGwgZnVuY3Rpb24gaW5kZXggIiwgZnVuY3Rpb25JbmRleCwgIiBoYXMgIiwgY2FsbGVlU2lnbmF0
dXJlLmFyZ3VtZW50Q291bnQoKSwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFj
ayBjdXJyZW50bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIp
OwogCkBAIC0xMjMxLDcgKzEyMzMsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChD
UkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udHlwZUNvdW50
KCkgPD0gc2lnbmF0dXJlSW5kZXgsICJjYWxsX2luZGlyZWN0J3Mgc2lnbmF0dXJlIGluZGV4ICIs
IHNpZ25hdHVyZUluZGV4LCAiIGV4Y2VlZHMga25vd24gc2lnbmF0dXJlcyAiLCBtX2luZm8udHlw
ZUNvdW50KCkpOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50YWJsZXNbdGFi
bGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJjYWxsX2luZGly
ZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxlIGhhcyB0eXBlIGZ1bmNyZWYiKTsKIAotICAg
ICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBtX2luZm8udHlwZVNp
Z25hdHVyZXNbc2lnbmF0dXJlSW5kZXhdLmdldCgpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5p
dGlvbiYgdHlwZURlZmluaXRpb24gPSBtX2luZm8udHlwZVNpZ25hdHVyZXNbc2lnbmF0dXJlSW5k
ZXhdLmdldCgpLmV4cGFuZCgpOwogICAgICAgICBjb25zdCBhdXRvJiBjYWxsZWVTaWduYXR1cmUg
PSAqdHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIHNpemVf
dCBhcmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8v
IEFkZCB0aGUgY2FsbGVlJ3MgaW5kZXguCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJn
dW1lbnRDb3VudCA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbGxfaW5kaXJlY3QgZXhw
ZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0
YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVz
Iik7CkBAIC0xMjY0LDcgKzEyNjYsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChD
UkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNSZWZXaXRoVHlw
ZUluZGV4KG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkpLCAibm9uLWZ1bmNyZWYgY2Fs
bF9yZWYgdmFsdWUgIiwgbV9leHByZXNzaW9uU3RhY2subGFzdCgpLnR5cGUoKS5raW5kKTsKIAog
ICAgICAgICBjb25zdCBUeXBlSW5kZXggY2FsbGVlVHlwZUluZGV4ID0gbV9leHByZXNzaW9uU3Rh
Y2subGFzdCgpLnR5cGUoKS5pbmRleDsKLSAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHR5
cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVlVHlwZUluZGV4KTsKKyAg
ICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0
aW9uOjpnZXQoY2FsbGVlVHlwZUluZGV4KS5leHBhbmQoKTsKICAgICAgICAgY29uc3QgYXV0byYg
Y2FsbGVlU2lnbmF0dXJlID0gKnR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
OwogICAgICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGNhbGxlZVNpZ25hdHVyZS5hcmd1bWVu
dENvdW50KCkgKyAxOyAvLyBBZGQgdGhlIGNhbGxlZSdzIHZhbHVlLgogICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKGFyZ3VtZW50Q291bnQgPiBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICJj
YWxsX3JlZiBleHBlY3RzICIsIGFyZ3VtZW50Q291bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4
cHJlc3Npb24gc3RhY2sgY3VycmVudGx5IGhvbGRzICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KSwgIiB2YWx1ZXMiKTsKQEAgLTEyOTQsNyArMTI5Niw4IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZ
X1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBCbG9ja1NpZ25hdHVyZSBpbmxpbmVTaWdu
YXR1cmVBc1R5cGU7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlQmxvY2tTaWdu
YXR1cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1cmVBc1R5cGUpLCAiY2FuJ3QgZ2V0IGJsb2NrJ3Mg
c2lnbmF0dXJlIik7CiAKLSAgICAgICAgY29uc3QgRnVuY3Rpb25TaWduYXR1cmUqIGlubGluZVNp
Z25hdHVyZSA9IGlubGluZVNpZ25hdHVyZUFzVHlwZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7
CisgICAgICAgIEJsb2NrU2lnbmF0dXJlIGV4cGFuZGVkU2lnbmF0dXJlID0gJmlubGluZVNpZ25h
dHVyZUFzVHlwZS0+ZXhwYW5kKCk7CisgICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBp
bmxpbmVTaWduYXR1cmUgPSBleHBhbmRlZFNpZ25hdHVyZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+
KCk7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9leHByZXNzaW9uU3RhY2suc2l6
ZSgpIDwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksICJUb28gZmV3IHZhbHVlcyBv
biBzdGFjayBmb3IgYmxvY2suIEJsb2NrIGV4cGVjdHMgIiwgaW5saW5lU2lnbmF0dXJlLT5hcmd1
bWVudENvdW50KCksICIsIGJ1dCBvbmx5ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB3
ZXJlIHByZXNlbnQuIEJsb2NrIGhhcyBpbmxpbmVTaWduYXR1cmU6ICIsIGlubGluZVNpZ25hdHVy
ZS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKSAtIGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7
ICsraSkgewpAQCAtMTMwNSw3ICsxMzA4LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVf
T1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGludDY0X3Qgb2xkU2l6ZSA9IG1fZXhwcmVzc2lvblN0
YWNrLnNpemUoKTsKICAgICAgICAgU3RhY2sgbmV3U3RhY2s7CiAgICAgICAgIENvbnRyb2xUeXBl
IGJsb2NrOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRCbG9jayhpbmxpbmVT
aWduYXR1cmVBc1R5cGUsIG1fZXhwcmVzc2lvblN0YWNrLCBibG9jaywgbmV3U3RhY2spKTsKKyAg
ICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQmxvY2soZXhwYW5kZWRTaWduYXR1cmUs
IG1fZXhwcmVzc2lvblN0YWNrLCBibG9jaywgbmV3U3RhY2spKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChvbGRTaXplLCBvbGRTaXplIC0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpID09IGlubGlu
ZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgQVNTRVJUKG5ld1N0YWNrLnNp
emUoKSA9PSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CiAKQEAgLTEzMTgsNyAr
MTMyMSw4IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICBCbG9ja1NpZ25hdHVyZSBpbmxpbmVTaWduYXR1cmVBc1R5cGU7CiAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIXBhcnNlQmxvY2tTaWduYXR1cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1
cmVBc1R5cGUpLCAiY2FuJ3QgZ2V0IGxvb3AncyBzaWduYXR1cmUiKTsKIAotICAgICAgICBjb25z
dCBGdW5jdGlvblNpZ25hdHVyZSogaW5saW5lU2lnbmF0dXJlID0gaW5saW5lU2lnbmF0dXJlQXNU
eXBlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAgICAgICAgQmxvY2tTaWduYXR1cmUgZXhw
YW5kZWRTaWduYXR1cmUgPSAmaW5saW5lU2lnbmF0dXJlQXNUeXBlLT5leHBhbmQoKTsKKyAgICAg
ICAgY29uc3QgRnVuY3Rpb25TaWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGV4cGFuZGVkU2ln
bmF0dXJlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1Jf
RkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgPCBpbmxpbmVTaWduYXR1cmUtPmFyZ3Vt
ZW50Q291bnQoKSwgIlRvbyBmZXcgdmFsdWVzIG9uIHN0YWNrIGZvciBsb29wIGJsb2NrLiBMb29w
IGV4cGVjdHMgIiwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksICIsIGJ1dCBvbmx5
ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB3ZXJlIHByZXNlbnQuIExvb3AgaGFzIGlu
bGluZVNpZ25hdHVyZTogIiwgaW5saW5lU2lnbmF0dXJlLT50b1N0cmluZygpKTsKICAgICAgICAg
dW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gaW5saW5lU2lnbmF0
dXJlLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBp
bmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CkBAIC0xMzI5LDcgKzEzMzMs
NyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAg
aW50NjRfdCBvbGRTaXplID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOwogICAgICAgICBTdGFj
ayBuZXdTdGFjazsKICAgICAgICAgQ29udHJvbFR5cGUgbG9vcDsKLSAgICAgICAgV0FTTV9UUllf
QUREX1RPX0NPTlRFWFQoYWRkTG9vcChpbmxpbmVTaWduYXR1cmVBc1R5cGUsIG1fZXhwcmVzc2lv
blN0YWNrLCBsb29wLCBuZXdTdGFjaywgbV9sb29wSW5kZXgrKykpOworICAgICAgICBXQVNNX1RS
WV9BRERfVE9fQ09OVEVYVChhZGRMb29wKGV4cGFuZGVkU2lnbmF0dXJlLCBtX2V4cHJlc3Npb25T
dGFjaywgbG9vcCwgbmV3U3RhY2ssIG1fbG9vcEluZGV4KyspKTsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChvbGRTaXplLCBvbGRTaXplIC0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpID09IGlubGlu
ZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgQVNTRVJUKG5ld1N0YWNrLnNp
emUoKSA9PSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CiAKQEAgLTEzNDQsNyAr
MTM0OCw4IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1faW5mbywgaW5s
aW5lU2lnbmF0dXJlQXNUeXBlKSwgImNhbid0IGdldCBpZidzIHNpZ25hdHVyZSIpOwogICAgICAg
ICBXQVNNX1RSWV9QT1BfRVhQUkVTU0lPTl9TVEFDS19JTlRPKGNvbmRpdGlvbiwgImlmIGNvbmRp
dGlvbiIpOwogCi0gICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1
cmUgPSBpbmxpbmVTaWduYXR1cmVBc1R5cGUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAg
ICAgICBCbG9ja1NpZ25hdHVyZSBleHBhbmRlZFNpZ25hdHVyZSA9ICZpbmxpbmVTaWduYXR1cmVB
c1R5cGUtPmV4cGFuZCgpOworICAgICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSogaW5saW5l
U2lnbmF0dXJlID0gZXhwYW5kZWRTaWduYXR1cmUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOwog
ICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFjb25kaXRpb24udHlwZSgpLmlzSTMyKCks
ICJpZiBjb25kaXRpb24gbXVzdCBiZSBpMzIsIGdvdCAiLCBjb25kaXRpb24udHlwZSgpLmtpbmQp
OwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLnNpemUo
KSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiVG9vIGZldyBhcmd1bWVudHMg
b24gc3RhY2sgZm9yIGlmIGJsb2NrLiBJZiBleHBlY3RzICIsIGlubGluZVNpZ25hdHVyZS0+YXJn
dW1lbnRDb3VudCgpLCAiLCBidXQgb25seSAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIg
d2VyZSBwcmVzZW50LiBJZiBibG9jayBoYXMgc2lnbmF0dXJlOiAiLCBpbmxpbmVTaWduYXR1cmUt
PnRvU3RyaW5nKCkpOwogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFj
ay5zaXplKCkgLSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKQEAgLTEzNTQsNyAr
MTM1OSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAg
ICAgICBpbnQ2NF90IG9sZFNpemUgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCk7CiAgICAgICAg
IFN0YWNrIG5ld1N0YWNrOwogICAgICAgICBDb250cm9sVHlwZSBjb250cm9sOwotICAgICAgICBX
QVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRJZihjb25kaXRpb24sIGlubGluZVNpZ25hdHVyZUFz
VHlwZSwgbV9leHByZXNzaW9uU3RhY2ssIGNvbnRyb2wsIG5ld1N0YWNrKSk7CisgICAgICAgIFdB
U01fVFJZX0FERF9UT19DT05URVhUKGFkZElmKGNvbmRpdGlvbiwgZXhwYW5kZWRTaWduYXR1cmUs
IG1fZXhwcmVzc2lvblN0YWNrLCBjb250cm9sLCBuZXdTdGFjaykpOwogICAgICAgICBBU1NFUlRf
VU5VU0VEKG9sZFNpemUsIG9sZFNpemUgLSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgPT0gaW5s
aW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogICAgICAgICBBU1NFUlQobmV3U3RhY2su
c2l6ZSgpID09IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKIApAQCAtMTM4MSw3
ICsxMzg2LDggQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAg
ICAgICAgIEJsb2NrU2lnbmF0dXJlIGlubGluZVNpZ25hdHVyZUFzVHlwZTsKICAgICAgICAgV0FT
TV9QQVJTRVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZShtX2luZm8sIGlubGluZVNpZ25h
dHVyZUFzVHlwZSksICJjYW4ndCBnZXQgdHJ5J3Mgc2lnbmF0dXJlIik7CiAKLSAgICAgICAgY29u
c3QgRnVuY3Rpb25TaWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGlubGluZVNpZ25hdHVyZUFz
VHlwZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgICAgIEJsb2NrU2lnbmF0dXJlIGV4
cGFuZGVkU2lnbmF0dXJlID0gJmlubGluZVNpZ25hdHVyZUFzVHlwZS0+ZXhwYW5kKCk7CisgICAg
ICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBleHBhbmRlZFNp
Z25hdHVyZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIFdBU01fVkFMSURBVE9S
X0ZBSUxfSUYobV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIDwgaW5saW5lU2lnbmF0dXJlLT5hcmd1
bWVudENvdW50KCksICJUb28gZmV3IGFyZ3VtZW50cyBvbiBzdGFjayBmb3IgdHJ5IGJsb2NrLiBU
cnllIGV4cGVjdHMgIiwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksICIsIGJ1dCBv
bmx5ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB3ZXJlIHByZXNlbnQuIFRyeSBibG9j
ayBoYXMgc2lnbmF0dXJlOiAiLCBpbmxpbmVTaWduYXR1cmUtPnRvU3RyaW5nKCkpOwogICAgICAg
ICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBpbmxpbmVTaWdu
YXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCkBAIC0xMzkwLDcgKzEzOTYs
NyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAg
aW50NjRfdCBvbGRTaXplID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOwogICAgICAgICBTdGFj
ayBuZXdTdGFjazsKICAgICAgICAgQ29udHJvbFR5cGUgY29udHJvbDsKLSAgICAgICAgV0FTTV9U
UllfQUREX1RPX0NPTlRFWFQoYWRkVHJ5KGlubGluZVNpZ25hdHVyZUFzVHlwZSwgbV9leHByZXNz
aW9uU3RhY2ssIGNvbnRyb2wsIG5ld1N0YWNrKSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19D
T05URVhUKGFkZFRyeShleHBhbmRlZFNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3RhY2ssIGNvbnRy
b2wsIG5ld1N0YWNrKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU2l6ZSwgb2xkU2l6ZSAt
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA9PSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291
bnQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdGFjay5zaXplKCkgPT0gaW5saW5lU2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KCkpOwogCkBAIC0xNDA3LDcgKzE0MTMsNyBAQCBGT1JfRUFDSF9XQVNN
X01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgdWludDMyX3QgZXhjZXB0aW9u
SW5kZXg7CiAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VFeGNlcHRpb25J
bmRleChleGNlcHRpb25JbmRleCkpOwogICAgICAgICBUeXBlSW5kZXggdHlwZUluZGV4ID0gbV9p
bmZvLnR5cGVJbmRleEZyb21FeGNlcHRpb25JbmRleFNwYWNlKGV4Y2VwdGlvbkluZGV4KTsKLSAg
ICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGV4Y2VwdGlvblNpZ25hdHVyZSA9IFR5cGVJbmZv
cm1hdGlvbjo6Z2V0KHR5cGVJbmRleCk7CisgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBl
eGNlcHRpb25TaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFu
ZCgpOwogCiAgICAgICAgIENvbnRyb2xFbnRyeSYgY29udHJvbEVudHJ5ID0gbV9jb250cm9sU3Rh
Y2subGFzdCgpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1RyeU9yQ2F0Y2go
Y29udHJvbEVudHJ5LmNvbnRyb2xEYXRhKSwgImNhdGNoIGJsb2NrIGlzbid0IGFzc29jaWF0ZWQg
dG8gYSB0cnkiKTsKQEAgLTE2NjEsNyArMTY2Nyw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29u
dGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlhbFJlc3VsdAogICAg
ICAgICB1aW50MzJfdCBleGNlcHRpb25JbmRleDsKICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBF
Ul9GQUlMUyhwYXJzZUV4Y2VwdGlvbkluZGV4KGV4Y2VwdGlvbkluZGV4KSk7CiAgICAgICAgIFR5
cGVJbmRleCB0eXBlSW5kZXggPSBtX2luZm8udHlwZUluZGV4RnJvbUV4Y2VwdGlvbkluZGV4U3Bh
Y2UoZXhjZXB0aW9uSW5kZXgpOwotICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgZXhjZXB0
aW9uU2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4KTsKKyAgICAgICAg
Y29uc3QgVHlwZURlZmluaXRpb24mIGV4Y2VwdGlvblNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlv
bjo6Z2V0KHR5cGVJbmRleCkuZXhwYW5kKCk7CiAKICAgICAgICAgaWYgKG1fdW5yZWFjaGFibGVC
bG9ja3MgPiAxKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCmluZGV4IDczYmE5YmQyMTNlNTU0NmQ1NTA1OTEzMTc1
YjhiYjJjZmY5YmFiZTkuLjgyZjdiNmRlODZiOWY5MDFlNjgxMGZjYzY1M2E2ZTlkMGVmM2FlM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcApAQCAtMjMz
LDYgKzIzMyw4IEBAIHZvaWQgSW5zdGFuY2U6OmluaXRFbGVtZW50U2VnbWVudCh1aW50MzJfdCB0
YWJsZUluZGV4LCBjb25zdCBFbGVtZW50JiBzZWdtZW50LCB1CiAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1MTAKICAgICAgICAgdWludDMyX3Qg
ZnVuY3Rpb25JbmRleCA9IHNlZ21lbnQuZnVuY3Rpb25JbmRpY2VzW3NyY0luZGV4XTsKICAgICAg
ICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1fbW9kdWxlLT50eXBlSW5kZXhGcm9tRnVuY3Rpb25J
bmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOworICAgICAgICBjb25zdCBhdXRvJiBzaWduYXR1cmUg
PSBUeXBlSW5mb3JtYXRpb246OmdldEZ1bmN0aW9uU2lnbmF0dXJlKHR5cGVJbmRleCk7CisgICAg
ICAgIFR5cGVJbmRleCBmdW5jdGlvblR5cGVJbmRleCA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHNp
Z25hdHVyZSk7CiAgICAgICAgIGlmIChpc0ltcG9ydEZ1bmN0aW9uKGZ1bmN0aW9uSW5kZXgpKSB7
CiAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25JbXBvcnQgPSBpbXBvcnRGdW5jdGlvbjxX
cml0ZUJhcnJpZXI8SlNPYmplY3Q+PihmdW5jdGlvbkluZGV4KS0+Z2V0KCk7CiAgICAgICAgICAg
ICBpZiAoaXNXZWJBc3NlbWJseUhvc3RGdW5jdGlvbihmdW5jdGlvbkltcG9ydCkpIHsKQEAgLTI1
MSwxNCArMjUzLDEzIEBAIHZvaWQgSW5zdGFuY2U6OmluaXRFbGVtZW50U2VnbWVudCh1aW50MzJf
dCB0YWJsZUluZGV4LCBjb25zdCBFbGVtZW50JiBzZWdtZW50LCB1CiAgICAgICAgICAgICAgICAg
ZnVuY3Rpb25JbXBvcnQsCiAgICAgICAgICAgICAgICAgZnVuY3Rpb25JbmRleCwKICAgICAgICAg
ICAgICAgICBqc0luc3RhbmNlLAotICAgICAgICAgICAgICAgIHR5cGVJbmRleCk7CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb25UeXBlSW5kZXgpOwogICAgICAgICAgICAganNUYWJsZS0+c2V0KGRz
dEluZGV4LCB3cmFwcGVyRnVuY3Rpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIAogICAgICAgICBDYWxsZWUmIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSA9IGNhbGxlZUdy
b3VwKCktPmVtYmVkZGVyRW50cnlwb2ludENhbGxlZUZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVu
Y3Rpb25JbmRleCk7CiAgICAgICAgIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rpb246OkxvYWRM
b2NhdGlvbiBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gY2FsbGVlR3JvdXAoKS0+ZW50cnlwb2lu
dExvYWRMb2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7Ci0gICAg
ICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0RnVuY3Rpb25T
aWduYXR1cmUodHlwZUluZGV4KTsKICAgICAgICAgLy8gRklYTUU6IFNheSB3ZSBleHBvcnQgbG9j
YWwgZnVuY3Rpb24gImZvbyIgYXQgZnVuY3Rpb24gaW5kZXggMC4KICAgICAgICAgLy8gV2hhdCBp
ZiB3ZSBhbHNvIHNldCBpdCB0byB0aGUgdGFibGUgYW4gRWxlbWVudCB3LyBpbmRleCAwLgogICAg
ICAgICAvLyBEb2VzIChuZXcgSW5zdGFuY2UoLi4uKSkuZXhwb3J0cy5mb28gPT09IHRhYmxlLmdl
dCgwKT8KQEAgLTI3Miw3ICsyNzMsNyBAQCB2b2lkIEluc3RhbmNlOjppbml0RWxlbWVudFNlZ21l
bnQodWludDMyX3QgdGFibGVJbmRleCwgY29uc3QgRWxlbWVudCYgc2VnbWVudCwgdQogICAgICAg
ICAgICAganNJbnN0YW5jZSwKICAgICAgICAgICAgIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSwK
ICAgICAgICAgICAgIGVudHJ5cG9pbnRMb2FkTG9jYXRpb24sCi0gICAgICAgICAgICB0eXBlSW5k
ZXgpOworICAgICAgICAgICAgZnVuY3Rpb25UeXBlSW5kZXgpOwogICAgICAgICBqc1RhYmxlLT5z
ZXQoZHN0SW5kZXgsIGZ1bmN0aW9uKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcAppbmRleCA3MWUwNjQ3YzU2NjY2ZWEw
ZmZkM2NjNDVhNGRlNjExZTA3OTI3N2ZkLi5hZWEwMTRmN2Y0MTg2YmUwMWY4ZWMwOTQ4YzY0YjFh
ZDM5ZTkwM2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTElu
dEdlbmVyYXRvci5jcHAKQEAgLTYyMyw2ICs2MjMsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpj
YWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVy
ZQogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpG
dW5jOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CisgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlJlYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIH0KICAgICB9OwpAQCAtNjgxLDYgKzY4Miw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNh
bGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJl
CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1
bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6UmVjOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTcxMSw2ICs3MTMsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxs
SW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQog
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5j
OgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlJlYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC03NjksNiArNzcyLDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbElu
Zm9ybWF0aW9uRm9yQ2FsbGVlKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoK
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpS
ZWM6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAgICAgfQpAQCAtODIwLDYgKzgyNCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3Vt
ZW50cyhjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzCiAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVj
OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBs
YW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKaW5k
ZXggOGI0MzZkMmRjZjU2ZWY2MmVkMmU0NDcyOGI0NDEzMTVmY2M5ODM3YS4uYzExN2UzYWY0NWIy
MDg1MWFmMGY5NmZkZTk3NTUzNDM3OTE3YmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50UGxhbi5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIExMSW50UGxh
bjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbigpCiAgICAgZm9yICh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRpb24tPmZ1bmN0aW9ucy5z
aXplKCk7IGZ1bmN0aW9uSW5kZXgrKykgewogICAgICAgICBpZiAobV9leHBvcnRlZEZ1bmN0aW9u
SW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBtX21vZHVsZUluZm9ybWF0aW9uLT5y
ZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAg
ICAgIFR5cGVJbmRleCB0eXBlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9uLT5pbnRlcm5hbEZ1
bmN0aW9uVHlwZUluZGljZXNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgICAgICBjb25zdCBUeXBl
RGVmaW5pdGlvbiYgc2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4KTsK
KyAgICAgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5mb3Jt
YXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFuZCgpOwogICAgICAgICAgICAgQ0NhbGxIZWxwZXJz
IGppdDsKICAgICAgICAgICAgIC8vIFRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcwogICAg
ICAgICAgICAgTWVtb3J5TW9kZSBtb2RlID0gTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKaW5kZXggNTg3MDM0NzM0NjYzOGQ0
YTJkZTUzMjBiNDUzNzQ2NDM3ZmVhZDgyNS4uYzI4NDk1N2QxM2ExYTI1N2Y2MjkwZWYyNDY0ZTcy
YTBmNWIyNWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxp
bWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaApAQCAt
NDUsNiArNDUsNyBAQCBjb25zdGV4cHIgc2l6ZV90IG1heEV4Y2VwdGlvbnMgPSAxMDAwMDA7CiBj
b25zdGV4cHIgc2l6ZV90IG1heEdsb2JhbHMgPSAxMDAwMDAwOwogY29uc3RleHByIHNpemVfdCBt
YXhEYXRhU2VnbWVudHMgPSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heFN0cnVjdEZpZWxk
Q291bnQgPSAxMDAwMDsKK2NvbnN0ZXhwciBzaXplX3QgbWF4UmVjdXJzaW9uR3JvdXBDb3VudCA9
IDEwMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFN0cmluZ1NpemUgPSAxMDAwMDA7CiBjb25z
dGV4cHIgc2l6ZV90IG1heE1vZHVsZVNpemUgPSAxMDI0ICogMTAyNCAqIDEwMjQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5kZXggNDM4ZmYzZjcyZDliNjY0OGFhZjcw
YTQ5YTBhYTdiMTUxOGI2YjlhZS4uZTVkNTEzYTcxZmZiYmUzMTI5ZDEzY2Y4ZmQ3NzRhM2EyMjM5
YWY0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhcnNlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaApAQCAtNjQsNiAr
NjQsMzAgQEAgcHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldDsgfQogCiBwcm90ZWN0ZWQ6CisgICAgc3RydWN0IFJlY3Vyc2lvbkdyb3VwSW5mb3JtYXRp
b24geworICAgICAgICBib29sIGluUmVjdXJzaW9uR3JvdXA7CisgICAgICAgIHVpbnQzMl90IHN0
YXJ0OworICAgICAgICB1aW50MzJfdCBlbmQ7CisgICAgfTsKKworICAgIC8vIFJBSUkgY2xhc3Mg
dG8gaGVscCBzZXQgcmVjdXJzaW9uIGdyb3VwIGluZm9ybWF0aW9uLgorICAgIGNsYXNzIFJlY3Vy
c2lvbkdyb3VwR3VhcmQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVjdXJzaW9uR3JvdXBHdWFy
ZChQYXJzZXIqIHBhcnNlciwgUmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbiBpbmZvKQorICAgICAg
ICAgICAgOiBtX3BhcnNlcihwYXJzZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fcGFyc2Vy
LT5tX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24gPSBpbmZvOworICAgICAgICB9CisKKyAgICAg
ICAgflJlY3Vyc2lvbkdyb3VwR3VhcmQoKQorICAgICAgICB7CisgICAgICAgICAgICBtX3BhcnNl
ci0+bV9yZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uID0geyB9OworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBQYXJzZXIqIG1fcGFyc2VyOworICAgIH07CisKICAgICBQYXJzZXIo
Y29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBib29sIFdBUk5fVU5VU0VEX1JFVFVSTiBj
b25zdW1lQ2hhcmFjdGVyKGNoYXIpOwpAQCAtMTEzLDYgKzEzNyw4IEBAIHByaXZhdGU6CiAgICAg
c2l6ZV90IG1fc291cmNlTGVuZ3RoOwogICAgIC8vIFdlIGtlZXAgYSBsb2NhbCByZWZlcmVuY2Ug
dG8gdGhlIGdsb2JhbCB0YWJsZSBzbyB3ZSBkb24ndCBoYXZlIHRvIGZldGNoIGl0IHRvIGZpbmQg
dGh1bmsgdHlwZXMuCiAgICAgY29uc3QgVHlwZUluZm9ybWF0aW9uJiBtX3R5cGVJbmZvcm1hdGlv
bjsKKyAgICAvLyBVc2VkIHRvIHRyYWNrIHdoZXRoZXIgd2UgYXJlIGluIGEgcmVjdXJzaW9uIGdy
b3VwIGFuZCB0aGUgZ3JvdXAncyB0eXBlIGluZGljZXMsIGlmIGFueS4KKyAgICBSZWN1cnNpb25H
cm91cEluZm9ybWF0aW9uIG1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbjsKIH07CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgpAQCAtMTIwLDYgKzE0Niw3IEBAIEFMV0FZU19JTkxJ
TkUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFyc2VyKGNvbnN0IHVpbnQ4X3QqIHNvdXJjZUJ1ZmZl
ciwgc2l6ZV90IHNvCiAgICAgOiBtX3NvdXJjZShzb3VyY2VCdWZmZXIpCiAgICAgLCBtX3NvdXJj
ZUxlbmd0aChzb3VyY2VMZW5ndGgpCiAgICAgLCBtX3R5cGVJbmZvcm1hdGlvbihUeXBlSW5mb3Jt
YXRpb246OnNpbmdsZXRvbigpKQorICAgICwgbV9yZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uKHsg
fSkKIHsKIH0KIApAQCAtMzEyLDcgKzMzOSw3IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQYXJzZXI8
U3VjY2Vzc1R5cGU+OjpwYXJzZUhlYXBUeXBlKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90
PihoZWFwVHlwZSkgPj0gaW5mby50eXBlQ291bnQoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6
ZV90PihoZWFwVHlwZSkgPj0gaW5mby50eXBlQ291bnQoKSAmJiAoIW1fcmVjdXJzaW9uR3JvdXBJ
bmZvcm1hdGlvbi5pblJlY3Vyc2lvbkdyb3VwIHx8ICEoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhl
YXBUeXBlKSA+PSBtX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24uc3RhcnQgJiYgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGhlYXBUeXBlKSA8PSBtX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24uZW5k
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdCA9IGhlYXBUeXBlOwpAQCAt
MzM5LDcgKzM2NiwxOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6
cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mCiAgICAgICAgIGludDMyX3Qg
aGVhcFR5cGU7CiAgICAgICAgIGlmICghcGFyc2VIZWFwVHlwZShpbmZvLCBoZWFwVHlwZSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHR5cGVJbmRleCA9IGhlYXBUeXBlIDwg
MCA/IHN0YXRpY19jYXN0PFR5cGVJbmRleD4oaGVhcFR5cGUpIDogVHlwZUluZm9ybWF0aW9uOjpn
ZXQoaW5mby50eXBlU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOworICAgICAgICBpZiAoaGVh
cFR5cGUgPCAwKQorICAgICAgICAgICAgdHlwZUluZGV4ID0gc3RhdGljX2Nhc3Q8VHlwZUluZGV4
PihoZWFwVHlwZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gRm9yIHJlY3Vyc2l2
ZSByZWZlcmVuY2VzIGluc2lkZSByZWN1cnNpb24gZ3JvdXBzLCB3ZSByZS11c2UgdGhlCisgICAg
ICAgICAgICAvLyBgcmVjYCB0eXBlIGNvZGUgdG8gYmUgdGhlIGludGVybmFsIHJlcHJlc2VudGF0
aW9uIG9mIGByZWMuPGk+YAorICAgICAgICAgICAgLy8gaW4gdGhlIGZvcm1hbCBzZW1hbnRpY3Mu
IFRoZXNlIHNob3VsZCBub3QgbGVhayBvdXQsIGFzIHRoZXkgYXJlCisgICAgICAgICAgICAvLyBy
ZXBsYWNlZCB3aXRoIHJlYWwgdHlwZSBpbmRpY2VzIGR1cmluZyB0eXBlIHVucm9sbGluZy9leHBh
bnNpb24uCisgICAgICAgICAgICBpZiAobV9yZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uLmluUmVj
dXJzaW9uR3JvdXAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlYXBUeXBlKSA+PSBtX3JlY3Vy
c2lvbkdyb3VwSW5mb3JtYXRpb24uc3RhcnQpIHsKKyAgICAgICAgICAgICAgICB0eXBlS2luZCA9
IFR5cGVLaW5kOjpSZWM7CisgICAgICAgICAgICAgICAgdHlwZUluZGV4ID0gc3RhdGljX2Nhc3Q8
VHlwZUluZGV4PihoZWFwVHlwZSAtIG1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbi5zdGFydCk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0eXBlSW5kZXggPSBUeXBlSW5m
b3JtYXRpb246OmdldChpbmZvLnR5cGVTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQoKSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBUeXBlIHR5cGUgPSB7IHR5cGVLaW5kLCBzdGF0aWNfY2FzdDxO
dWxsYWJsZT4oaXNOdWxsYWJsZSksIHR5cGVJbmRleCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IGQyZGI1ZGJmNmM5NjE5NzYw
ZWQzNDI5ZDAwOGFhYmI4YzY2MWEzMGIuLjBmM2QwNzc5MGRmOTZlZTRkOTNhOTg1MGI3Y2I5ODk1
NzJjMDBkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0
aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlv
blBhcnNlci5jcHAKQEAgLTQyLDExICs0MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFdhc20gewogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0aWFsUmVzdWx0
CiB7CiAgICAgdWludDMyX3QgY291bnQ7CisgICAgdWludDMyX3QgdHlwZUluZGV4Q291bnQ7CiAK
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihjb3VudCksICJjYW4ndCBn
ZXQgVHlwZSBzZWN0aW9uJ3MgY291bnQiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKGNvdW50
ID4gbWF4VHlwZXMsICJUeXBlIHNlY3Rpb24ncyBjb3VudCBpcyB0b28gYmlnICIsIGNvdW50LCAi
IG1heGltdW0gIiwgbWF4VHlwZXMpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIW1faW5mby0+
dHlwZVNpZ25hdHVyZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGNvdW50KSwgImNhbid0IGFsbG9jYXRl
IGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIGNvdW50LCAiIGVudHJpZXMiKTsK
IAorICAgIHR5cGVJbmRleENvdW50ID0gY291bnQ7CisKICAgICBmb3IgKHVpbnQzMl90IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpbnQ4X3QgdHlwZUtpbmQ7CiAgICAgICAgIFdB
U01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlS2luZCksICJjYW4ndCBnZXQgIiwgaSwg
InRoIFR5cGUncyB0eXBlIik7CkBAIC02MywxMiArNjYsMzMgQEAgYXV0byBTZWN0aW9uUGFyc2Vy
OjpwYXJzZVR5cGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlU3RydWN0VHlwZShpLCBzaWduYXR1cmUpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzogeworICAgICAg
ICAgICAgaWYgKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhaWwoaSwgInRoIHR5cGUgZmFpbGVkIHRvIHBhcnNlIGJlY2F1c2UgcmVjIHR5cGVz
IGFyZSBub3QgZW5hYmxlZCIpOworCisgICAgICAgICAgICB1aW50MzJfdCB0eXBlQ291bnQ7Cisg
ICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlUmVjdXJzaW9uR3JvdXAo
aSwgc2lnbmF0dXJlLCB0eXBlQ291bnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFpbChpLCAidGggVHlwZSBp
cyBub24tRnVuYyAiLCB0eXBlS2luZCk7CiAgICAgICAgIH0KIAogICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFzaWduYXR1cmUsICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciBU
eXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0gICAgICAgIG1faW5mby0+dHlw
ZVNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZS5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICAgICAgLy8gVW50aWwgdGhlIHJlY3Vyc2lvbiBncm91cCBpcyBwYXJzZWQsIHdlIGRvIG5v
dCBrbm93IGhvdyBtYW55IHR5cGUKKyAgICAgICAgLy8gc2lnbmF0dXJlIGVudHJpZXMgdGhlIGdy
b3VwIHdpbGwgY29udHJpYnV0ZSB0byB0aGUgdHlwZSBpbmRleAorICAgICAgICAvLyBzcGFjZSwg
c28gd2UgbWF5IG5lZWQgdG8gcmVzaXplIHRoZSB0eXBlIHNpZ25hdHVyZXMgaGVyZS4KKyAgICAg
ICAgaWYgKHNpZ25hdHVyZS0+aXM8UmVjdXJzaW9uR3JvdXA+KCkpIHsKKyAgICAgICAgICAgIGNv
bnN0IFJlY3Vyc2lvbkdyb3VwKiByZWN1cnNpb25Hcm91cCA9IHNpZ25hdHVyZS0+YXM8UmVjdXJz
aW9uR3JvdXA+KCk7CisgICAgICAgICAgICB0eXBlSW5kZXhDb3VudCArPSByZWN1cnNpb25Hcm91
cC0+dHlwZUNvdW50KCkgLSAxOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighbV9p
bmZvLT50eXBlU2lnbmF0dXJlcy50cnlSZXNlcnZlQ2FwYWNpdHkodHlwZUluZGV4Q291bnQpLCAi
Y2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3MgIiwgdHlwZUlu
ZGV4Q291bnQsICIgdHlwZSBpbmRpY2VzIik7CisgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkg
PSAwOyBpIDwgcmVjdXJzaW9uR3JvdXAtPnR5cGVDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IHByb2plY3Rpb24gPSBUeXBlSW5mb3JtYXRpb246
OnR5cGVEZWZpbml0aW9uRm9yUHJvamVjdGlvbihzaWduYXR1cmUtPmluZGV4KCksIGkpOworICAg
ICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXByb2plY3Rpb24sICJjYW4ndCBhbGxv
Y2F0ZSBlbm91Z2ggbWVtb3J5IGZvciByZWN1cnNpb24gZ3JvdXAncyAiLCBpLCAidGggcHJvamVj
dGlvbiIpOworICAgICAgICAgICAgICAgIG1faW5mby0+dHlwZVNpZ25hdHVyZXMudW5jaGVja2Vk
QXBwZW5kKHByb2plY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgbV9pbmZvLT50eXBlU2lnbmF0dXJlcy51bmNoZWNrZWRB
cHBlbmQoc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4geyB9
OwogfQpAQCAtMTA1LDcgKzEyOSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJbXBvcnQo
KSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJz
ZVZhclVJbnQzMihmdW5jdGlvblR5cGVJbmRleCksICJjYW4ndCBnZXQgIiwgaW1wb3J0TnVtYmVy
LCAidGggSW1wb3J0J3MgZnVuY3Rpb24gc2lnbmF0dXJlIGluIG1vZHVsZSAnIiwgbW9kdWxlU3Ry
aW5nLCAiJyBmaWVsZCAnIiwgZmllbGRTdHJpbmcsICInIik7CiAgICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKGZ1bmN0aW9uVHlwZUluZGV4ID49IG1faW5mby0+dHlwZUNvdW50KCksICJp
bnZhbGlkIGZ1bmN0aW9uIHNpZ25hdHVyZSBmb3IgIiwgaW1wb3J0TnVtYmVyLCAidGggSW1wb3J0
LCAiLCBmdW5jdGlvblR5cGVJbmRleCwgIiBpcyBvdXQgb2YgcmFuZ2Ugb2YgIiwgbV9pbmZvLT50
eXBlQ291bnQoKSwgIiBpbiBtb2R1bGUgJyIsIG1vZHVsZVN0cmluZywgIicgZmllbGQgJyIsIGZp
ZWxkU3RyaW5nLCAiJyIpOwogICAgICAgICAgICAga2luZEluZGV4ID0gbV9pbmZvLT5pbXBvcnRG
dW5jdGlvblR5cGVJbmRpY2VzLnNpemUoKTsKLSAgICAgICAgICAgIFR5cGVJbmRleCB0eXBlSW5k
ZXggPSBUeXBlSW5mb3JtYXRpb246OmdldChtX2luZm8tPnR5cGVTaWduYXR1cmVzW2Z1bmN0aW9u
VHlwZUluZGV4XSk7CisgICAgICAgICAgICBUeXBlSW5kZXggdHlwZUluZGV4ID0gVHlwZUluZm9y
bWF0aW9uOjpnZXQobV9pbmZvLT50eXBlU2lnbmF0dXJlc1tmdW5jdGlvblR5cGVJbmRleF0tPmV4
cGFuZCgpKTsKICAgICAgICAgICAgIG1faW5mby0+aW1wb3J0RnVuY3Rpb25UeXBlSW5kaWNlcy51
bmNoZWNrZWRBcHBlbmQodHlwZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC00OTEsNyArNTE1LDcgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUVsZW1lbnQoKSAt
PiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIGNhc2UgMHgwNTogewogICAgICAgICAgICAgVHlwZSBy
ZWZUeXBlOwogICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VSZWZUeXBlKG1f
aW5mbywgcmVmVHlwZSksICJjYW4ndCBwYXJzZSByZWZ0eXBlIGluIGVsZW0gc2VjdGlvbiIpOwot
ICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcmVmVHlwZS5pc0Z1bmNyZWYoKSwgInJl
ZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CisgICAgICAgICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFpc0Z1bmNyZWYocmVmVHlwZSkgJiYgcmVmVHlwZS5pc051
bGxhYmxlKCksICJyZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIp
OwogCiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleENvdW50OwogICAgICAgICAgICAgV0FTTV9G
QUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUluZGV4Q291bnRGb3JFbGVtZW50U2VjdGlvbihpbmRl
eENvdW50LCBlbGVtZW50TnVtKSk7CkBAIC01MTMsNyArNTM3LDcgQEAgYXV0byBTZWN0aW9uUGFy
c2VyOjpwYXJzZUVsZW1lbnQoKSAtPiBQYXJ0aWFsUmVzdWx0CiAKICAgICAgICAgICAgIFR5cGUg
cmVmVHlwZTsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZSht
X2luZm8sIHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsK
LSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJy
ZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIpOworICAgICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNGdW5jcmVmKHJlZlR5cGUpICYmIHJlZlR5cGUuaXNO
dWxsYWJsZSgpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYi
KTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKICAgICAgICAgICAgIFdBU01f
RkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleENvdW50Rm9yRWxlbWVudFNlY3Rpb24oaW5k
ZXhDb3VudCwgZWxlbWVudE51bSkpOwpAQCAtNTI5LDcgKzU1Myw3IEBAIGF1dG8gU2VjdGlvblBh
cnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNlIDB4MDc6
IHsKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlw
ZSBpbiBlbGVtIHNlY3Rpb24iKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJl
ZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUg
ZnVuY3JlZiIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNGdW5jcmVmKHJl
ZlR5cGUpICYmIHJlZlR5cGUuaXNOdWxsYWJsZSgpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rp
b24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3Vu
dDsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleENvdW50
Rm9yRWxlbWVudFNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOwpAQCAtNzI0LDYgKzc0
OCw0MyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlU3RydWN0VHlwZSh1aW50MzJfdCBwb3Np
dGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiYgcwogICAgIHJldHVybiB7IH07CiB9CiAKK2F1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VSZWN1cnNpb25Hcm91cCh1aW50MzJfdCBwb3NpdGlvbiwg
UmVmUHRyPFR5cGVEZWZpbml0aW9uPiYgcmVjdXJzaW9uR3JvdXAsIHVpbnQzMl90JiB0eXBlQ291
bnQpIC0+IFBhcnRpYWxSZXN1bHQKK3sKKyAgICBBU1NFUlQoT3B0aW9uczo6dXNlV2ViQXNzZW1i
bHlHQygpKTsKKworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKHR5cGVD
b3VudCksICJjYW4ndCBnZXQgIiwgcG9zaXRpb24sICJ0aCByZWN1cnNpb24gZ3JvdXAncyB0eXBl
IGNvdW50Iik7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRih0eXBlQ291bnQgPiBtYXhSZWN1cnNp
b25Hcm91cENvdW50LCAibnVtYmVyIG9mIHR5cGVzIGZvciByZWN1cnNpb24gZ3JvdXAgYXQgcG9z
aXRpb24gIiwgcG9zaXRpb24sICIgaXMgdG9vIGJpZyAiLCB0eXBlQ291bnQsICIgbWF4aW11bSAi
LCBtYXhSZWN1cnNpb25Hcm91cENvdW50KTsKKyAgICBWZWN0b3I8VHlwZUluZGV4PiB0eXBlczsK
KyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCF0eXBlcy50cnlSZXNlcnZlQ2FwYWNpdHkodHlwZUNv
dW50KSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIHJlY3Vyc2lvbiBncm91cCAi
LCB0eXBlQ291bnQsICIgZW50cmllcyIpOworCisgICAgUmVjdXJzaW9uR3JvdXBHdWFyZCBndWFy
ZCA9IFJlY3Vyc2lvbkdyb3VwR3VhcmQodGhpcywgUmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbiB7
IHRydWUsIG1faW5mby0+dHlwZUNvdW50KCksIG1faW5mby0+dHlwZUNvdW50KCkgKyB0eXBlQ291
bnQgfSk7CisKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgdHlwZUNvdW50OyArK2kpIHsK
KyAgICAgICAgaW50OF90IHR5cGVLaW5kOworICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZUludDcodHlwZUtpbmQpLCAiY2FuJ3QgZ2V0IHJlY3Vyc2lvbiBncm91cCdzICIsIGksICJ0
aCBUeXBlJ3MgdHlwZSIpOworICAgICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IHNpZ25hdHVy
ZTsKKyAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUeXBlS2luZD4odHlwZUtpbmQpKSB7Cisg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6IHsKKyAgICAgICAgICAgIFdBU01fRkFJTF9JRl9I
RUxQRVJfRkFJTFMocGFyc2VGdW5jdGlvblR5cGUoaSwgc2lnbmF0dXJlKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6IHsKKyAg
ICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VTdHJ1Y3RUeXBlKGksIHNp
Z25hdHVyZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBmYWlsKGksICJ0aCBUeXBlIGlzIG5vbi1GdW5jICIsIHR5
cGVLaW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXNpZ25h
dHVyZSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIHJlY3Vyc2lvbiBncm91cCdz
ICIsIGksICJ0aCBzaWduYXR1cmUiKTsKKyAgICAgICAgdHlwZXMudW5jaGVja2VkQXBwZW5kKHNp
Z25hdHVyZS0+aW5kZXgoKSk7CisgICAgfQorCisgICAgcmVjdXJzaW9uR3JvdXAgPSBUeXBlSW5m
b3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yUmVjdXJzaW9uR3JvdXAodHlwZXMpOworCisgICAg
cmV0dXJuIHsgfTsKK30KKwogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZUkzMkluaXRFeHByRm9y
RWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mIGluaXRFeHByKSAtPiBQ
YXJ0aWFsUmVzdWx0CiB7CiAgICAgcmV0dXJuIHBhcnNlSTMySW5pdEV4cHIoaW5pdEV4cHIsICJF
bGVtZW50IGluaXRfZXhwciBtdXN0IHByb2R1Y2UgYW4gaTMyIl9zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCmluZGV4IDk1NmE1MDI4N2NiOTI2
M2QyOThlZjkxNmI2M2VkZGQ4OGJkNWNkZjQuLjBiNzI0NGM3MzhkOGYxOGNmZmM1M2Y1NTg2NDdk
MzNlMTBkMzFhY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21T
ZWN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rp
b25QYXJzZXIuaApAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VGdW5jdGlvblR5cGUodWludDMyX3QgcG9zaXRpb24s
IFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBwYXJzZVN0cnVjdFR5cGUodWludDMyX3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVm
aW5pdGlvbj4mKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZVJl
Y3Vyc2lvbkdyb3VwKHVpbnQzMl90IHBvc2l0aW9uLCBSZWZQdHI8VHlwZURlZmluaXRpb24+Jiwg
dWludDMyX3QmKTsKIAogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlk
YXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9yRWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25h
bDxJMzJJbml0RXhwcj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21UeXBlRGVmaW5pdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VHlwZURlZmluaXRpb24uY3BwCmluZGV4IGI0NDg5MWNjMzFmN2Q1MWY5ZDViMmQ1OTE1YjMwMGMz
MDQzMWI0YmIuLjI0MDMyMDUyYTdmNWIwOTc0MWNhMDEzODlhMWUxOGIwYjRhMzc5MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNwcApA
QCAtNDUsOCArNDUsMTQgQEAgdm9pZCBUeXBlRGVmaW5pdGlvbjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgIGlmIChpczxGdW5jdGlvblNpZ25hdHVyZT4oKSkKICAgICAgICAgcmV0
dXJuIGFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5kdW1wKG91dCk7CiAKLSAgICBBU1NFUlQoaXM8
U3RydWN0VHlwZT4oKSk7Ci0gICAgcmV0dXJuIGFzPFN0cnVjdFR5cGU+KCktPmR1bXAob3V0KTsK
KyAgICBpZiAoaXM8U3RydWN0VHlwZT4oKSkKKyAgICAgICAgcmV0dXJuIGFzPFN0cnVjdFR5cGU+
KCktPmR1bXAob3V0KTsKKworICAgIGlmIChpczxSZWN1cnNpb25Hcm91cD4oKSkKKyAgICAgICAg
cmV0dXJuIGFzPFJlY3Vyc2lvbkdyb3VwPigpLT5kdW1wKG91dCk7CisKKyAgICBBU1NFUlQoaXM8
UHJvamVjdGlvbj4oKSk7CisgICAgcmV0dXJuIGFzPFByb2plY3Rpb24+KCktPmR1bXAob3V0KTsK
IH0KIAogU3RyaW5nIEZ1bmN0aW9uU2lnbmF0dXJlOjp0b1N0cmluZygpIGNvbnN0CkBAIC04OSw2
ICs5NSwzNiBAQCB2b2lkIFN0cnVjdFR5cGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICBvdXQucHJpbnQoIikiKTsKIH0KIAorU3RyaW5nIFJlY3Vyc2lvbkdyb3VwOjp0b1N0cmlu
ZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6dG9TdHJpbmcoKnRoaXMpOworfQorCit2b2lk
IFJlY3Vyc2lvbkdyb3VwOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0
LnByaW50KCIoIik7CisgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgIGZvciAoUmVjdXJzaW9u
R3JvdXBDb3VudCB0eXBlSW5kZXggPSAwOyB0eXBlSW5kZXggPCB0eXBlQ291bnQoKTsgKyt0eXBl
SW5kZXgpIHsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hKTsKKyAgICAgICAgVHlwZUluZm9ybWF0
aW9uOjpnZXQodHlwZSh0eXBlSW5kZXgpKS5kdW1wKG91dCk7CisgICAgfQorICAgIG91dC5wcmlu
dCgiKSIpOworfQorCitTdHJpbmcgUHJvamVjdGlvbjo6dG9TdHJpbmcoKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OnRvU3RyaW5nKCp0aGlzKTsKK30KKwordm9pZCBQcm9qZWN0aW9uOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIoIik7CisgICAgQ29t
bWFQcmludGVyIGNvbW1hOworICAgIFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHJlY3Vyc2lvbkdyb3Vw
KCkpLmR1bXAob3V0KTsKKyAgICBvdXQucHJpbnQoIi4iLCBpbmRleCgpKTsKKyAgICBvdXQucHJp
bnQoIikiKTsKK30KKwogc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVTaWduYXR1cmVIYXNoKHNpemVf
dCByZXR1cm5Db3VudCwgY29uc3QgVHlwZSogcmV0dXJuVHlwZXMsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBUeXBlKiBhcmd1bWVudFR5cGVzKQogewogICAgIHVuc2lnbmVkIGFjY3VtdWxh
dG9yID0gMHhhMWJjZWRkOHU7CkBAIC0xMTcsNiArMTUzLDIyIEBAIHN0YXRpYyB1bnNpZ25lZCBj
b21wdXRlU3RydWN0VHlwZUhhc2goc2l6ZV90IGZpZWxkQ291bnQsIGNvbnN0IFN0cnVjdEZpZWxk
KiBmaWVsCiAgICAgcmV0dXJuIGFjY3VtdWxhdG9yOwogfQogCitzdGF0aWMgdW5zaWduZWQgY29t
cHV0ZVJlY3Vyc2lvbkdyb3VwSGFzaChzaXplX3QgdHlwZUNvdW50LCBjb25zdCBUeXBlSW5kZXgq
IHR5cGVzKQoreworICAgIHVuc2lnbmVkIGFjY3VtdWxhdG9yID0gMHg5Y2ZiODliYjsKKyAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgdHlwZUNvdW50OyArK2kpCisgICAgICAgIGFjY3VtdWxh
dG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPFR5cGVJbmRl
eD46Omhhc2goc3RhdGljX2Nhc3Q8VHlwZUluZGV4Pih0eXBlc1tpXSkpKTsKKyAgICByZXR1cm4g
YWNjdW11bGF0b3I7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHJvamVjdGlvbkhhc2go
VHlwZUluZGV4IHJlY3Vyc2lvbkdyb3VwLCBQcm9qZWN0aW9uSW5kZXggaW5kZXgpCit7CisgICAg
dW5zaWduZWQgYWNjdW11bGF0b3IgPSAweGJlYWU2ZDRlOworICAgIGFjY3VtdWxhdG9yID0gV1RG
OjpwYWlySW50SGFzaChhY2N1bXVsYXRvciwgV1RGOjpJbnRIYXNoPFR5cGVJbmRleD46Omhhc2go
c3RhdGljX2Nhc3Q8VHlwZUluZGV4PihyZWN1cnNpb25Hcm91cCkpKTsKKyAgICBhY2N1bXVsYXRv
ciA9IFdURjo6cGFpckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDx1aW50MzJfdD46
Omhhc2goc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGluZGV4KSkpOworICAgIHJldHVybiBhY2N1bXVs
YXRvcjsKK30KKwogdW5zaWduZWQgVHlwZURlZmluaXRpb246Omhhc2goKSBjb25zdAogewogICAg
IGlmIChpczxGdW5jdGlvblNpZ25hdHVyZT4oKSkgewpAQCAtMTI0LDkgKzE3NiwxOSBAQCB1bnNp
Z25lZCBUeXBlRGVmaW5pdGlvbjo6aGFzaCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBjb21wdXRl
U2lnbmF0dXJlSGFzaChzaWduYXR1cmUtPnJldHVybkNvdW50KCksIHNpZ25hdHVyZS0+c3RvcmFn
ZSgwKSwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksIHNpZ25hdHVyZS0+c3RvcmFnZShzaWdu
YXR1cmUtPnJldHVybkNvdW50KCkpKTsKICAgICB9CiAKLSAgICBBU1NFUlQoaXM8U3RydWN0VHlw
ZT4oKSk7Ci0gICAgY29uc3QgU3RydWN0VHlwZSogc3RydWN0VHlwZSA9IGFzPFN0cnVjdFR5cGU+
KCk7Ci0gICAgcmV0dXJuIGNvbXB1dGVTdHJ1Y3RUeXBlSGFzaChzdHJ1Y3RUeXBlLT5maWVsZENv
dW50KCksIHN0cnVjdFR5cGUtPnN0b3JhZ2UoMCkpOworICAgIGlmIChpczxTdHJ1Y3RUeXBlPigp
KSB7CisgICAgICAgIGNvbnN0IFN0cnVjdFR5cGUqIHN0cnVjdFR5cGUgPSBhczxTdHJ1Y3RUeXBl
PigpOworICAgICAgICByZXR1cm4gY29tcHV0ZVN0cnVjdFR5cGVIYXNoKHN0cnVjdFR5cGUtPmZp
ZWxkQ291bnQoKSwgc3RydWN0VHlwZS0+c3RvcmFnZSgwKSk7CisgICAgfQorCisgICAgaWYgKGlz
PFJlY3Vyc2lvbkdyb3VwPigpKSB7CisgICAgICAgIGNvbnN0IFJlY3Vyc2lvbkdyb3VwKiByZWN1
cnNpb25Hcm91cCA9IGFzPFJlY3Vyc2lvbkdyb3VwPigpOworICAgICAgICByZXR1cm4gY29tcHV0
ZVJlY3Vyc2lvbkdyb3VwSGFzaChyZWN1cnNpb25Hcm91cC0+dHlwZUNvdW50KCksIHJlY3Vyc2lv
bkdyb3VwLT5zdG9yYWdlKDApKTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXM8UHJvamVjdGlvbj4o
KSk7CisgICAgY29uc3QgUHJvamVjdGlvbiogcHJvamVjdGlvbiA9IGFzPFByb2plY3Rpb24+KCk7
CisgICAgcmV0dXJuIGNvbXB1dGVQcm9qZWN0aW9uSGFzaChwcm9qZWN0aW9uLT5yZWN1cnNpb25H
cm91cCgpLCBwcm9qZWN0aW9uLT5pbmRleCgpKTsKIH0KIAogUmVmUHRyPFR5cGVEZWZpbml0aW9u
PiBUeXBlRGVmaW5pdGlvbjo6dHJ5Q3JlYXRlRnVuY3Rpb25TaWduYXR1cmUoRnVuY3Rpb25BcmdD
b3VudCByZXR1cm5Db3VudCwgRnVuY3Rpb25BcmdDb3VudCBhcmd1bWVudENvdW50KQpAQCAtMTM2
LDcgKzE5OCw3IEBAIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZURlZmluaXRpb246OnRyeUNy
ZWF0ZUZ1bmN0aW9uU2lnbmF0dXJlKEZ1bmN0aW9uQXJnQ291CiAgICAgdm9pZCogbWVtb3J5ID0g
bnVsbHB0cjsKICAgICBpZiAoIXJlc3VsdC5nZXRWYWx1ZShtZW1vcnkpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3IChOb3ROdWxs
LCBtZW1vcnkpIFR5cGVEZWZpbml0aW9uKHJldHVybkNvdW50LCBhcmd1bWVudENvdW50KTsKKyAg
ICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3IChOb3ROdWxsLCBtZW1vcnkpIFR5cGVE
ZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZDo6RnVuY3Rpb25TaWduYXR1cmUsIHJldHVybkNv
dW50LCBhcmd1bWVudENvdW50KTsKICAgICByZXR1cm4gYWRvcHRSZWYoc2lnbmF0dXJlKTsKIH0K
IApAQCAtMTQ3LDEwICsyMDksNzYgQEAgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBUeXBlRGVmaW5p
dGlvbjo6dHJ5Q3JlYXRlU3RydWN0VHlwZShTdHJ1Y3RGaWVsZENvdW50IGZpZWwKICAgICB2b2lk
KiBtZW1vcnkgPSBudWxscHRyOwogICAgIGlmICghcmVzdWx0LmdldFZhbHVlKG1lbW9yeSkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFR5cGVEZWZpbml0aW9uKiBzaWduYXR1cmUgPSBu
ZXcgKE5vdE51bGwsIG1lbW9yeSkgVHlwZURlZmluaXRpb24oZmllbGRDb3VudCk7CisgICAgVHlw
ZURlZmluaXRpb24qIHNpZ25hdHVyZSA9IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBUeXBlRGVmaW5p
dGlvbihUeXBlRGVmaW5pdGlvbktpbmQ6OlN0cnVjdFR5cGUsIGZpZWxkQ291bnQpOworICAgIHJl
dHVybiBhZG9wdFJlZihzaWduYXR1cmUpOworfQorCitSZWZQdHI8VHlwZURlZmluaXRpb24+IFR5
cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVSZWN1cnNpb25Hcm91cChSZWN1cnNpb25Hcm91cENvdW50
IHR5cGVDb3VudCkKK3sKKyAgICAvLyBXZSB1c2UgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgZm9y
IHRoaXMgY2xhc3MuCisgICAgYXV0byByZXN1bHQgPSB0cnlGYXN0TWFsbG9jKGFsbG9jYXRlZFJl
Y3Vyc2lvbkdyb3VwU2l6ZSh0eXBlQ291bnQpKTsKKyAgICB2b2lkKiBtZW1vcnkgPSBudWxscHRy
OworICAgIGlmICghcmVzdWx0LmdldFZhbHVlKG1lbW9yeSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIFR5cGVEZWZpbml0aW9uKiBzaWduYXR1cmUgPSBuZXcgKE5vdE51bGwsIG1lbW9y
eSkgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb25LaW5kOjpSZWN1cnNpb25Hcm91cCwgdHlw
ZUNvdW50KTsKICAgICByZXR1cm4gYWRvcHRSZWYoc2lnbmF0dXJlKTsKIH0KIAorUmVmUHRyPFR5
cGVEZWZpbml0aW9uPiBUeXBlRGVmaW5pdGlvbjo6dHJ5Q3JlYXRlUHJvamVjdGlvbigpCit7Cisg
ICAgLy8gV2UgdXNlIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGZvciB0aGlzIGNsYXNzLgorICAg
IGF1dG8gcmVzdWx0ID0gdHJ5RmFzdE1hbGxvYyhhbGxvY2F0ZWRQcm9qZWN0aW9uU2l6ZSgpKTsK
KyAgICB2b2lkKiBtZW1vcnkgPSBudWxscHRyOworICAgIGlmICghcmVzdWx0LmdldFZhbHVlKG1l
bW9yeSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIFR5cGVEZWZpbml0aW9uKiBzaWdu
YXR1cmUgPSBuZXcgKE5vdE51bGwsIG1lbW9yeSkgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRp
b25LaW5kOjpQcm9qZWN0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoc2lnbmF0dXJlKTsKK30K
KworVHlwZSBUeXBlRGVmaW5pdGlvbjo6c3Vic3RpdHV0ZShUeXBlIHR5cGUsIFR5cGVJbmRleCBw
cm9qZWN0ZWUpCit7CisgICAgaWYgKHR5cGUua2luZCA9PSBUeXBlS2luZDo6UmVjKSB7CisgICAg
ICAgIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gcHJvamVjdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6
dHlwZURlZmluaXRpb25Gb3JQcm9qZWN0aW9uKHByb2plY3RlZSwgc3RhdGljX2Nhc3Q8UHJvamVj
dGlvbkluZGV4Pih0eXBlLmluZGV4KSk7CisgICAgICAgIFR5cGVLaW5kIGtpbmQgPSB0eXBlLmlz
TnVsbGFibGUoKSA/IFR5cGVLaW5kOjpSZWZOdWxsIDogVHlwZUtpbmQ6OlJlZjsKKyAgICAgICAg
cmV0dXJuIFR5cGUgeyBraW5kLCB0eXBlLm51bGxhYmxlLCBwcm9qZWN0aW9uLT5pbmRleCgpIH07
CisgICAgfQorCisgICAgcmV0dXJuIHR5cGU7Cit9CisKK2NvbnN0IFR5cGVEZWZpbml0aW9uJiBU
eXBlRGVmaW5pdGlvbjo6dW5yb2xsKFR5cGVJbmRleCBwcm9qZWN0ZWUpIGNvbnN0Cit7CisgICAg
aWYgKGlzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSB7CisgICAgICAgIGNvbnN0IEZ1bmN0aW9uU2ln
bmF0dXJlKiBmdW5jID0gYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgICAgIFZlY3RvcjxU
eXBlPiBuZXdBcmd1bWVudHM7CisgICAgICAgIFZlY3RvcjxUeXBlLCAxPiBuZXdSZXR1cm5zOwor
ICAgICAgICBuZXdBcmd1bWVudHMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGZ1bmMtPmFyZ3VtZW50Q291
bnQoKSk7CisgICAgICAgIG5ld1JldHVybnMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGZ1bmMtPnJldHVy
bkNvdW50KCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVuYy0+YXJndW1l
bnRDb3VudCgpOyArK2kpCisgICAgICAgICAgICBuZXdBcmd1bWVudHMudW5jaGVja2VkQXBwZW5k
KHN1YnN0aXR1dGUoZnVuYy0+YXJndW1lbnRUeXBlKGkpLCBwcm9qZWN0ZWUpKTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZ1bmMtPnJldHVybkNvdW50KCk7ICsraSkKKyAgICAg
ICAgICAgIG5ld1JldHVybnMudW5jaGVja2VkQXBwZW5kKHN1YnN0aXR1dGUoZnVuYy0+cmV0dXJu
VHlwZShpKSwgcHJvamVjdGVlKSk7CisKKyAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBk
ZWYgPSBUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yRnVuY3Rpb24obmV3UmV0dXJu
cywgbmV3QXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuICpkZWY7CisgICAgfQorCisgICAgcmV0
dXJuICp0aGlzOworfQorCitjb25zdCBUeXBlRGVmaW5pdGlvbiYgVHlwZURlZmluaXRpb246OmV4
cGFuZCgpIGNvbnN0Cit7CisgICAgaWYgKGlzPFByb2plY3Rpb24+KCkpIHsKKyAgICAgICAgY29u
c3QgUHJvamVjdGlvbiYgcHJvamVjdGlvbiA9ICphczxQcm9qZWN0aW9uPigpOworICAgICAgICBj
b25zdCBUeXBlRGVmaW5pdGlvbiYgcHJvamVjdGVlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQocHJv
amVjdGlvbi5yZWN1cnNpb25Hcm91cCgpKTsKKyAgICAgICAgY29uc3QgUmVjdXJzaW9uR3JvdXAm
IHJlY3Vyc2lvbkdyb3VwID0gKnByb2plY3RlZS5hczxSZWN1cnNpb25Hcm91cD4oKTsKKyAgICAg
ICAgY29uc3QgVHlwZURlZmluaXRpb24mIHVuZGVybHlpbmdUeXBlID0gVHlwZUluZm9ybWF0aW9u
OjpnZXQocmVjdXJzaW9uR3JvdXAudHlwZShwcm9qZWN0aW9uLmluZGV4KCkpKTsKKyAgICAgICAg
cmV0dXJuIHVuZGVybHlpbmdUeXBlLnVucm9sbChwcm9qZWN0ZWUuaW5kZXgoKSk7CisgICAgfQor
CisgICAgcmV0dXJuICp0aGlzOworfQorCiBUeXBlSW5mb3JtYXRpb246OlR5cGVJbmZvcm1hdGlv
bigpCiB7CiAjZGVmaW5lIE1BS0VfVEhVTktfU0lHTkFUVVJFKHR5cGUsIGVuYywgc3RyLCB2YWws
IF8pIFwKQEAgLTE4Niw3ICszMTQsNyBAQCBzdHJ1Y3QgRnVuY3Rpb25QYXJhbWV0ZXJUeXBlcyB7
CiAKICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUeXBlSGFzaCYgc2lnLCBjb25zdCBGdW5j
dGlvblBhcmFtZXRlclR5cGVzJiBwYXJhbXMpCiAgICAgewotICAgICAgICBpZiAoc2lnLmtleS0+
aXM8U3RydWN0VHlwZT4oKSkKKyAgICAgICAgaWYgKCFzaWcua2V5LT5pczxGdW5jdGlvblNpZ25h
dHVyZT4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBjb25zdCBGdW5j
dGlvblNpZ25hdHVyZSogc2lnbmF0dXJlID0gc2lnLmtleS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+
KCk7CkBAIC0yMzIsNyArMzYwLDcgQEAgc3RydWN0IFN0cnVjdFBhcmFtZXRlclR5cGVzIHsKIAog
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFR5cGVIYXNoJiBzaWcsIGNvbnN0IFN0cnVjdFBh
cmFtZXRlclR5cGVzJiBwYXJhbXMpCiAgICAgewotICAgICAgICBpZiAoc2lnLmtleS0+aXM8RnVu
Y3Rpb25TaWduYXR1cmU+KCkpCisgICAgICAgIGlmICghc2lnLmtleS0+aXM8U3RydWN0VHlwZT4o
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBjb25zdCBTdHJ1Y3RUeXBl
KiBzdHJ1Y3RUeXBlID0gc2lnLmtleS0+YXM8U3RydWN0VHlwZT4oKTsKQEAgLTI2MCw2ICszODgs
NzggQEAgc3RydWN0IFN0cnVjdFBhcmFtZXRlclR5cGVzIHsKICAgICB9CiB9OwogCitzdHJ1Y3Qg
UmVjdXJzaW9uR3JvdXBQYXJhbWV0ZXJUeXBlcyB7CisgICAgY29uc3QgVmVjdG9yPFR5cGVJbmRl
eD4mIHR5cGVzOworCisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUmVjdXJzaW9uR3Jv
dXBQYXJhbWV0ZXJUeXBlcyYgcGFyYW1zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVS
ZWN1cnNpb25Hcm91cEhhc2gocGFyYW1zLnR5cGVzLnNpemUoKSwgcGFyYW1zLnR5cGVzLmRhdGEo
KSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVHlwZUhhc2gmIHNpZywg
Y29uc3QgUmVjdXJzaW9uR3JvdXBQYXJhbWV0ZXJUeXBlcyYgcGFyYW1zKQorICAgIHsKKyAgICAg
ICAgaWYgKCFzaWcua2V5LT5pczxSZWN1cnNpb25Hcm91cD4oKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICBjb25zdCBSZWN1cnNpb25Hcm91cCogcmVjdXJzaW9uR3JvdXAg
PSBzaWcua2V5LT5hczxSZWN1cnNpb25Hcm91cD4oKTsKKyAgICAgICAgaWYgKHJlY3Vyc2lvbkdy
b3VwLT50eXBlQ291bnQoKSAhPSBwYXJhbXMudHlwZXMuc2l6ZSgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN1cnNpb25H
cm91cC0+dHlwZUNvdW50KCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHJlY3Vyc2lvbkdyb3Vw
LT50eXBlKGkpICE9IHBhcmFtcy50eXBlc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdm9pZCB0cmFuc2xhdGUoVHlwZUhhc2gmIGVudHJ5LCBjb25zdCBSZWN1cnNpb25Hcm91cFBh
cmFtZXRlclR5cGVzJiBwYXJhbXMsIHVuc2lnbmVkKQorICAgIHsKKyAgICAgICAgUmVmUHRyPFR5
cGVEZWZpbml0aW9uPiBzaWduYXR1cmUgPSBUeXBlRGVmaW5pdGlvbjo6dHJ5Q3JlYXRlUmVjdXJz
aW9uR3JvdXAocGFyYW1zLnR5cGVzLnNpemUoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNp
Z25hdHVyZSk7CisKKyAgICAgICAgUmVjdXJzaW9uR3JvdXAqIHJlY3Vyc2lvbkdyb3VwID0gc2ln
bmF0dXJlLT5hczxSZWN1cnNpb25Hcm91cD4oKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHBhcmFtcy50eXBlcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHJlY3Vyc2lvbkdy
b3VwLT5nZXRUeXBlKGkpID0gcGFyYW1zLnR5cGVzW2ldOworCisgICAgICAgIGVudHJ5LmtleSA9
IFdURk1vdmUoc2lnbmF0dXJlKTsKKyAgICB9Cit9OworCitzdHJ1Y3QgUHJvamVjdGlvblBhcmFt
ZXRlclR5cGVzIHsKKyAgICBjb25zdCBUeXBlSW5kZXggcmVjdXJzaW9uR3JvdXA7CisgICAgY29u
c3QgUHJvamVjdGlvbkluZGV4IGluZGV4OworCisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgUHJvamVjdGlvblBhcmFtZXRlclR5cGVzJiBwYXJhbXMpCisgICAgeworICAgICAgICByZXR1
cm4gY29tcHV0ZVByb2plY3Rpb25IYXNoKHBhcmFtcy5yZWN1cnNpb25Hcm91cCwgcGFyYW1zLmlu
ZGV4KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUeXBlSGFzaCYgc2ln
LCBjb25zdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlwZXMmIHBhcmFtcykKKyAgICB7CisgICAgICAg
IGlmICghc2lnLmtleS0+aXM8UHJvamVjdGlvbj4oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBjb25zdCBQcm9qZWN0aW9uKiBwcm9qZWN0aW9uID0gc2lnLmtleS0+YXM8
UHJvamVjdGlvbj4oKTsKKyAgICAgICAgaWYgKHByb2plY3Rpb24tPnJlY3Vyc2lvbkdyb3VwKCkg
IT0gcGFyYW1zLnJlY3Vyc2lvbkdyb3VwIHx8IHByb2plY3Rpb24tPmluZGV4KCkgIT0gcGFyYW1z
LmluZGV4KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUeXBlSGFzaCYgZW50cnksIGNv
bnN0IFByb2plY3Rpb25QYXJhbWV0ZXJUeXBlcyYgcGFyYW1zLCB1bnNpZ25lZCkKKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gc2lnbmF0dXJlID0gVHlwZURlZmluaXRpb246
OnRyeUNyZWF0ZVByb2plY3Rpb24oKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2lnbmF0dXJl
KTsKKworICAgICAgICBQcm9qZWN0aW9uKiBwcm9qZWN0aW9uID0gc2lnbmF0dXJlLT5hczxQcm9q
ZWN0aW9uPigpOworICAgICAgICBwcm9qZWN0aW9uLT5nZXRSZWN1cnNpb25Hcm91cCgpID0gcGFy
YW1zLnJlY3Vyc2lvbkdyb3VwOworICAgICAgICBwcm9qZWN0aW9uLT5nZXRJbmRleCgpID0gcGFy
YW1zLmluZGV4OworCisgICAgICAgIGVudHJ5LmtleSA9IFdURk1vdmUoc2lnbmF0dXJlKTsKKyAg
ICB9Cit9OworCiBSZWZQdHI8VHlwZURlZmluaXRpb24+IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURl
ZmluaXRpb25Gb3JGdW5jdGlvbihjb25zdCBWZWN0b3I8VHlwZSwgMT4mIHJlc3VsdHMsIGNvbnN0
IFZlY3RvcjxUeXBlPiYgYXJncykKIHsKICAgICBpZiBjb25zdGV4cHIgKEFTU0VSVF9FTkFCTEVE
KSB7CkBAIC0yODIsNiArNDgyLDI0IEBAIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZUluZm9y
bWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvclN0cnVjdChjb25zdCBWZWN0b3I8U3RyCiAgICAgcmV0
dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+a2V5OwogfQogCitSZWZQdHI8VHlwZURlZmluaXRpb24+
IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURlZmluaXRpb25Gb3JSZWN1cnNpb25Hcm91cChjb25zdCBW
ZWN0b3I8VHlwZUluZGV4PiYgdHlwZXMpCit7CisgICAgVHlwZUluZm9ybWF0aW9uJiBpbmZvID0g
c2luZ2xldG9uKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2NrIH07CisKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IGluZm8ubV90eXBlU2V0LnRlbXBsYXRlIGFkZDxSZWN1cnNpb25Hcm91
cFBhcmFtZXRlclR5cGVzPihSZWN1cnNpb25Hcm91cFBhcmFtZXRlclR5cGVzIHsgdHlwZXMgfSk7
CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+a2V5OworfQorCitSZWZQdHI8VHlwZURl
ZmluaXRpb24+IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURlZmluaXRpb25Gb3JQcm9qZWN0aW9uKFR5
cGVJbmRleCByZWN1cnNpb25Hcm91cCwgUHJvamVjdGlvbkluZGV4IGluZGV4KQoreworICAgIFR5
cGVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOworICAgIExvY2tlciBsb2NrZXIgeyBp
bmZvLm1fbG9jayB9OworCisgICAgYXV0byBhZGRSZXN1bHQgPSBpbmZvLm1fdHlwZVNldC50ZW1w
bGF0ZSBhZGQ8UHJvamVjdGlvblBhcmFtZXRlclR5cGVzPihQcm9qZWN0aW9uUGFyYW1ldGVyVHlw
ZXMgeyByZWN1cnNpb25Hcm91cCwgaW5kZXggfSk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVy
YXRvci0+a2V5OworfQorCiB2b2lkIFR5cGVJbmZvcm1hdGlvbjo6dHJ5Q2xlYW51cCgpCiB7CiAg
ICAgVHlwZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xldG9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5oCmluZGV4IDJhZjM5Yzg2MWIzM2Fh
YzY3NTU2NTdkZDBjZjE4ZjczY2E2YjE1MTAuLjk2YzcyOTZiZDc5M2VlZTdiNzFjYTk4ZjJhZWQz
N2I0NmIyMjRjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21U
eXBlRGVmaW5pdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBl
RGVmaW5pdGlvbi5oCkBAIC00NCw2ICs0NCw4IEBAIG5hbWVzcGFjZSBXYXNtIHsKIAogdXNpbmcg
RnVuY3Rpb25BcmdDb3VudCA9IHVpbnQzMl90OwogdXNpbmcgU3RydWN0RmllbGRDb3VudCA9IHVp
bnQzMl90OwordXNpbmcgUmVjdXJzaW9uR3JvdXBDb3VudCA9IHVpbnQzMl90OwordXNpbmcgUHJv
amVjdGlvbkluZGV4ID0gdWludDMyX3Q7CiAKIGNsYXNzIEZ1bmN0aW9uU2lnbmF0dXJlIHsKIHB1
YmxpYzoKQEAgLTExNCwyNSArMTE2LDkxIEBAIHByaXZhdGU6CiAgICAgU3RydWN0RmllbGRDb3Vu
dCBtX2ZpZWxkQ291bnQ7CiB9OwogCitjbGFzcyBSZWN1cnNpb25Hcm91cCB7CitwdWJsaWM6Cisg
ICAgUmVjdXJzaW9uR3JvdXAoY29uc3QgY2hhciogcGF5bG9hZCwgUmVjdXJzaW9uR3JvdXBDb3Vu
dCB0eXBlQ291bnQpCisgICAgICAgIDogbV9wYXlsb2FkKHBheWxvYWQpCisgICAgICAgICwgbV90
eXBlQ291bnQodHlwZUNvdW50KQorICAgIHsKKyAgICB9CisKKyAgICBSZWN1cnNpb25Hcm91cENv
dW50IHR5cGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUNvdW50OyB9CisgICAgVHlwZUlu
ZGV4IHR5cGUoUmVjdXJzaW9uR3JvdXBDb3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PFJlY3Vyc2lvbkdyb3VwKj4odGhpcyktPmdldFR5cGUoaSk7IH0KKworICAgIFdURjo6U3RyaW5n
IHRvU3RyaW5nKCkgY29uc3Q7CisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7CisKKyAgICBUeXBlSW5kZXgmIGdldFR5cGUoUmVjdXJzaW9uR3JvdXBDb3VudCBpKSB7
IEFTU0VSVChpIDwgdHlwZUNvdW50KCkpOzsgcmV0dXJuICpzdG9yYWdlKGkpOyB9CisgICAgVHlw
ZUluZGV4KiBzdG9yYWdlKFJlY3Vyc2lvbkdyb3VwQ291bnQgaSkgeyByZXR1cm4gaSArIHJlaW50
ZXJwcmV0X2Nhc3Q8VHlwZUluZGV4Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9wYXlsb2FkKSk7IH0K
KyAgICBUeXBlSW5kZXgqIHN0b3JhZ2UoUmVjdXJzaW9uR3JvdXBDb3VudCBpKSBjb25zdCB7IHJl
dHVybiBjb25zdF9jYXN0PFJlY3Vyc2lvbkdyb3VwKj4odGhpcyktPnN0b3JhZ2UoaSk7IH0KKwor
cHJpdmF0ZToKKyAgICBjb25zdCBjaGFyKiBtX3BheWxvYWQ7CisgICAgUmVjdXJzaW9uR3JvdXBD
b3VudCBtX3R5cGVDb3VudDsKK307CisKK2NsYXNzIFByb2plY3Rpb24geworcHVibGljOgorICAg
IFByb2plY3Rpb24oY29uc3QgY2hhciogcGF5bG9hZCkKKyAgICAgICAgOiBtX3BheWxvYWQocGF5
bG9hZCkKKyAgICB7CisgICAgfQorCisgICAgVHlwZUluZGV4IHJlY3Vyc2lvbkdyb3VwKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxQcm9qZWN0aW9uKj4odGhpcyktPmdldFJlY3Vyc2lvbkdy
b3VwKCk7IH0KKyAgICBQcm9qZWN0aW9uSW5kZXggaW5kZXgoKSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PFByb2plY3Rpb24qPih0aGlzKS0+Z2V0SW5kZXgoKTsgfQorCisgICAgV1RGOjpTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYgb3V0
KSBjb25zdDsKKworICAgIFR5cGVJbmRleCYgZ2V0UmVjdXJzaW9uR3JvdXAoKSB7IHJldHVybiAq
c3RvcmFnZSgwKTsgfQorICAgIFByb2plY3Rpb25JbmRleCYgZ2V0SW5kZXgoKSB7IHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxQcm9qZWN0aW9uSW5kZXgqPihzdG9yYWdlKDEpKTsgfQorICAgIFR5
cGVJbmRleCogc3RvcmFnZSh1aW50MzJfdCBpKSB7IEFTU0VSVChpIDw9IDEpOyByZXR1cm4gaSAr
IHJlaW50ZXJwcmV0X2Nhc3Q8VHlwZUluZGV4Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9wYXlsb2Fk
KSk7IH0KKyAgICBUeXBlSW5kZXgqIHN0b3JhZ2UodWludDMyX3QgaSkgY29uc3QgeyByZXR1cm4g
Y29uc3RfY2FzdDxQcm9qZWN0aW9uKj4odGhpcyktPnN0b3JhZ2UoaSk7IH0KKworcHJpdmF0ZToK
KyAgICBjb25zdCBjaGFyKiBtX3BheWxvYWQ7Cit9Oworc3RhdGljX2Fzc2VydChzaXplb2YoUHJv
amVjdGlvbkluZGV4KSA8PSBzaXplb2YoVHlwZUluZGV4KSk7CisKK2VudW0gY2xhc3MgVHlwZURl
ZmluaXRpb25LaW5kIDogdWludDhfdCB7CisgICAgRnVuY3Rpb25TaWduYXR1cmUsCisgICAgU3Ry
dWN0VHlwZSwKKyAgICBSZWN1cnNpb25Hcm91cCwKKyAgICBQcm9qZWN0aW9uCit9OworCiBjbGFz
cyBUeXBlRGVmaW5pdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxUeXBlRGVmaW5p
dGlvbj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiAgICAgVHlwZURlZmluaXRp
b24oKSA9IGRlbGV0ZTsKICAgICBUeXBlRGVmaW5pdGlvbihjb25zdCBUeXBlRGVmaW5pdGlvbiYp
ID0gZGVsZXRlOwogCi0gICAgVHlwZURlZmluaXRpb24oRnVuY3Rpb25BcmdDb3VudCByZXRDb3Vu
dCwgRnVuY3Rpb25BcmdDb3VudCBhcmdDb3VudCkKKyAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVm
aW5pdGlvbktpbmQga2luZCwgRnVuY3Rpb25BcmdDb3VudCByZXRDb3VudCwgRnVuY3Rpb25BcmdD
b3VudCBhcmdDb3VudCkKICAgICAgICAgOiBtX3R5cGVIZWFkZXIgeyBGdW5jdGlvblNpZ25hdHVy
ZSB7IHBheWxvYWQoKSwgYXJnQ291bnQsIHJldENvdW50IH0gfQogICAgIHsKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoa2luZCA9PSBUeXBlRGVmaW5pdGlvbktpbmQ6OkZ1bmN0aW9uU2lnbmF0dXJl
KTsKKyAgICB9CisKKyAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5pdGlvbktpbmQga2luZCwg
dWludDMyX3QgZmllbGRDb3VudCkKKyAgICAgICAgOiBtX3R5cGVIZWFkZXIgeyBTdHJ1Y3RUeXBl
IHsgcGF5bG9hZCgpLCBzdGF0aWNfY2FzdDxTdHJ1Y3RGaWVsZENvdW50PihmaWVsZENvdW50KSB9
IH0KKyAgICB7CisgICAgICAgIGlmIChraW5kID09IFR5cGVEZWZpbml0aW9uS2luZDo6UmVjdXJz
aW9uR3JvdXApCisgICAgICAgICAgICBtX3R5cGVIZWFkZXIgPSB7IFJlY3Vyc2lvbkdyb3VwIHsg
cGF5bG9hZCgpLCBzdGF0aWNfY2FzdDxSZWN1cnNpb25Hcm91cENvdW50PihmaWVsZENvdW50KSB9
IH07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gVHlw
ZURlZmluaXRpb25LaW5kOjpTdHJ1Y3RUeXBlKTsKICAgICB9CiAKLSAgICBUeXBlRGVmaW5pdGlv
bihTdHJ1Y3RGaWVsZENvdW50IGZpZWxkQ291bnQpCi0gICAgICAgIDogbV90eXBlSGVhZGVyIHsg
U3RydWN0VHlwZSB7IHBheWxvYWQoKSwgZmllbGRDb3VudCB9IH0KKyAgICBUeXBlRGVmaW5pdGlv
bihUeXBlRGVmaW5pdGlvbktpbmQga2luZCkKKyAgICAgICAgOiBtX3R5cGVIZWFkZXIgeyBQcm9q
ZWN0aW9uIHsgcGF5bG9hZCgpIH0gfQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2lu
ZCA9PSBUeXBlRGVmaW5pdGlvbktpbmQ6OlByb2plY3Rpb24pOwogICAgIH0KIAogICAgIGNoYXIq
IHBheWxvYWQoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIHNpemVv
ZihUeXBlRGVmaW5pdGlvbik7IH0KICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRlZEZ1bmN0aW9u
U2l6ZShDaGVja2VkPEZ1bmN0aW9uQXJnQ291bnQ+IHJldENvdW50LCBDaGVja2VkPEZ1bmN0aW9u
QXJnQ291bnQ+IGFyZ0NvdW50KSB7IHJldHVybiBzaXplb2YoVHlwZURlZmluaXRpb24pICsgKHJl
dENvdW50ICsgYXJnQ291bnQpICogc2l6ZW9mKFR5cGUpOyB9CiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0ZWRTdHJ1Y3RTaXplKENoZWNrZWQ8U3RydWN0RmllbGRDb3VudD4gZmllbGRDb3VudCkg
eyByZXR1cm4gc2l6ZW9mKFR5cGVEZWZpbml0aW9uKSArIGZpZWxkQ291bnQgKiBzaXplb2YoU3Ry
dWN0RmllbGQpOyB9CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0ZWRSZWN1cnNpb25Hcm91cFNp
emUoQ2hlY2tlZDxSZWN1cnNpb25Hcm91cENvdW50PiB0eXBlQ291bnQpIHsgcmV0dXJuIHNpemVv
ZihUeXBlRGVmaW5pdGlvbikgKyB0eXBlQ291bnQgKiBzaXplb2YoVHlwZUluZGV4KTsgfQorICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGVkUHJvamVjdGlvblNpemUoKSB7IHJldHVybiBzaXplb2Yo
VHlwZURlZmluaXRpb24pICsgMiAqIHNpemVvZihUeXBlSW5kZXgpOyB9CiAKIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTE1MSw2ICsyMTksOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFR5cGVEZWZpbml0aW9uJiByaHMpIGNvbnN0IHsgcmV0dXJu
IHRoaXMgPT0gJnJoczsgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAorICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiB1bnJvbGwoVHlwZUluZGV4KSBjb25zdDsKKyAgICBjb25zdCBUeXBl
RGVmaW5pdGlvbiYgZXhwYW5kKCkgY29uc3Q7CisKICAgICAvLyBUeXBlIGRlZmluaXRpb25zIGFy
ZSB1bmlxdWVkIGFuZCwgZm9yIGNhbGxfaW5kaXJlY3QsIHZhbGlkYXRlZCBhdCBydW50aW1lLiBU
YWJsZXMgY2FuIGNyZWF0ZSBpbnZhbGlkIFR5cGVJbmRleCB2YWx1ZXMgd2hpY2ggY2F1c2UgY2Fs
bF9pbmRpcmVjdCB0byBmYWlsLiBXZSB1c2UgMCBhcyB0aGUgaW52YWxpZEluZGV4IHNvIHRoYXQg
dGhlIGNvZGVnZW4gY2FuIGVhc2lseSB0ZXN0IGZvciBpdCBhbmQgdHJhcCwgYW5kIHdlIGFkZCBh
IHRva2VuIGludmFsaWQgZW50cnkgaW4gVHlwZUluZm9ybWF0aW9uLgogICAgIHN0YXRpYyBjb25z
dCBjb25zdGV4cHIgVHlwZUluZGV4IGludmFsaWRJbmRleCA9IDA7CiAKQEAgLTE1OCwxMSArMjI5
LDE3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFR5cGVJbmZvcm1hdGlvbjsKICAgICBm
cmllbmQgc3RydWN0IEZ1bmN0aW9uUGFyYW1ldGVyVHlwZXM7CiAgICAgZnJpZW5kIHN0cnVjdCBT
dHJ1Y3RQYXJhbWV0ZXJUeXBlczsKKyAgICBmcmllbmQgc3RydWN0IFJlY3Vyc2lvbkdyb3VwUGFy
YW1ldGVyVHlwZXM7CisgICAgZnJpZW5kIHN0cnVjdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlwZXM7
CiAKICAgICBzdGF0aWMgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiB0cnlDcmVhdGVGdW5jdGlvblNp
Z25hdHVyZShGdW5jdGlvbkFyZ0NvdW50IHJldHVybkNvdW50LCBGdW5jdGlvbkFyZ0NvdW50IGFy
Z3VtZW50Q291bnQpOwogICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHRyeUNyZWF0
ZVN0cnVjdFR5cGUoU3RydWN0RmllbGRDb3VudCk7CisgICAgc3RhdGljIFJlZlB0cjxUeXBlRGVm
aW5pdGlvbj4gdHJ5Q3JlYXRlUmVjdXJzaW9uR3JvdXAoUmVjdXJzaW9uR3JvdXBDb3VudCk7Cisg
ICAgc3RhdGljIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHJ5Q3JlYXRlUHJvamVjdGlvbigpOwor
CisgICAgc3RhdGljIFR5cGUgc3Vic3RpdHV0ZShUeXBlLCBUeXBlSW5kZXgpOwogCi0gICAgc3Rk
Ojp2YXJpYW50PEZ1bmN0aW9uU2lnbmF0dXJlLCBTdHJ1Y3RUeXBlPiBtX3R5cGVIZWFkZXI7Cisg
ICAgc3RkOjp2YXJpYW50PEZ1bmN0aW9uU2lnbmF0dXJlLCBTdHJ1Y3RUeXBlLCBSZWN1cnNpb25H
cm91cCwgUHJvamVjdGlvbj4gbV90eXBlSGVhZGVyOwogICAgIC8vIFBheWxvYWQgaXMgc3RvcmVk
IGhlcmUuCiB9OwogCkBAIC0yMTIsNiArMjg5LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJl
ZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHlwZURlZmluaXRpb25Gb3JGdW5jdGlvbihjb25zdCBWZWN0
b3I8VHlwZSwgMT4mIHJldHVyblR5cGVzLCBjb25zdCBWZWN0b3I8VHlwZT4mIGFyZ3VtZW50VHlw
ZXMpOwogICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHR5cGVEZWZpbml0aW9uRm9y
U3RydWN0KGNvbnN0IFZlY3RvcjxTdHJ1Y3RGaWVsZD4mIGZpZWxkcyk7CisgICAgc3RhdGljIFJl
ZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHlwZURlZmluaXRpb25Gb3JSZWN1cnNpb25Hcm91cChjb25z
dCBWZWN0b3I8VHlwZUluZGV4PiYgdHlwZXMpOworICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmlu
aXRpb24+IHR5cGVEZWZpbml0aW9uRm9yUHJvamVjdGlvbihUeXBlSW5kZXgsIFByb2plY3Rpb25J
bmRleCk7CiAgICAgQUxXQVlTX0lOTElORSBjb25zdCBUeXBlRGVmaW5pdGlvbiogdGh1bmtGb3Io
VHlwZSB0eXBlKSBjb25zdCB7IHJldHVybiB0aHVua1R5cGVzW2xpbmVhcml6ZVR5cGUodHlwZS5r
aW5kKV07IH0KIAogICAgIHN0YXRpYyBjb25zdCBUeXBlRGVmaW5pdGlvbiYgZ2V0KFR5cGVJbmRl
eCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmlu
aXRpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmlu
aXRpb25JbmxpbmVzLmgKaW5kZXggOTBlNzZhNGQxZWVhYjc2NjEyMTQwZjk2N2E4Y2ZhMWEyMGVm
NGNiNC4uYTNlODIxM2M2NTQzY2VlNzZlMWZjMjZmYTkxNzQ2OTE3MzQ5NmZlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbklubGlu
ZXMuaApAQCAtNTEsNyArNTEsMTQgQEAgaW5saW5lIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBUeXBl
SW5mb3JtYXRpb246OmdldChUeXBlSW5kZXggaW5kZXgpCiAKIGlubGluZSBjb25zdCBGdW5jdGlv
blNpZ25hdHVyZSYgVHlwZUluZm9ybWF0aW9uOjpnZXRGdW5jdGlvblNpZ25hdHVyZShUeXBlSW5k
ZXggaW5kZXgpCiB7Ci0gICAgcmV0dXJuICpnZXQoaW5kZXgpLmFzPEZ1bmN0aW9uU2lnbmF0dXJl
PigpOworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBnZXQoaW5kZXgpOwor
ICAgIGlmIChzaWduYXR1cmUuaXM8UHJvamVjdGlvbj4oKSkgeworICAgICAgICBjb25zdCBUeXBl
RGVmaW5pdGlvbiYgZXhwYW5kZWQgPSBzaWduYXR1cmUuZXhwYW5kKCk7CisgICAgICAgIEFTU0VS
VChleHBhbmRlZC5pczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7CisgICAgICAgIHJldHVybiAqZXhw
YW5kZWQuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgfQorICAgIEFTU0VSVChzaWduYXR1
cmUuaXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpOworICAgIHJldHVybiAqc2lnbmF0dXJlLmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpOwogfQogCiBpbmxpbmUgVHlwZUluZGV4IFR5cGVJbmZvcm1hdGlv
bjo6Z2V0KGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2FzbVRvSlMuY3BwCmluZGV4IGJjMmIzMzNkODYxYjYxNzdiYTA0YjJkNWZmNjli
NzU4MGE5Y2JkZWIuLjlkYzQ3NDc0N2VkODdhZWYyYjhjMmI1Y2M3ODEzNTM5Y2U0OWZjODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJp
bmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAvLyBJdCdkIGJlIHN1cGVyIGVhc3kg
dG8gZG8gc286IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MDEK
ICAgICBjb25zdCBhdXRvJiB3YXNtQ0MgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKICAgICBj
b25zdCBhdXRvJiBqc0NDID0ganNDYWxsaW5nQ29udmVudGlvbigpOwotICAgIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRl
eCk7CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9y
bWF0aW9uOjpnZXQodHlwZUluZGV4KS5leHBhbmQoKTsKICAgICBjb25zdCBhdXRvJiBzaWduYXR1
cmUgPSAqdHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgdW5zaWdu
ZWQgYXJnQ291bnQgPSBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOwogICAgIEpJVCBqaXQ7CkBA
IC0xMDYsNiArMTA2LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRy
eVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlZvaWQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6U3RydWN0OgorICAgICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6UmVjOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlJlZjoKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBIYW5kbGVkIGFib3ZlLgpAQCAtMTgxLDYgKzE4Miw3IEBAIEV4cGVjdGVk
PE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4g
d2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAg
ICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0
cnVjdDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzoKICAgICAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gSGFuZGxlZCBhYm92
ZS4KQEAgLTM3Nyw3ICszNzksNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2Fz
bUVudHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDogIHsKLSAgICAgICAgICAgIGlm
IChXYXNtOjppc0Z1bmNyZWYocmV0dXJuVHlwZSkgfHwgV2FzbTo6aXNFeHRlcm5yZWYocmV0dXJu
VHlwZSkpCisgICAgICAgICAgICBpZiAoV2FzbTo6aXNSZWZUeXBlKHJldHVyblR5cGUpKQogICAg
ICAgICAgICAgICAgIGppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCB3YXNtQ2FsbElu
Zm8ucmVzdWx0c1swXS5ncHIoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
Ly8gRm9yIHRoZSBKYXZhU2NyaXB0IGVtYmVkZGluZywgaW1wb3J0cyB3aXRoIHRoZXNlIHR5cGVz
IGluIHRoZWlyIHR5cGUgZGVmaW5pdGlvbiByZXR1cm4gYXJlIGEgV2ViQXNzZW1ibHkuTW9kdWxl
IHZhbGlkYXRpb24gZXJyb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKaW5kZXggYmM5Y2IwNjhkOGEzNTc0
ZjA2ZjExMzM1NTRjZWVlZTcyYjAzZmI1NC4uN2VjZWI2ODFlMzQ5ODRhZmU4YjUzN2Y1N2Q3ZTEz
Mzc4YjUyNTgxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQg
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVFeHBvcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBt
b2R1bGVJbmZvcm1hdGlvbi5pbnRlcm5hbEV4Y2VwdGlvblR5cGVJbmRpY2VzLnNpemUoKTsgKytp
bmRleCkgewogICAgICAgICBXYXNtOjpUeXBlSW5kZXggdHlwZUluZGV4ID0gbW9kdWxlSW5mb3Jt
YXRpb24uaW50ZXJuYWxFeGNlcHRpb25UeXBlSW5kaWNlc1tpbmRleF07Ci0gICAgICAgIG1faW5z
dGFuY2UtPmluc3RhbmNlKCkuc2V0VGFnKG1vZHVsZUluZm9ybWF0aW9uLmltcG9ydEV4Y2VwdGlv
bkNvdW50KCkgKyBpbmRleCwgV2FzbTo6VGFnOjpjcmVhdGUoV2FzbTo6VHlwZUluZm9ybWF0aW9u
OjpnZXQodHlwZUluZGV4KSkpOworICAgICAgICBtX2luc3RhbmNlLT5pbnN0YW5jZSgpLnNldFRh
Zyhtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRFeGNlcHRpb25Db3VudCgpICsgaW5kZXgsIFdhc206
OlRhZzo6Y3JlYXRlKFdhc206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCkuZXhwYW5k
KCkpKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBmdW5jdGlvbkltcG9ydENvdW50ID0gY2FsbGVl
R3JvdXAtPmZ1bmN0aW9uSW1wb3J0Q291bnQoKTsKQEAgLTUwMyw3ICs1MDMsOSBAQCB2b2lkIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplRXhwb3J0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBmdW5jdGlvbkltcG9ydDsK
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFdhc206OlR5cGVJbmRleCB0eXBl
SW5kZXggPSBtb2R1bGUtPnR5cGVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoaW5kZXgpOwot
ICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rpb25JbXBvcnQsIGluZGV4LCBtX2luc3RhbmNlLmdldCgp
LCB0eXBlSW5kZXgpOworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9IFdh
c206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0RnVuY3Rpb25TaWduYXR1cmUodHlwZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICBXYXNtOjpUeXBlSW5kZXggZnVuY3Rpb25UeXBlSW5kZXggPSBXYXNtOjpU
eXBlSW5mb3JtYXRpb246OmdldChzaWduYXR1cmUpOworICAgICAgICAgICAgICAgIHdyYXBwZXIg
PSBXZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+d2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZnVuY3Rp
b25JbXBvcnQsIGluZGV4LCBtX2luc3RhbmNlLmdldCgpLCBmdW5jdGlvblR5cGVJbmRleCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAgIGlpaS4gT3Ro
ZXJ3aXNlOgpAQCAtNTE0LDcgKzUxNiw4IEBAIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmluaXRpYWxpemVFeHBvcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAg
ICAgICBXYXNtOjpXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2FkTG9jYXRpb24gZW50
cnlwb2ludExvYWRMb2NhdGlvbiA9IGNhbGxlZUdyb3VwLT5lbnRyeXBvaW50TG9hZExvY2F0aW9u
RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShpbmRleCk7CiAgICAgICAgICAgICBXYXNtOjpUeXBlSW5k
ZXggdHlwZUluZGV4ID0gbW9kdWxlLT50eXBlSW5kZXhGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGlu
ZGV4KTsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9IFdhc206OlR5cGVJbmZv
cm1hdGlvbjo6Z2V0RnVuY3Rpb25TaWduYXR1cmUodHlwZUluZGV4KTsKLSAgICAgICAgICAgIFdl
YkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5jdGlvblN0cnVj
dHVyZSgpLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBtYWtlU3RyaW5nKGluZGV4KSwgbV9p
bnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBvaW50TG9hZExv
Y2F0aW9uLCB0eXBlSW5kZXgpOworICAgICAgICAgICAgV2FzbTo6VHlwZUluZGV4IGZ1bmN0aW9u
VHlwZUluZGV4ID0gV2FzbTo6VHlwZUluZm9ybWF0aW9uOjpnZXQoc2lnbmF0dXJlKTsKKyAgICAg
ICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+d2ViQXNzZW1ibHlGdW5j
dGlvblN0cnVjdHVyZSgpLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCBtYWtlU3RyaW5nKGlu
ZGV4KSwgbV9pbnN0YW5jZS5nZXQoKSwgZW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlLCBlbnRyeXBv
aW50TG9hZExvY2F0aW9uLCBmdW5jdGlvblR5cGVJbmRleCk7CiAgICAgICAgICAgICB3cmFwcGVy
ID0gZnVuY3Rpb247CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vd2FzbS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29u
CmluZGV4IGM2ZWU2N2ZkMGUwYzBiNDVjZjgzMGI0ZDM3NGQxZTI2YWY0NTQ0NDMuLjI4NjBlYzYx
MzU2N2ZmY2ZjYmRhOTQzMTE1ZDM2OWY2ZTQ1MzcxZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS93YXNtLmpzb24KQEAgLTE3LDYgKzE3LDcgQEAKICAgICAgICAgInJlZiI6ICAgICAgIHsgInR5
cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5cGUiOiAiQjM6OkludDY0IiB9LAog
ICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwg
ImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInN0cnVjdCI6ICAgIHsgInR5cGUiOiAi
dmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCisgICAgICAg
ICJyZWMiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTQ5LCAiYjN0eXBl
IjogIkIzOjpWb2lkIiB9LAogICAgICAgICAidm9pZCI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3
IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAgIH0sCiAgICAgInZh
bHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVu
Y3JlZiJdLApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOWRjOWFiYzAxZTE5ZjNiNDU3YTk0YjBhZDdkY2RiYTc4MGJiYTMwLi42OWVjNTUx
Njk0ZDhmYTAwMzBiZDRiZDJkZTdmZjNlZTEyNjQ5MWU1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA0
LTIyICBBc3VtdSBUYWtpa2F3YSAgPGFzdW11QGlnYWxpYS5jb20+CisKKyAgICAgICAgW1dhc20t
R0NdIEFkZCBzdXBwb3J0IGZvciBXZWJBc3NlbWJseSBHQyByZWN1cnNpb24gZ3JvdXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk2NjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0ZXN0cyBm
b3IgV2FzbSBHQyByZWN1cnNpb24gZ3JvdXBzLgorCisgICAgICAgICogd2FzbS9nYy9yZWMuanM6
IEFkZGVkLgorICAgICAgICAobW9kdWxlKToKKyAgICAgICAgKHRlc3RSZWNEZWNsYXJhdGlvbik6
CisgICAgICAgICogd2FzbS93YXNtLmpzb246CisKIDIwMjItMDQtMjEgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBQcm9wZXJ0eVRhYmxlIHNob3Vs
ZCBoYXZlIGNvbXBhY3QgbW9kZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2djL3JlYy5qcyBi
L0pTVGVzdHMvd2FzbS9nYy9yZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVmM2EzNGY4NjE2MDEwZmU3YzNi
MjU5ZTY0MDYzMTdlNjVjYzYxMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9nYy9y
ZWMuanMKQEAgLTAsMCArMSwyMDkgQEAKKy8vQCBydW5XZWJBc3NlbWJseVN1aXRlKCItLXVzZVdl
YkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXM9dHJ1ZSIsICItLXVzZVdlYkFzc2VtYmx5
R0M9dHJ1ZSIpCisKK2ltcG9ydCAqIGFzIGFzc2VydCBmcm9tICIuLi9hc3NlcnQuanMiOworaW1w
b3J0IHsgaW5zdGFudGlhdGUgfSBmcm9tICIuLi93YWJ0LXdyYXBwZXIuanMiOworCitmdW5jdGlv
biBtb2R1bGUoYnl0ZXMsIHZhbGlkID0gdHJ1ZSkgeworICBsZXQgYnVmZmVyID0gbmV3IEFycmF5
QnVmZmVyKGJ5dGVzLmxlbmd0aCk7CisgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVy
KTsKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgeworICAgIHZpZXdb
aV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOworICB9CisgIHJldHVybiBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKGJ1ZmZlcik7Cit9CisKK2Z1bmN0aW9uIHRlc3RSZWNEZWNsYXJhdGlvbigpIHsKKyAg
LyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0
KSkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgw
MVx4NGZceDAyXHg2MFx4MDBceDAwXHg1Zlx4MDAiKSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQor
ICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKGZ1bmMg
KHR5cGUgMCkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1
bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBc
eDAwXHgwMVx4NGZceDAyXHg2MFx4MDBceDAwXHg1Zlx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMFx4MGFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDFceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDBceDBiIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChz
dHJ1Y3QpKSAodHlwZSAoZnVuYykpKQorICAgKiAgIChmdW5jICh0eXBlIDApKQorICAgKiApCisg
ICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+IG1vZHVsZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDVm
XHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4ODhc
eDgwXHg4MFx4ODBceDAwXHgwMVx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKSwKKyAgICBX
ZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgInR5cGUgc2lnbmF0dXJlIHdhcyBub3QgYSBm
dW5jdGlvbiBzaWduYXR1cmUiCisgICkKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHJl
YyAodHlwZSAoZnVuYykpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAocmVjICh0eXBlIChmdW5j
KSkgKHR5cGUgKHN0cnVjdCkpKQorICAgKiAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1
bmMgMCkpCisgICAqICAgKGZ1bmMgKHR5cGUgMCkpCisgICAqICAgKGZ1bmMgKHJlc3VsdCAocmVm
IDIpKSAocmVmLmZ1bmMgMCkpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4OTRceDgw
XHg4MFx4ODBceDAwXHgwM1x4NGZceDAyXHg2MFx4MDBceDAwXHg1Zlx4MDBceDRmXHgwMlx4NjBc
eDAwXHgwMFx4NWZceDAwXHg2MFx4MDBceDAxXHg2Ylx4MDJceDAzXHg4M1x4ODBceDgwXHg4MFx4
MDBceDAyXHgwMFx4MDRceDA5XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwN1x4NzBceDAxXHhk
Mlx4MDBceDBiXHgwYVx4OTFceDgwXHg4MFx4ODBceDAwXHgwMlx4ODJceDgwXHg4MFx4ODBceDAw
XHgwMFx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQyXHgwMFx4MGIiKSk7CisKKyAgLyoK
KyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0KSkp
CisgICAqICAgKGZ1bmMgKGV4cG9ydCAiZiIpICh0eXBlIDApKQorICAgKiApCisgICAqCisgICAq
IChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVjdCkpKQorICAg
KiAgIChmdW5jIChpbXBvcnQgIm0iICJmIikgKHR5cGUgMCkpCisgICAqICAgKHN0YXJ0IDApCisg
ICAqICkKKyAgICovCisgIHsKKyAgICBsZXQgbTEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDRmXHgwMlx4NjBceDAwXHgwMFx4NWZceDAwXHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4NVx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4NjZceDAwXHgw
MFx4MGFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDFceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBi
IikpOworICAgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAyXHg2
MFx4MDBceDAwXHg1Zlx4MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4NmRceDAx
XHg2Nlx4MDBceDAwXHgwOFx4ODFceDgwXHg4MFx4ODBceDAwXHgwMCIpLCB7IG06IHsgZjogbTEu
ZXhwb3J0cy5mIH0gfSk7CisgIH0KKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAo
dHlwZSAoZnVuYykpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAoZnVuYyAoZXhwb3J0ICJmIikg
KHR5cGUgMCkpCisgICAqICkKKyAgICoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUg
KHN0cnVjdCkpICh0eXBlIChmdW5jKSkpCisgICAqICAgKGZ1bmMgKGltcG9ydCAibSIgImYiKSAo
dHlwZSAxKSkKKyAgICogICAoc3RhcnQgMCkKKyAgICogKQorICAgKi8KKyAgeworICAgIGxldCBt
MSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAyXHg2MFx4MDBc
eDAwXHg1Zlx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg1XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4ODhceDgwXHg4MFx4ODBceDAwXHgw
MVx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKSk7CisgICAgbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4
ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDVmXHgwMFx4NjBceDAwXHgwMFx4MDJceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDFceDAxXHg2ZFx4MDFceDY2XHgwMFx4MDFceDA4XHg4MVx4ODBceDgw
XHg4MFx4MDBceDAwIiksIHsgbTogeyBmOiBtMS5leHBvcnRzLmYgfSB9KTsKKyAgfQorCisgIC8q
CisgICAqIChtb2R1bGUgJG0KKyAgICogICAocmVjICh0eXBlIChmdW5jIChyZXN1bHQgKHJlZiAw
KSkpKSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYu
ZnVuYyAwKSkKKyAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHR5cGUgMCkgKHJlZi5mdW5jIDAp
KQorICAgKiApCisgICAqCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChzdHJ1Y3Qp
KSAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMSkpKSkpCisgICAqICAgKGVsZW0gZGVjbGFyZSBm
dW5jcmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAoaW1wb3J0ICJtIiAiZiIpICh0eXBl
IDEpKQorICAgKiApCisgICAqLworICB7CisgICAgbGV0IG0xID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4YVx4
ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDFceDZiXHgwMFx4NWZceDAwXHgw
M1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4NVx4ODBceDgwXHg4MFx4MDBceDAx
XHgwMVx4NjZceDAwXHgwMFx4MDlceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDA3XHg3MFx4MDFc
eGQyXHgwMFx4MGJceDBhXHg4YVx4ODBceDgwXHg4MFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4
MDBceDAwXHhkMlx4MDBceDBiIikpOworICAgIGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9PiBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceDhhXHg4MFx4ODBceDgwXHgwMFx4MDFceDRmXHgwMlx4NWZceDAwXHg2MFx4
MDBceDAxXHg2Ylx4MDFceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4NmRceDAxXHg2
Nlx4MDBceDAxXHgwOVx4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDdceDcwXHgwMVx4ZDJceDAw
XHgwYiIpLCB7IG06IHsgZjogbTEuZXhwb3J0cy5mIH0gfSksCisgICAgICBXZWJBc3NlbWJseS5M
aW5rRXJyb3IsCisgICAgICAiaW1wb3J0ZWQgZnVuY3Rpb24gbTpmIHNpZ25hdHVyZSBkb2Vzbid0
IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSIKKyAg
ICApOworICB9CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMp
KSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKHJlYyAodHlwZSAoc3RydWN0KSkgKHR5cGUgKGZ1
bmMpKSkKKyAgICogICAoZ2xvYmFsIChyZWYgMCkgKHJlZi5mdW5jIDApKQorICAgKiAgIChmdW5j
ICh0eXBlIDMpKQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+IG1v
ZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4Zlx4ODBceDgwXHg4
MFx4MDBceDAyXHg0Zlx4MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4NGZceDAyXHg1Zlx4MDBceDYw
XHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4MDZceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDZiXHgwMFx4MDBceGQyXHgwMFx4MGJceDBhXHg4OFx4ODBceDgwXHg4MFx4
MDBceDAxXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpLAorICAgIFdlYkFzc2VtYmx5LkNv
bXBpbGVFcnJvciwKKyAgICAiR2xvYmFsIGluaXRfZXhwciBvcGNvZGUgb2YgdHlwZSBSZWYgZG9l
c24ndCBtYXRjaCBnbG9iYWwncyB0eXBlIFJlZiIKKyAgKTsKKworICAvKgorICAgKiAobW9kdWxl
CisgICAqICAgKHJlYyAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMSkpKSkKKyAgICogICAgICAg
ICh0eXBlIChmdW5jIChyZXN1bHQgKHJlZiAwKSkpKSkKKyAgICogICAoZWxlbSBkZWNsYXJlIGZ1
bmNyZWYgKHJlZi5mdW5jIDApKQorICAgKiAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1
bmMgMSkpCisgICAqICAgKGZ1bmMgKHR5cGUgMCkgKHJlZi5mdW5jIDEpKQorICAgKiAgIChmdW5j
ICh0eXBlIDEpIChyZWYuZnVuYyAwKSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDFceDZiXHgwMVx4NjBceDAw
XHgwMVx4NmJceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwOVx4OGRc
eDgwXHg4MFx4ODBceDAwXHgwMlx4MDdceDcwXHgwMVx4ZDJceDAwXHgwYlx4MDdceDcwXHgwMVx4
ZDJceDAxXHgwYlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgwXHgw
MFx4MDBceGQyXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQyXHgwMFx4MGIiKSk7
CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMgKHJlc3VsdCAo
cmVmIDEpKSkpCisgICAqICAgICAgICAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMCkpKSkpCisg
ICAqICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAoZWxlbSBk
ZWNsYXJlIGZ1bmNyZWYgKHJlZi5mdW5jIDEpKQorICAgKiAgIChmdW5jICh0eXBlIDApIChyZWYu
ZnVuYyAxKSkKKyAgICogICAoZnVuYyAodHlwZSAxKSAocmVmLmZ1bmMgMSkpCisgICAqICkKKyAg
ICovCisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4ZFx4ODBceDgw
XHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDFceDZiXHgwMVx4NjBceDAwXHgwMVx4NmJc
eDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwOVx4OGRceDgwXHg4MFx4
ODBceDAwXHgwMlx4MDdceDcwXHgwMVx4ZDJceDAwXHgwYlx4MDdceDcwXHgwMVx4ZDJceDAxXHgw
Ylx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQy
XHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQyXHgwMVx4MGIiKSksCisgICAgV2Vi
QXNzZW1ibHkuQ29tcGlsZUVycm9yLAorICAgICJjb250cm9sIGZsb3cgcmV0dXJucyB3aXRoIHVu
ZXhwZWN0ZWQgdHlwZS4gUmVmIGlzIG5vdCBhIFJlZiwgaW4gZnVuY3Rpb24gYXQgaW5kZXggMSIK
KyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAodHlwZSAoZnVuYyAocGFy
YW0gaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAoZWxlbSBkZWNsYXJlIGZ1bmNyZWYg
KHJlZi5mdW5jIDApKQorICAgKiAgIChmdW5jICh0eXBlIDApKQorICAgKiAgIChmdW5jIChjYWxs
X3JlZiAoaTMyLmNvbnN0IDQyKSAocmVmLmZ1bmMgMCkpKQorICAgKiAgIChzdGFydCAxKQorICAg
KiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDhjXHg4MFx4ODBceDgwXHgwMFx4MDJceDRmXHgw
Mlx4NjBceDAxXHg3Zlx4MDBceDVmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBceDgw
XHgwMFx4MDJceDAwXHgwMlx4MDhceDgxXHg4MFx4ODBceDgwXHgwMFx4MDFceDA5XHg4N1x4ODBc
eDgwXHg4MFx4MDBceDAxXHgwN1x4NzBceDAxXHhkMlx4MDBceDBiXHgwYVx4OTRceDgwXHg4MFx4
ODBceDAwXHgwMlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGJceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDBceDQxXHgyYVx4ZDJceDAwXHgxNFx4MGIiKSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQor
ICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMgKHJlc3VsdCBpMzIpKSkgKHR5cGUgKHN0cnVjdCkpKQor
ICAgKiAgIChyZWMgKHR5cGUgKHN0cnVjdCkpICh0eXBlIChmdW5jIChyZXN1bHQgaTMyKSkpKQor
ICAgKiAgIChmdW5jICh0eXBlIDApCisgICAqICAgICAoYmxvY2sgKHR5cGUgMykKKyAgICogICAg
ICAgKGkzMi5jb25zdCA0MikpKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5z
dGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDkxXHg4
MFx4ODBceDgwXHgwMFx4MDJceDRmXHgwMlx4NjBceDAwXHgwMVx4N2ZceDVmXHgwMFx4NGZceDAy
XHg1Zlx4MDBceDYwXHgwMFx4MDFceDdmXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBc
eDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4
MDNceDQxXHgyYVx4MGJceDBiIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVj
ICh0eXBlIChmdW5jIChyZXN1bHQgaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAocmVj
ICh0eXBlIChzdHJ1Y3QpKSAodHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSkKKyAgICogICAoZnVu
YyAodHlwZSAwKQorICAgKiAgICAgKGxvb3AgKHR5cGUgMykKKyAgICogICAgICAgKGkzMi5jb25z
dCA0MikpKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDkxXHg4MFx4ODBceDgwXHgw
MFx4MDJceDRmXHgwMlx4NjBceDAwXHgwMVx4N2ZceDVmXHgwMFx4NGZceDAyXHg1Zlx4MDBceDYw
XHgwMFx4MDFceDdmXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4ZFx4ODBc
eDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHgwM1x4MDNceDQxXHgyYVx4
MGJceDBiIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChmdW5j
IChyZXN1bHQgaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAocmVjICh0eXBlIChzdHJ1
Y3QpKSAodHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSkKKyAgICogICAoZnVuYyAodHlwZSAwKQor
ICAgKiAgICAgKGkzMi5jb25zdCAxKQorICAgKiAgICAgKGlmICh0eXBlIDMpICh0aGVuIChpMzIu
Y29uc3QgNDIpKSAoZWxzZSAoaTMyLmNvbnN0IDQzKSkpKQorICAgKiApCisgICAqLworICBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDRmXHgwMlx4NjBceDAwXHgwMVx4N2Zc
eDVmXHgwMFx4NGZceDAyXHg1Zlx4MDBceDYwXHgwMFx4MDFceDdmXHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDBhXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAxXHg4Y1x4ODBceDgwXHg4
MFx4MDBceDAwXHg0MVx4MDFceDA0XHgwM1x4NDFceDJhXHgwNVx4NDFceDJiXHgwYlx4MGIiKSk7
CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAo
c3RydWN0KSkpCisgICAqICAgKHRhYmxlIDUgZnVuY3JlZikKKyAgICogICAoZWxlbSBmdW5jcmVm
IChyZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAodHlwZSAwKSkKKyAgICogICAoZnVuYyAoY2Fs
bF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkKKyAgICogICAoc3RhcnQgMSkKKyAg
ICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4
MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgw
MFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDVceDA4XHg4MVx4ODBceDgw
XHg4MFx4MDBceDAxXHgwOVx4OGJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDZceDAwXHg0MVx4MDBc
eDBiXHg3MFx4MDFceGQyXHgwMFx4MGJceDBhXHg5NFx4ODBceDgwXHg4MFx4MDBceDAyXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgx
MVx4MDBceDAwXHgwYiIpKTsKK30KKwordGVzdFJlY0RlY2xhcmF0aW9uKCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRleCA3
NDI4MTJjZGViMDNkNWE1NDg0NWEwNzdhYmIxZDc0YjUyN2ZlNTM1Li45ZjNjZjQ1NmVlOGQwNzk0
Zjg5NGQwYTIzMmQ4NjMzZTVlMzEwY2E4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2FzbS5q
c29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTE3LDYgKzE3LDcgQEAKICAgICAg
ICAgInJlZiI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMjEsICJiM3R5
cGUiOiAiQjM6OkludDY0IiB9LAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlwZSI6ICJ2YXJp
bnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInN0
cnVjdCI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMsICJiM3R5cGUiOiAi
QjM6OlZvaWQiIH0sCisgICAgICAgICJyZWMiOiAgICAgICB7ICJ0eXBlIjogInZhcmludDciLCAi
dmFsdWUiOiAgLTQ5LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAidm9pZCI6ICAg
ICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9p
ZCIgfQogICAgIH0sCiAgICAgInZhbHVlX3R5cGUiOiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2
NCIsICJleHRlcm5yZWYiLCAiZnVuY3JlZiJdLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458536</attachid>
            <date>2022-04-28 11:15:06 -0700</date>
            <delta_ts>2022-05-05 11:03:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239666-20220428111505.patch</filename>
            <type>text/plain</type>
            <size>84359</size>
            <attacher name="Asumu Takikawa">asumu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZDY3MjU1MTQ2ZmU1NjlmZjNjNjQ1MGIwNzI1MGU1ZmRjOWI2ZTcyLi5hMTg3YTUwODdkNzY5Mzc3
Mzk2MjFkNTgyMWRhODRmM2VkOGE0YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDYgQEAKKzIwMjItMDQtMjggIEFzdW11IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNv
bT4KKworICAgICAgICBbV2FzbS1HQ10gQWRkIHN1cHBvcnQgZm9yIFdlYkFzc2VtYmx5IEdDIHJl
Y3Vyc2lvbiBncm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzOTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBHQyBwcm9wb3NhbCdzIHJlY3Vyc2lvbiBn
cm91cHMuIFRoZXNlIGFyZQorICAgICAgICBhIG5ldyBraW5kIG9mIFR5cGVEZWZpbml0aW9uIHRo
YXQgYWxsb3dzIGZvciByZWN1cnNpdmUgdHlwZQorICAgICAgICBkZWZpbml0aW9ucy4gUmVjdXJz
aXZlIHR5cGUgaW5kZXggcmVmZXJlbmNlcyBhcmUgb25seSBhbGxvd2VkIHdpdGgKKyAgICAgICAg
cmVjdXJzaW9uIGdyb3VwIGRlZmluaXRpb25zLgorCisgICAgICAgIFJlY3Vyc2lvbiBncm91cHMg
Y2FuIGJlIHN0b3JlZCBoYXNoLWNvbnNlZCBsaWtlIG90aGVyIHR5cGUKKyAgICAgICAgZGVmaW5p
dGlvbnMsIGJ1dCB0byBzdWNjZXNzZnVsbHkgY29tcGFyZSB0aGVtIHRoZXkgbXVzdCBzdG9yZSBz
ZXZlcmFsCisgICAgICAgIGRlZmluaXRpb25zIGluIHRoZSB0eXBlIHN0b3JlOgorCisgICAgICAg
ICAgLSBUaGUgcmVjdXJzaW9uIGdyb3VwIGl0c2VsZiAocmVjICh0eXBlIC4uLikgLi4uKQorICAg
ICAgICAgIC0gRWFjaCB0eXBlIGNvbXBvbmVudCBpbiB0aGUgZ3JvdXAgKHR5cGUgLi4uKSwgd2hl
cmUgYW55IHBvdGVudGlhbAorICAgICAgICAgICAgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYXJlIHJl
cHJlc2VudGVkIGFzIGEgc3BlY2lhbCB2YWx1ZSB0eXBlLgorICAgICAgICAgIC0gUHJvamVjdGlv
bnMgaW50byB0aGUgcmVjdXJzaW9uIGdyb3VwICgocmVjIC4uLikuPGk+KQorCisgICAgICAgIFBy
b2plY3Rpb25zIGNhbiBiZSBleHBhbmRlZCBpbnRvIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uL3N0
cnVjdC9ldGMKKyAgICAgICAgdHlwZSB3aGVuIHRoZSB2YWxpZGF0b3IgbmVlZHMgdG8gZXhhbWlu
ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSB0eXBlLgorICAgICAgICBUaGlzIG9wZXJhdGlvbiBleHBv
c2VzIHRoZSB0eXBlIGNvbXBvbmVudCBpbiB0aGUgZ3JvdXAsIGFuZCByZXBsYWNlcworICAgICAg
ICByZWN1cnNpdmUgcmVmZXJlbmNlcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwcm9qZWN0aW9uICh3
aGljaCBjYW4gdGhlbgorICAgICAgICBiZSBleHBhbmRlZCBpZiByZXF1aXJlZCwgYW5kIHNvIG9u
KS4KKworICAgICAgICBJZiBleHBhbnNpb24gYmVjb21lcyBhIGJvdHRsZW5lY2ssIGl0IGlzIGVh
c3kgdG8gbWVtb2l6ZSBpdCB3aXRoIHRoZQorICAgICAgICBhZGRpdGlvbiBvZiBhIFR5cGVJbmRl
eCB0byBUeXBlSW5kZXggbWFwcGluZyBpbiB0aGUgdHlwZSBzdG9yZS4KKworICAgICAgICBHZW5l
cmFsbHksIHRoZSBleHBhbnNpb24gb3BlcmF0aW9uIGlzIG5lZWRlZCB3aGVuIGNvZGUgcmVsaWVz
IG9uIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb2YgdGhlIHVuZGVybHlpbmcgdHlwZS4gRm9yIGZ1
bmN0aW9ucywgdGhlc2UgdXNlcyB1c3VhbGx5CisgICAgICAgIGxvb2sgbGlrZSBgc2lnbmF0dXJl
LmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpYC4gVGhlIHNpZ25hdHVyZSAqbXVzdCogYmUKKyAgICAg
ICAgZXhwYW5kZWQgYmVmb3JlIHN1Y2ggYSBjb252ZXJzaW9uIGlzIGNhbGxlZC4KKworICAgICAg
ICBXaGVuIHNpZ25hdHVyZXMgbmVlZCB0byBiZSBjb21wYXJlZCBmb3IgZXF1YWxpdHksIHN1Y2gg
YXMgZm9yCisgICAgICAgIGNhbGxfaW5kaXJlY3Qgb3IgZm9yIG1hdGNoaW5nIGZ1bmN0aW9uIGlt
cG9ydC9leHBvcnQsIHRoZSBjb21wYXJpc29uCisgICAgICAgIHNob3VsZCBnZW5lcmFsbHkgYmUg
ZG9uZSBieSB0aGUgdHlwZSBpbmRleCBvZiB0aGUgcHJvamVjdGlvbi4gVGhhdCBpcywKKyAgICAg
ICAgKm5vdCogYnkgZXF1YWxpdHkgb2YgdGhlIHVuZGVybHlpbmcvZXhwYW5kZWQgdHlwZS4KKwor
ICAgICAgICBSZWN1cnNpdmUgcmVmZXJlbmNlcyBhcmUgbm90IHJlcHJlc2VudGVkIGluIHRoZSBi
aW5hcnkgZm9ybWF0IGFuZCBhcmUKKyAgICAgICAgaW50ZXJuYWwgdG8gdGhlIHNlbWFudGljcyBh
bmQgaW1wbGVtZW50YXRpb24uIFRvIGF2b2lkIHVzaW5nIGV4dHJhCisgICAgICAgIG9wY29kZXMs
IHRoZXkgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQgYXMgYSB0eXBlIHRoYXQgdXNlcyB0aGUK
KyAgICAgICAgb3Bjb2RlIGZvciByZWN1cnNpb24gZ3JvdXAgKFR5cGVLaW5kOjpSZWMpLCB3aGlj
aCBjYW5ub3Qgbm9ybWFsbHkgYmUKKyAgICAgICAgdXNlZCBmb3IgdmFsdWUgdHlwZXMgaW4gdGhl
IGJpbmFyeSBmb3JtYXQsIHdpdGggYSBoZWFwIHR5cGUgdGhhdAorICAgICAgICBlbmNvZGVzIHRo
ZSBpbmRleCBpbnRvIHRoZSByZWN1cnNpb24gZ3JvdXAncyB0eXBlIGxpc3QuCisKKyAgICAgICAg
KiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklS
R2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1
bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21DYWxsZWUuaDoKKyAgICAgICAgKiB3YXNtL1dh
c21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAq
IHdhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmFkZFNpZ25hdHVyZSk6CisgICAgICAg
ICogd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3YXNt
L1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpzcGxpdFN0YWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OkZ1bmN0aW9uUGFy
c2VyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6aW5pdEVsZW1lbnRTZWdtZW50KToK
KyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIpOgorICAgICAgICAo
SlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyk6CisgICAgICAg
IChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAo
SlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZik6CisgICAgICAgICogd2FzbS9X
YXNtTExJbnRQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRQbGFuOjpkaWRDb21w
bGV0ZUNvbXBpbGF0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MaW1pdHMuaDoKKyAgICAgICAg
KiB3YXNtL1dhc21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyOjpSZWN1cnNp
b25Hcm91cEd1YXJkOjpSZWN1cnNpb25Hcm91cEd1YXJkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
UGFyc2VyOjpSZWN1cnNpb25Hcm91cEd1YXJkOjp+UmVjdXJzaW9uR3JvdXBHdWFyZCk6CisgICAg
ICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OlBhcnNlcik6CisgICAgICAgIChK
U0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5cGUpOgorICAgICAgICAo
SlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZSk6CisgICAgICAg
ICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rp
b25QYXJzZXI6OnBhcnNlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6
OnBhcnNlRWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
UmVjdXJzaW9uR3JvdXApOgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuaDoKKyAg
ICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6ZG9X
YXNtQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmRvV2FzbUNhbGxSZWYpOgor
ICAgICAgICAqIHdhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6VHlwZURlZmluaXRpb246OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1
cnNpb25Hcm91cDo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNp
b25Hcm91cDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlByb2plY3Rpb246OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6ZHVtcCBjb25z
dCk6CisgICAgICAgIChKU0M6Oldhc206OmNvbXB1dGVSZWN1cnNpb25Hcm91cEhhc2gpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpjb21wdXRlUHJvamVjdGlvbkhhc2gpOgorICAgICAgICAoSlNDOjpX
YXNtOjpUeXBlRGVmaW5pdGlvbjo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlR5
cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVGdW5jdGlvblNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6
Oldhc206OlR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVTdHJ1Y3RUeXBlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6VHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVJlY3Vyc2lvbkdyb3VwKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6VHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVByb2plY3Rpb24pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpUeXBlRGVmaW5pdGlvbjo6c3Vic3RpdHV0ZSk6CisgICAgICAgIChK
U0M6Oldhc206OlR5cGVEZWZpbml0aW9uOjp1bnJvbGwgY29uc3QpOgorICAgICAgICAoSlNDOjpX
YXNtOjpUeXBlRGVmaW5pdGlvbjo6ZXhwYW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
RnVuY3Rpb25QYXJhbWV0ZXJUeXBlczo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJ1
Y3RQYXJhbWV0ZXJUeXBlczo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNpb25H
cm91cFBhcmFtZXRlclR5cGVzOjpoYXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9u
R3JvdXBQYXJhbWV0ZXJUeXBlczo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNp
b25Hcm91cFBhcmFtZXRlclR5cGVzOjp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpQ
cm9qZWN0aW9uUGFyYW1ldGVyVHlwZXM6Omhhc2gpOgorICAgICAgICAoSlNDOjpXYXNtOjpQcm9q
ZWN0aW9uUGFyYW1ldGVyVHlwZXM6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVj
dGlvblBhcmFtZXRlclR5cGVzOjp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpUeXBl
SW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yUmVjdXJzaW9uR3JvdXApOgorICAgICAgICAo
SlNDOjpXYXNtOjpUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yUHJvamVjdGlvbik6
CisgICAgICAgICogd2FzbS9XYXNtVHlwZURlZmluaXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6UmVjdXJzaW9uR3JvdXA6OlJlY3Vyc2lvbkdyb3VwKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
UmVjdXJzaW9uR3JvdXA6OnR5cGVDb3VudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlJl
Y3Vyc2lvbkdyb3VwOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9u
R3JvdXA6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNpb25Hcm91cDo6c3Rv
cmFnZSk6CisgICAgICAgIChKU0M6Oldhc206OlJlY3Vyc2lvbkdyb3VwOjpzdG9yYWdlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6UHJvamVjdGlvbik6CisgICAgICAg
IChKU0M6Oldhc206OlByb2plY3Rpb246OnJlY3Vyc2lvbkdyb3VwIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6aW5kZXggY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNt
OjpQcm9qZWN0aW9uOjpnZXRSZWN1cnNpb25Hcm91cCk6CisgICAgICAgIChKU0M6Oldhc206OlBy
b2plY3Rpb246OmdldEluZGV4KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6c3Rv
cmFnZSk6CisgICAgICAgIChKU0M6Oldhc206OlByb2plY3Rpb246OnN0b3JhZ2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpUeXBlRGVmaW5pdGlvbjo6VHlwZURlZmluaXRpb24pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpUeXBlRGVmaW5pdGlvbjo6YWxsb2NhdGVkUmVjdXJzaW9uR3JvdXBT
aXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VHlwZURlZmluaXRpb246OmFsbG9jYXRlZFByb2pl
Y3Rpb25TaXplKToKKyAgICAgICAgKiB3YXNtL1dhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6VHlwZUluZm9ybWF0aW9uOjpnZXRGdW5jdGlvblNpZ25hdHVy
ZSk6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Ondhc21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVFeHBv
cnRzKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAyMi0wNC0yNyAgRG1pdHJ5IEJl
emhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLUdDXSBJ
bnRyb2R1Y2UgcnR0IHR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCA3N2E5MjhkODM2NTJlZmZkMjRjOGYyNmRkY2RiZmI3
NDRkZDBkYWRjLi45YzkwZDU5OTI1OGMxYmMwMGIwZTY5NWE3YzdiMzk0NTQwNjRhODI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAK
QEAgLTkzNyw3ICs5MzcsNyBAQCB2b2lkIEFpcklSR2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRl
eHRJbnN0YW5jZShCYXNpY0Jsb2NrKiBibG9jaywgVHlwZWRUbXAgaW5zdAogICAgIGVtaXRQYXRj
aHBvaW50KGJsb2NrLCBwYXRjaHBvaW50LCBUbXAoKSwgaW5zdGFuY2UpOwogfQogCi1BaXJJUkdl
bmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIEIz
OjpQcm9jZWR1cmUmIHByb2NlZHVyZSwgSW50ZXJuYWxGdW5jdGlvbiogY29tcGlsYXRpb24sIFZl
Y3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMsIE1l
bW9yeU1vZGUgbW9kZSwgdW5zaWduZWQgZnVuY3Rpb25JbmRleCwgVGllclVwQ291bnQqIHRpZXJV
cCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgdW5zaWduZWQmIG9zckVudHJ5U2Ny
YXRjaEJ1ZmZlclNpemUpCitBaXJJUkdlbmVyYXRvcjo6QWlySVJHZW5lcmF0b3IoY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mIGluZm8sIEIzOjpQcm9jZWR1cmUmIHByb2NlZHVyZSwgSW50ZXJuYWxG
dW5jdGlvbiogY29tcGlsYXRpb24sIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiYgdW5s
aW5rZWRXYXNtVG9XYXNtQ2FsbHMsIE1lbW9yeU1vZGUgbW9kZSwgdW5zaWduZWQgZnVuY3Rpb25J
bmRleCwgVGllclVwQ291bnQqIHRpZXJVcCwgY29uc3QgVHlwZURlZmluaXRpb24mIG9yaWdpbmFs
U2lnbmF0dXJlLCB1bnNpZ25lZCYgb3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSkKICAgICA6IG1f
aW5mbyhpbmZvKQogICAgICwgbV9tb2RlKG1vZGUpCiAgICAgLCBtX2Z1bmN0aW9uSW5kZXgoZnVu
Y3Rpb25JbmRleCkKQEAgLTEwNDIsNiArMTA0Miw3IEBAIEFpcklSR2VuZXJhdG9yOjpBaXJJUkdl
bmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJv
CiAgICAgbV9tYWluRW50cnlwb2ludFN0YXJ0ID0gbV9jb2RlLmFkZEJsb2NrKCk7CiAgICAgbV9j
dXJyZW50QmxvY2sgPSBtX21haW5FbnRyeXBvaW50U3RhcnQ7CiAKKyAgICBjb25zdCBUeXBlRGVm
aW5pdGlvbiYgc2lnbmF0dXJlID0gb3JpZ2luYWxTaWduYXR1cmUuZXhwYW5kKCk7CiAgICAgQVNT
RVJUKCFtX2xvY2Fscy5zaXplKCkpOwogICAgIG1fbG9jYWxzLmdyb3coc2lnbmF0dXJlLmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCkpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291
bnQoKTsgKytpKSB7CkBAIC0zNzIxLDkgKzM3MjIsMTAgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6
YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2ln
bmEKICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5k
aXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVy
ZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4g
UGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2ln
bmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBvcmlnaW5hbFNpZ25hdHVyZSwg
VmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFy
dGlhbFJlc3VsdAogewogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50YWtl
TGFzdCgpOworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBvcmlnaW5hbFNp
Z25hdHVyZS5leHBhbmQoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0
dXJlPigpLT5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwogICAgIEFTU0VSVChtX2lu
Zm8udGFibGVDb3VudCgpID4gdGFibGVJbmRleCk7CiAgICAgQVNTRVJUKG1faW5mby50YWJsZXNb
dGFibGVJbmRleF0udHlwZSgpID09IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwpAQCAtMzc5
MCw3ICszNzkyLDcgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2ln
bmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJgogICAgICAgICB9KTsKIAogICAg
ICAgICBFeHByZXNzaW9uVHlwZSBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0gZzY0KCk7Ci0gICAg
ICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShUeXBlSW5mb3JtYXRpb246OmdldChzaWduYXR1
cmUpKSwgZXhwZWN0ZWRTaWduYXR1cmVJbmRleCk7CisgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6
OmJpZ0ltbShUeXBlSW5mb3JtYXRpb246OmdldChvcmlnaW5hbFNpZ25hdHVyZSkpLCBleHBlY3Rl
ZFNpZ25hdHVyZUluZGV4KTsKICAgICAgICAgZW1pdENoZWNrKFsmXSB7CiAgICAgICAgICAgICBy
ZXR1cm4gSW5zdChCcmFuY2g2NCwgbnVsbHB0ciwgQXJnOjpyZWxDb25kKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCksIGNhbGxlZVNpZ25hdHVyZUluZGV4LCBleHBlY3RlZFNpZ25hdHVyZUluZGV4
KTsKICAgICAgICAgfSwgWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCBmZDk4YjE4MzgzNTllNWFhOGY3MDZmYTIz
MDM5YzVhYzIwNWExZjFkLi4xM2RkZjQ0N2Y3Njg2ZGExMGNlNDkxMmM0YTQ5NWNkZTNiN2FhNWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3Iu
Y3BwCkBAIC0zMDA2LDkgKzMwMDYsMTAgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVp
bnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXQKICAgICBy
ZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNp
Z25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVz
dWx0CithdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUlu
ZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgb3JpZ2luYWxTaWduYXR1cmUsIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQK
IHsKICAgICBWYWx1ZSogY2FsbGVlSW5kZXggPSBnZXQoYXJncy50YWtlTGFzdCgpKTsKKyAgICBj
b25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlID0gb3JpZ2luYWxTaWduYXR1cmUuZXhwYW5k
KCk7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1l
bnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKIAogICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CkBA
IC0zMDY3LDcgKzMwNjgsNyBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1
bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgcwogCiAgICAgICAgIC8v
IENoZWNrIHRoZSBzaWduYXR1cmUgbWF0Y2hlcyB0aGUgdmFsdWUgd2UgZXhwZWN0LgogICAgICAg
ICB7Ci0gICAgICAgICAgICBWYWx1ZSogZXhwZWN0ZWRTaWduYXR1cmVJbmRleCA9IG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBUeXBlSW5m
b3JtYXRpb246OmdldChzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFNp
Z25hdHVyZUluZGV4ID0gbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1f
cHJvYywgb3JpZ2luKCksIFR5cGVJbmZvcm1hdGlvbjo6Z2V0KG9yaWdpbmFsU2lnbmF0dXJlKSk7
CiAgICAgICAgICAgICBDaGVja1ZhbHVlKiBjaGVjayA9IG1fY3VycmVudEJsb2NrLT5hcHBlbmRO
ZXc8Q2hlY2tWYWx1ZT4obV9wcm9jLCBDaGVjaywgb3JpZ2luKCksCiAgICAgICAgICAgICAgICAg
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxWYWx1ZT4obV9wcm9jLCBOb3RFcXVhbCwgb3JpZ2lu
KCksIGNhbGxlZVNpZ25hdHVyZUluZGV4LCBleHBlY3RlZFNpZ25hdHVyZUluZGV4KSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAppbmRleCA4ZTE4YTc3MjIz
MjBhNGNiZDRlZTBlOGMyM2I3NzQyNWZmZDJhMDQ3Li43OGU3N2Y5NDFkZmI5MjM3OGU5ZmY0MDUy
NGVhNGI0OGRlNjJlM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQkJRUGxhbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBs
YW4uY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBCQlFQbGFuOjp3b3JrKENvbXBpbGF0aW9u
RWZmb3J0IGVmZm9ydCkKIAogICAgIHNpemVfdCBmdW5jdGlvbkluZGV4U3BhY2UgPSBtX2Z1bmN0
aW9uSW5kZXggKyBtX21vZHVsZUluZm9ybWF0aW9uLT5pbXBvcnRGdW5jdGlvbkNvdW50KCk7CiAg
ICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24tPmludGVybmFsRnVu
Y3Rpb25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOwotICAgIGNvbnN0IFR5cGVEZWZpbml0
aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpOworICAgIGNv
bnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBl
SW5kZXgpLmV4cGFuZCgpOwogICAgIGZ1bmN0aW9uLT5lbnRyeXBvaW50LmNvbXBpbGF0aW9uID0g
bWFrZVVuaXF1ZTxDb21waWxhdGlvbj4oCiAgICAgICAgIEZJTkFMSVpFX1dBU01fQ09ERV9GT1Jf
TU9ERShDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIGxpbmtCdWZmZXIsIEpJVENvbXBpbGF0aW9u
UHRyVGFnLCAiV2ViQXNzZW1ibHkgQkJRIGZ1bmN0aW9uWyVpXSAlcyBuYW1lICVzIiwgbV9mdW5j
dGlvbkluZGV4LCBzaWduYXR1cmUudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbWFrZVN0cmlu
ZyhJbmRleE9yTmFtZShmdW5jdGlvbkluZGV4U3BhY2UsIG1fbW9kdWxlSW5mb3JtYXRpb24tPm5h
bWVTZWN0aW9uLT5nZXQoZnVuY3Rpb25JbmRleFNwYWNlKSkpLmFzY2lpKCkuZGF0YSgpKSwKICAg
ICAgICAgV1RGTW92ZShjb250ZXh0Lndhc21FbnRyeXBvaW50Qnlwcm9kdWN0cykpOwpAQCAtMTkz
LDcgKzE5Myw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9uKHVpbnQzMl90IGZ1bmN0
aW9uSW5kZXgpCiAgICAgaWYgKG1fZXhwb3J0ZWRGdW5jdGlvbkluZGljZXMuY29udGFpbnMoZnVu
Y3Rpb25JbmRleCkgfHwgbV9tb2R1bGVJbmZvcm1hdGlvbi0+cmVmZXJlbmNlZEZ1bmN0aW9ucygp
LmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpKSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICAgICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKLSAgICAgICAgY29u
c3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJ
bmRleCk7CisgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5m
b3JtYXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFuZCgpOwogCiAgICAgICAgIG1fY29tcGlsYXRp
b25Db250ZXh0c1tmdW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQgPSBtYWtlVW5p
cXVlPENDYWxsSGVscGVycz4oKTsKICAgICAgICAgYXV0byBlbWJlZGRlclRvV2FzbUludGVybmFs
RnVuY3Rpb24gPSBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoKm1fY29tcGlsYXRpb25Db250ZXh0c1tm
dW5jdGlvbkluZGV4XS5lbWJlZGRlckVudHJ5cG9pbnRKSVQsIHNpZ25hdHVyZSwgJm1fdW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbHNbZnVuY3Rpb25JbmRleF0sIG1fbW9kdWxlSW5mb3JtYXRpb24uZ2V0
KCksIG1fbW9kZSwgZnVuY3Rpb25JbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtQ2FsbGVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
Q2FsbGVlLmgKaW5kZXggZDhhZGY0YjEzMGZhNGU4NGFmYTY4MmZlMDdiMzNiMWY1ZGI2ZjMzNS4u
YjVkMWFlNmM3ZmUxYTVmNGJiMzk2OWUyNmNjNDNhNzEyNDEwYTUwYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaApAQCAtMjY1LDcgKzI2NSw3IEBAIHB1YmxpYzoKIAog
ICAgIExMSW50VGllclVwQ291bnRlciYgdGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1fdGllclVw
Q291bnRlcjsgfQogCi0gICAgY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZSh1bnNp
Z25lZCBpbmRleCkgY29uc3QKKyAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlKHVu
c2lnbmVkIGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICptX3NpZ25hdHVyZXNb
aW5kZXhdOwogICAgIH0KQEAgLTMwNCw3ICszMDQsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAgIGNvbnN0
IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxwdHIgfTsKICAgICBGaXhlZFZl
Y3RvcjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldD4gbV9qdW1wVGFyZ2V0czsKLSAgICBG
aXhlZFZlY3Rvcjxjb25zdCBGdW5jdGlvblNpZ25hdHVyZSo+IG1fc2lnbmF0dXJlczsKKyAgICBG
aXhlZFZlY3Rvcjxjb25zdCBUeXBlRGVmaW5pdGlvbio+IG1fc2lnbmF0dXJlczsKICAgICBPdXRP
ZkxpbmVKdW1wVGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIExMSW50VGllclVw
Q291bnRlciBtX3RpZXJVcENvdW50ZXI7CiAgICAgRml4ZWRWZWN0b3I8SnVtcFRhYmxlPiBtX2p1
bXBUYWJsZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKaW5kZXggOWJl
YTQ0ODY0NzgwN2RiNjc5NThjZDk4OGIyOGE0MzgzODgyMmYyMy4uNWE4NmQzYzY4ZGVhNmNmNjlh
MDI1MWE4ZGUyYTg2NzBiYTViMmNiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUZvcm1hdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
b3JtYXQuaApAQCAtNzUsNiArNzUsOSBAQCBpbmxpbmUgYm9vbCBpc1ZhbHVlVHlwZShUeXBlIHR5
cGUpCiAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgcmV0dXJuIE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5VHlwZWRGdW5jdGlvblJlZmVyZW5jZXMoKTsKICAgICBjYXNlIFR5cGVL
aW5kOjpSdHQ6CisgICAgLy8gUmVjIHR5cGUga2luZHMgYXJlIHVzZWQgaW50ZXJuYWxseSB0byBy
ZXByZXNlbnQgYHJlYy48aT5gIHJlZmVyZW5jZXMKKyAgICAvLyB3aXRoaW4gcmVjdXJzaW9uIGdy
b3Vwcy4gVGhleSBhcmUgaW52YWxpZCBpbiBvdGhlciBjb250ZXh0cy4KKyAgICBjYXNlIFR5cGVL
aW5kOjpSZWM6CiAgICAgICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCk7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRl
eCAwYzZmNzliNmMxOTliZDlhZjQ4MGE1OTNmY2MxNDU0MjkwMmEzZTc4Li4wODhiNzllOGI3OGZm
MTBmZmNhNzk1YTQ1MDkwOGVlYTZlYjI4N2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgV2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgRnVuY3Rpb25D
b2RlQmxvY2tHZW5lcmF0b3I6Om91dE9mTGluZUp1bXBPZmZzZXQoV2EKICAgICByZXR1cm4gbV9v
dXRPZkxpbmVKdW1wVGFyZ2V0cy5nZXQoYnl0ZWNvZGVPZmZzZXQpOwogfQogCi11bnNpZ25lZCBG
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6YWRkU2lnbmF0dXJlKGNvbnN0IEZ1bmN0aW9uU2ln
bmF0dXJlJiBzaWduYXR1cmUpCit1bnNpZ25lZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6
YWRkU2lnbmF0dXJlKGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUpCiB7CiAgICAgdW5z
aWduZWQgaW5kZXggPSBtX3NpZ25hdHVyZXMuc2l6ZSgpOwogICAgIG1fc2lnbmF0dXJlcy5hcHBl
bmQoJnNpZ25hdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IDQ4OWZlNjZjNTdmZTk3
ZjJmZDRhZWNjY2ZmMWFkNjg3ODI0ZGIyMzguLjAwM2M5OThhMjM2Y2E4NDEzZWZmNGVmODJiNWQz
ZjViNzUxOGZkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCkBAIC00OCw3ICs0OCw3IEBAIGNs
YXNzIEJ5dGVjb2RlR2VuZXJhdG9yQmFzZTsKIG5hbWVzcGFjZSBXYXNtIHsKIAogY2xhc3MgTExJ
bnRDYWxsZWU7Ci1jbGFzcyBGdW5jdGlvblNpZ25hdHVyZTsKK2NsYXNzIFR5cGVEZWZpbml0aW9u
Owogc3RydWN0IEdlbmVyYXRvclRyYWl0czsKIAogc3RydWN0IEp1bXBUYWJsZUVudHJ5IHsKQEAg
LTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAKICAgICBIYXNoTWFwPFdhc21JbnN0cnVjdGlvblN0
cmVhbTo6T2Zmc2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4mIHRpZXJVcENv
dW50ZXIoKSB7IHJldHVybiBtX3RpZXJVcENvdW50ZXI7IH0KIAotICAgIHVuc2lnbmVkIGFkZFNp
Z25hdHVyZShjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYpOworICAgIHVuc2lnbmVkIGFkZFNpZ25h
dHVyZShjb25zdCBUeXBlRGVmaW5pdGlvbiYpOwogCiAgICAgSnVtcFRhYmxlJiBhZGRKdW1wVGFi
bGUoc2l6ZV90IG51bWJlck9mRW50cmllcyk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZKdW1wVGFi
bGVzKCkgY29uc3Q7CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsKICAgICBjb25zdCB2
b2lkKiBtX2luc3RydWN0aW9uc1Jhd1BvaW50ZXIgeyBudWxscHRyIH07CiAgICAgVmVjdG9yPFdh
c21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRzOwotICAgIFZlY3Rvcjxj
b25zdCBGdW5jdGlvblNpZ25hdHVyZSo+IG1fc2lnbmF0dXJlczsKKyAgICBWZWN0b3I8Y29uc3Qg
VHlwZURlZmluaXRpb24qPiBtX3NpZ25hdHVyZXM7CiAgICAgT3V0T2ZMaW5lSnVtcFRhcmdldHMg
bV9vdXRPZkxpbmVKdW1wVGFyZ2V0czsKICAgICBIYXNoTWFwPFdhc21JbnN0cnVjdGlvblN0cmVh
bTo6T2Zmc2V0LCBMTEludFRpZXJVcENvdW50ZXI6Ok9TUkVudHJ5RGF0YT4gbV90aWVyVXBDb3Vu
dGVyOwogICAgIFZlY3RvcjxKdW1wVGFibGU+IG1fanVtcFRhYmxlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmgKaW5kZXggZGViODdmYmMzN2I3
MWJmOWUxZDkwMDBhNzdjMmY0NTc2MmVmYjNjYi4uYTBjNzQwMGVkMjVhZmMzNDNjYjhlZTE4OTM5
YzAyMjE4MmUwNTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1
bmN0aW9uUGFyc2VyLmgKQEAgLTQ4LDggKzQ4LDkgQEAgZW51bSBjbGFzcyBDYXRjaEtpbmQgewog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW5jbG9zaW5nU3RhY2ssIHR5cGVuYW1lIE5ld1N0YWNr
Pgotdm9pZCBzcGxpdFN0YWNrKEJsb2NrU2lnbmF0dXJlIHNpZ25hdHVyZSwgRW5jbG9zaW5nU3Rh
Y2smIGVuY2xvc2luZ1N0YWNrLCBOZXdTdGFjayYgbmV3U3RhY2spCit2b2lkIHNwbGl0U3RhY2so
QmxvY2tTaWduYXR1cmUgb3JpZ2luYWxTaWduYXR1cmUsIEVuY2xvc2luZ1N0YWNrJiBlbmNsb3Np
bmdTdGFjaywgTmV3U3RhY2smIG5ld1N0YWNrKQogeworICAgIEJsb2NrU2lnbmF0dXJlIHNpZ25h
dHVyZSA9ICZvcmlnaW5hbFNpZ25hdHVyZS0+ZXhwYW5kKCk7CiAgICAgbmV3U3RhY2sucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaWduYXR1cmUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1
bWVudENvdW50KCkpOwogICAgIEFTU0VSVChlbmNsb3NpbmdTdGFjay5zaXplKCkgPj0gc2lnbmF0
dXJlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpKTsKICAgICB1bnNp
Z25lZCBvZmZzZXQgPSBlbmNsb3NpbmdTdGFjay5zaXplKCkgLSBzaWduYXR1cmUtPmFzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCk7CkBAIC0yMjksNyArMjMwLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpGdW5jdGlv
blBhcnNlcihDb250ZXh0JiBjb250ZXh0LCBjb25zdCB1aW50OF90KiBmdW5jdGlvblN0YXJ0LCBz
aXplX3QgZnVuY3Rpb25MZW5ndGgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIGNv
bnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvKQogICAgIDogUGFyc2VyKGZ1bmN0aW9uU3RhcnQs
IGZ1bmN0aW9uTGVuZ3RoKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCi0gICAgLCBtX3NpZ25h
dHVyZShzaWduYXR1cmUpCisgICAgLCBtX3NpZ25hdHVyZShzaWduYXR1cmUuZXhwYW5kKCkpCiAg
ICAgLCBtX2luZm8oaW5mbykKIHsKICAgICBpZiAodmVyYm9zZSkKQEAgLTI0Miw2ICsyNDMsNyBA
QCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJzZSgpIC0+IFJlc3VsdAogewogICAg
IHVpbnQzMl90IGxvY2FsR3JvdXBzQ291bnQ7CiAKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFt
X3NpZ25hdHVyZS5pczxGdW5jdGlvblNpZ25hdHVyZT4oKSwgInR5cGUgc2lnbmF0dXJlIHdhcyBu
b3QgYSBmdW5jdGlvbiBzaWduYXR1cmUiKTsKICAgICBjb25zdCBhdXRvJiBzaWduYXR1cmUgPSAq
bV9zaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighbV9jb250ZXh0LmFkZEFyZ3VtZW50cyhtX3NpZ25hdHVyZSksICJjYW4ndCBhZGQgIiwg
c2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSwgIiBhcmd1bWVudHMgdG8gRnVuY3Rpb24iKTsKICAg
ICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihsb2NhbEdyb3Vwc0NvdW50KSwg
ImNhbid0IGdldCBsb2NhbCBncm91cHMgY291bnQiKTsKQEAgLTEyMTksNyArMTIyMSw3IEBAIEZP
Ul9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBXQVNNX0ZB
SUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4KSk7CiAK
ICAgICAgICAgVHlwZUluZGV4IGNhbGxlZVR5cGVJbmRleCA9IG1faW5mby50eXBlSW5kZXhGcm9t
RnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwotICAgICAgICBjb25zdCBUeXBlRGVm
aW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjYWxsZWVUeXBl
SW5kZXgpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBU
eXBlSW5mb3JtYXRpb246OmdldChjYWxsZWVUeXBlSW5kZXgpLmV4cGFuZCgpOwogICAgICAgICBj
b25zdCBhdXRvJiBjYWxsZWVTaWduYXR1cmUgPSAqdHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25T
aWduYXR1cmU+KCk7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY2FsbGVlU2lnbmF0dXJl
LmFyZ3VtZW50Q291bnQoKSA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbGwgZnVuY3Rp
b24gaW5kZXggIiwgZnVuY3Rpb25JbmRleCwgIiBoYXMgIiwgY2FsbGVlU2lnbmF0dXJlLmFyZ3Vt
ZW50Q291bnQoKSwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJyZW50
bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwogCkBAIC0x
MjU4LDcgKzEyNjAsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FT
RSkKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihtX2luZm8udGFibGVzW3RhYmxlSW5kZXhd
LnR5cGUoKSAhPSBUYWJsZUVsZW1lbnRUeXBlOjpGdW5jcmVmLCAiY2FsbF9pbmRpcmVjdCBpcyBv
bmx5IHZhbGlkIHdoZW4gYSB0YWJsZSBoYXMgdHlwZSBmdW5jcmVmIik7CiAKICAgICAgICAgY29u
c3QgVHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gbV9pbmZvLnR5cGVTaWduYXR1cmVz
W3NpZ25hdHVyZUluZGV4XS5nZXQoKTsKLSAgICAgICAgY29uc3QgYXV0byYgY2FsbGVlU2lnbmF0
dXJlID0gKnR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAgICAgICBj
b25zdCBhdXRvJiBjYWxsZWVTaWduYXR1cmUgPSAqdHlwZURlZmluaXRpb24uZXhwYW5kKCkuYXM8
RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIHNpemVfdCBhcmd1bWVudENvdW50ID0gY2Fs
bGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8vIEFkZCB0aGUgY2FsbGVlJ3MgaW5k
ZXguCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1lbnRDb3VudCA+IG1fZXhwcmVz
c2lvblN0YWNrLnNpemUoKSwgImNhbGxfaW5kaXJlY3QgZXhwZWN0cyAiLCBhcmd1bWVudENvdW50
LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNrIGN1cnJlbnRseSBob2xkcyAi
LCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7CiAKQEAgLTEyOTAsNyArMTI5
Miw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKCFpc1JlZldpdGhUeXBlSW5kZXgobV9leHByZXNzaW9u
U3RhY2subGFzdCgpLnR5cGUoKSksICJub24tZnVuY3JlZiBjYWxsX3JlZiB2YWx1ZSAiLCBtX2V4
cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmtpbmQpOwogCiAgICAgICAgIGNvbnN0IFR5cGVJ
bmRleCBjYWxsZWVUeXBlSW5kZXggPSBtX2V4cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpLmlu
ZGV4OwotICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBUeXBl
SW5mb3JtYXRpb246OmdldChjYWxsZWVUeXBlSW5kZXgpOworICAgICAgICBjb25zdCBUeXBlRGVm
aW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjYWxsZWVUeXBl
SW5kZXgpLmV4cGFuZCgpOwogICAgICAgICBjb25zdCBhdXRvJiBjYWxsZWVTaWduYXR1cmUgPSAq
dHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIHNpemVfdCBh
cmd1bWVudENvdW50ID0gY2FsbGVlU2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDE7IC8vIEFk
ZCB0aGUgY2FsbGVlJ3MgdmFsdWUuCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoYXJndW1l
bnRDb3VudCA+IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgImNhbGxfcmVmIGV4cGVjdHMgIiwg
YXJndW1lbnRDb3VudCwgIiBhcmd1bWVudHMsIGJ1dCB0aGUgZXhwcmVzc2lvbiBzdGFjayBjdXJy
ZW50bHkgaG9sZHMgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHZhbHVlcyIpOwpAQCAt
MTMyMCw3ICsxMzIyLDggQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NB
U0UpCiAgICAgICAgIEJsb2NrU2lnbmF0dXJlIGlubGluZVNpZ25hdHVyZUFzVHlwZTsKICAgICAg
ICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZShtX2luZm8sIGlubGlu
ZVNpZ25hdHVyZUFzVHlwZSksICJjYW4ndCBnZXQgYmxvY2sncyBzaWduYXR1cmUiKTsKIAotICAg
ICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSogaW5saW5lU2lnbmF0dXJlID0gaW5saW5lU2ln
bmF0dXJlQXNUeXBlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAgICAgICAgQmxvY2tTaWdu
YXR1cmUgZXhwYW5kZWRTaWduYXR1cmUgPSAmaW5saW5lU2lnbmF0dXJlQXNUeXBlLT5leHBhbmQo
KTsKKyAgICAgICAgY29uc3QgRnVuY3Rpb25TaWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGV4
cGFuZGVkU2lnbmF0dXJlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgV0FTTV9W
QUxJREFUT1JfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgPCBpbmxpbmVTaWduYXR1
cmUtPmFyZ3VtZW50Q291bnQoKSwgIlRvbyBmZXcgdmFsdWVzIG9uIHN0YWNrIGZvciBibG9jay4g
QmxvY2sgZXhwZWN0cyAiLCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgIiwgYnV0
IG9ubHkgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHdlcmUgcHJlc2VudC4gQmxvY2sg
aGFzIGlubGluZVNpZ25hdHVyZTogIiwgaW5saW5lU2lnbmF0dXJlLT50b1N0cmluZygpKTsKICAg
ICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gaW5saW5l
U2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CkBAIC0xMzMxLDcg
KzEzMzQsNyBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAg
ICAgICAgaW50NjRfdCBvbGRTaXplID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOwogICAgICAg
ICBTdGFjayBuZXdTdGFjazsKICAgICAgICAgQ29udHJvbFR5cGUgYmxvY2s7Ci0gICAgICAgIFdB
U01fVFJZX0FERF9UT19DT05URVhUKGFkZEJsb2NrKGlubGluZVNpZ25hdHVyZUFzVHlwZSwgbV9l
eHByZXNzaW9uU3RhY2ssIGJsb2NrLCBuZXdTdGFjaykpOworICAgICAgICBXQVNNX1RSWV9BRERf
VE9fQ09OVEVYVChhZGRCbG9jayhleHBhbmRlZFNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3RhY2ss
IGJsb2NrLCBuZXdTdGFjaykpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFNpemUsIG9sZFNp
emUgLSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgPT0gaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVu
dENvdW50KCkpOwogICAgICAgICBBU1NFUlQobmV3U3RhY2suc2l6ZSgpID09IGlubGluZVNpZ25h
dHVyZS0+YXJndW1lbnRDb3VudCgpKTsKIApAQCAtMTM0NCw3ICsxMzQ3LDggQEAgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIEJsb2NrU2lnbmF0dXJl
IGlubGluZVNpZ25hdHVyZUFzVHlwZTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighcGFy
c2VCbG9ja1NpZ25hdHVyZShtX2luZm8sIGlubGluZVNpZ25hdHVyZUFzVHlwZSksICJjYW4ndCBn
ZXQgbG9vcCdzIHNpZ25hdHVyZSIpOwogCi0gICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJl
KiBpbmxpbmVTaWduYXR1cmUgPSBpbmxpbmVTaWduYXR1cmVBc1R5cGUtPmFzPEZ1bmN0aW9uU2ln
bmF0dXJlPigpOworICAgICAgICBCbG9ja1NpZ25hdHVyZSBleHBhbmRlZFNpZ25hdHVyZSA9ICZp
bmxpbmVTaWduYXR1cmVBc1R5cGUtPmV4cGFuZCgpOworICAgICAgICBjb25zdCBGdW5jdGlvblNp
Z25hdHVyZSogaW5saW5lU2lnbmF0dXJlID0gZXhwYW5kZWRTaWduYXR1cmUtPmFzPEZ1bmN0aW9u
U2lnbmF0dXJlPigpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lv
blN0YWNrLnNpemUoKSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiVG9vIGZl
dyB2YWx1ZXMgb24gc3RhY2sgZm9yIGxvb3AgYmxvY2suIExvb3AgZXhwZWN0cyAiLCBpbmxpbmVT
aWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgIiwgYnV0IG9ubHkgIiwgbV9leHByZXNzaW9uU3Rh
Y2suc2l6ZSgpLCAiIHdlcmUgcHJlc2VudC4gTG9vcCBoYXMgaW5saW5lU2lnbmF0dXJlOiAiLCBp
bmxpbmVTaWduYXR1cmUtPnRvU3RyaW5nKCkpOwogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCkgLSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQo
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGlubGluZVNpZ25hdHVyZS0+YXJn
dW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTEzNTUsNyArMTM1OSw3IEBAIEZPUl9FQUNIX1dBU01f
TUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBpbnQ2NF90IG9sZFNpemUgPSBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCk7CiAgICAgICAgIFN0YWNrIG5ld1N0YWNrOwogICAgICAg
ICBDb250cm9sVHlwZSBsb29wOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRM
b29wKGlubGluZVNpZ25hdHVyZUFzVHlwZSwgbV9leHByZXNzaW9uU3RhY2ssIGxvb3AsIG5ld1N0
YWNrLCBtX2xvb3BJbmRleCsrKSk7CisgICAgICAgIFdBU01fVFJZX0FERF9UT19DT05URVhUKGFk
ZExvb3AoZXhwYW5kZWRTaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0YWNrLCBsb29wLCBuZXdTdGFj
aywgbV9sb29wSW5kZXgrKykpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFNpemUsIG9sZFNp
emUgLSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgPT0gaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVu
dENvdW50KCkpOwogICAgICAgICBBU1NFUlQobmV3U3RhY2suc2l6ZSgpID09IGlubGluZVNpZ25h
dHVyZS0+YXJndW1lbnRDb3VudCgpKTsKIApAQCAtMTM3MCw3ICsxMzc0LDggQEAgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlQmxvY2tTaWduYXR1cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1cmVBc1R5cGUp
LCAiY2FuJ3QgZ2V0IGlmJ3Mgc2lnbmF0dXJlIik7CiAgICAgICAgIFdBU01fVFJZX1BPUF9FWFBS
RVNTSU9OX1NUQUNLX0lOVE8oY29uZGl0aW9uLCAiaWYgY29uZGl0aW9uIik7CiAKLSAgICAgICAg
Y29uc3QgRnVuY3Rpb25TaWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGlubGluZVNpZ25hdHVy
ZUFzVHlwZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgICAgIEJsb2NrU2lnbmF0dXJl
IGV4cGFuZGVkU2lnbmF0dXJlID0gJmlubGluZVNpZ25hdHVyZUFzVHlwZS0+ZXhwYW5kKCk7Cisg
ICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBleHBhbmRl
ZFNpZ25hdHVyZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIFdBU01fVkFMSURB
VE9SX0ZBSUxfSUYoIWNvbmRpdGlvbi50eXBlKCkuaXNJMzIoKSwgImlmIGNvbmRpdGlvbiBtdXN0
IGJlIGkzMiwgZ290ICIsIGNvbmRpdGlvbi50eXBlKCkua2luZCk7CiAgICAgICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYobV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIDwgaW5saW5lU2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KCksICJUb28gZmV3IGFyZ3VtZW50cyBvbiBzdGFjayBmb3IgaWYgYmxv
Y2suIElmIGV4cGVjdHMgIiwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCksICIsIGJ1
dCBvbmx5ICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB3ZXJlIHByZXNlbnQuIElmIGJs
b2NrIGhhcyBzaWduYXR1cmU6ICIsIGlubGluZVNpZ25hdHVyZS0+dG9TdHJpbmcoKSk7CiAgICAg
ICAgIHVuc2lnbmVkIG9mZnNldCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGlubGluZVNp
Z25hdHVyZS0+YXJndW1lbnRDb3VudCgpOwpAQCAtMTM4MCw3ICsxMzg1LDcgQEAgRk9SX0VBQ0hf
V0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGludDY0X3Qgb2xkU2l6
ZSA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsKICAgICAgICAgU3RhY2sgbmV3U3RhY2s7CiAg
ICAgICAgIENvbnRyb2xUeXBlIGNvbnRyb2w7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZElmKGNvbmRpdGlvbiwgaW5saW5lU2lnbmF0dXJlQXNUeXBlLCBtX2V4cHJlc3Npb25T
dGFjaywgY29udHJvbCwgbmV3U3RhY2spKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRF
WFQoYWRkSWYoY29uZGl0aW9uLCBleHBhbmRlZFNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3RhY2ss
IGNvbnRyb2wsIG5ld1N0YWNrKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU2l6ZSwgb2xk
U2l6ZSAtIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA9PSBpbmxpbmVTaWduYXR1cmUtPmFyZ3Vt
ZW50Q291bnQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdGFjay5zaXplKCkgPT0gaW5saW5lU2ln
bmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogCkBAIC0xNDA3LDcgKzE0MTIsOCBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgQmxvY2tTaWduYXR1
cmUgaW5saW5lU2lnbmF0dXJlQXNUeXBlOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZUJsb2NrU2lnbmF0dXJlKG1faW5mbywgaW5saW5lU2lnbmF0dXJlQXNUeXBlKSwgImNhbid0
IGdldCB0cnkncyBzaWduYXR1cmUiKTsKIAotICAgICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVy
ZSogaW5saW5lU2lnbmF0dXJlID0gaW5saW5lU2lnbmF0dXJlQXNUeXBlLT5hczxGdW5jdGlvblNp
Z25hdHVyZT4oKTsKKyAgICAgICAgQmxvY2tTaWduYXR1cmUgZXhwYW5kZWRTaWduYXR1cmUgPSAm
aW5saW5lU2lnbmF0dXJlQXNUeXBlLT5leHBhbmQoKTsKKyAgICAgICAgY29uc3QgRnVuY3Rpb25T
aWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGV4cGFuZGVkU2lnbmF0dXJlLT5hczxGdW5jdGlv
blNpZ25hdHVyZT4oKTsKICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2V4cHJlc3Np
b25TdGFjay5zaXplKCkgPCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgIlRvbyBm
ZXcgYXJndW1lbnRzIG9uIHN0YWNrIGZvciB0cnkgYmxvY2suIFRyeWUgZXhwZWN0cyAiLCBpbmxp
bmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgIiwgYnV0IG9ubHkgIiwgbV9leHByZXNzaW9u
U3RhY2suc2l6ZSgpLCAiIHdlcmUgcHJlc2VudC4gVHJ5IGJsb2NrIGhhcyBzaWduYXR1cmU6ICIs
IGlubGluZVNpZ25hdHVyZS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9
IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3Vu
dCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5saW5lU2lnbmF0dXJlLT5h
cmd1bWVudENvdW50KCk7ICsraSkKQEAgLTE0MTYsNyArMTQyMiw3IEBAIEZPUl9FQUNIX1dBU01f
TUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBpbnQ2NF90IG9sZFNpemUgPSBt
X2V4cHJlc3Npb25TdGFjay5zaXplKCk7CiAgICAgICAgIFN0YWNrIG5ld1N0YWNrOwogICAgICAg
ICBDb250cm9sVHlwZSBjb250cm9sOwotICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChh
ZGRUcnkoaW5saW5lU2lnbmF0dXJlQXNUeXBlLCBtX2V4cHJlc3Npb25TdGFjaywgY29udHJvbCwg
bmV3U3RhY2spKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkVHJ5KGV4cGFu
ZGVkU2lnbmF0dXJlLCBtX2V4cHJlc3Npb25TdGFjaywgY29udHJvbCwgbmV3U3RhY2spKTsKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChvbGRTaXplLCBvbGRTaXplIC0gbV9leHByZXNzaW9uU3RhY2su
c2l6ZSgpID09IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgQVNT
RVJUKG5ld1N0YWNrLnNpemUoKSA9PSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7
CiAKQEAgLTE0MzMsNyArMTQzOSw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENS
RUFURV9DQVNFKQogICAgICAgICB1aW50MzJfdCBleGNlcHRpb25JbmRleDsKICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUV4Y2VwdGlvbkluZGV4KGV4Y2VwdGlvbkluZGV4
KSk7CiAgICAgICAgIFR5cGVJbmRleCB0eXBlSW5kZXggPSBtX2luZm8udHlwZUluZGV4RnJvbUV4
Y2VwdGlvbkluZGV4U3BhY2UoZXhjZXB0aW9uSW5kZXgpOwotICAgICAgICBjb25zdCBUeXBlRGVm
aW5pdGlvbiYgZXhjZXB0aW9uU2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUlu
ZGV4KTsKKyAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGV4Y2VwdGlvblNpZ25hdHVyZSA9
IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCkuZXhwYW5kKCk7CiAKICAgICAgICAgQ29u
dHJvbEVudHJ5JiBjb250cm9sRW50cnkgPSBtX2NvbnRyb2xTdGFjay5sYXN0KCk7CiAgICAgICAg
IFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzVHJ5T3JDYXRjaChjb250cm9sRW50cnkuY29udHJv
bERhdGEpLCAiY2F0Y2ggYmxvY2sgaXNuJ3QgYXNzb2NpYXRlZCB0byBhIHRyeSIpOwpAQCAtMTY4
Nyw3ICsxNjkzLDcgQEAgYXV0byBGdW5jdGlvblBhcnNlcjxDb250ZXh0Pjo6cGFyc2VVbnJlYWNo
YWJsZUV4cHJlc3Npb24oKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgIHVpbnQzMl90IGV4Y2Vw
dGlvbkluZGV4OwogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRXhjZXB0
aW9uSW5kZXgoZXhjZXB0aW9uSW5kZXgpKTsKICAgICAgICAgVHlwZUluZGV4IHR5cGVJbmRleCA9
IG1faW5mby50eXBlSW5kZXhGcm9tRXhjZXB0aW9uSW5kZXhTcGFjZShleGNlcHRpb25JbmRleCk7
Ci0gICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBleGNlcHRpb25TaWduYXR1cmUgPSBUeXBl
SW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlv
biYgZXhjZXB0aW9uU2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4KS5l
eHBhbmQoKTsKIAogICAgICAgICBpZiAobV91bnJlYWNoYWJsZUJsb2NrcyA+IDEpCiAgICAgICAg
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5j
ZS5jcHAKaW5kZXggNzNiYTliZDIxM2U1NTQ2ZDU1MDU5MTMxNzViOGJiMmNmZjliYWJlOS4uMGIx
NjUzMzY2MzU4YzQwYTFmNzg1Zjk5ZDQ1MmZmOWE1M2IwZGE0NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCkBAIC0yMzMsNiArMjMzLDcgQEAgdm9pZCBJ
bnN0YW5jZTo6aW5pdEVsZW1lbnRTZWdtZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIGNvbnN0IEVs
ZW1lbnQmIHNlZ21lbnQsIHUKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NTUxMAogICAgICAgICB1aW50MzJfdCBmdW5jdGlvbkluZGV4ID0gc2Vn
bWVudC5mdW5jdGlvbkluZGljZXNbc3JjSW5kZXhdOwogICAgICAgICBUeXBlSW5kZXggdHlwZUlu
ZGV4ID0gbV9tb2R1bGUtPnR5cGVJbmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25J
bmRleCk7CisgICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6
Z2V0RnVuY3Rpb25TaWduYXR1cmUodHlwZUluZGV4KTsKICAgICAgICAgaWYgKGlzSW1wb3J0RnVu
Y3Rpb24oZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlvbklt
cG9ydCA9IGltcG9ydEZ1bmN0aW9uPFdyaXRlQmFycmllcjxKU09iamVjdD4+KGZ1bmN0aW9uSW5k
ZXgpLT5nZXQoKTsKICAgICAgICAgICAgIGlmIChpc1dlYkFzc2VtYmx5SG9zdEZ1bmN0aW9uKGZ1
bmN0aW9uSW1wb3J0KSkgewpAQCAtMjU4LDcgKzI1OSw2IEBAIHZvaWQgSW5zdGFuY2U6OmluaXRF
bGVtZW50U2VnbWVudCh1aW50MzJfdCB0YWJsZUluZGV4LCBjb25zdCBFbGVtZW50JiBzZWdtZW50
LCB1CiAKICAgICAgICAgQ2FsbGVlJiBlbWJlZGRlckVudHJ5cG9pbnRDYWxsZWUgPSBjYWxsZWVH
cm91cCgpLT5lbWJlZGRlckVudHJ5cG9pbnRDYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1
bmN0aW9uSW5kZXgpOwogICAgICAgICBXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1bmN0aW9uOjpMb2Fk
TG9jYXRpb24gZW50cnlwb2ludExvYWRMb2NhdGlvbiA9IGNhbGxlZUdyb3VwKCktPmVudHJ5cG9p
bnRMb2FkTG9jYXRpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpOwotICAg
ICAgICBjb25zdCBhdXRvJiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldEZ1bmN0aW9u
U2lnbmF0dXJlKHR5cGVJbmRleCk7CiAgICAgICAgIC8vIEZJWE1FOiBTYXkgd2UgZXhwb3J0IGxv
Y2FsIGZ1bmN0aW9uICJmb28iIGF0IGZ1bmN0aW9uIGluZGV4IDAuCiAgICAgICAgIC8vIFdoYXQg
aWYgd2UgYWxzbyBzZXQgaXQgdG8gdGhlIHRhYmxlIGFuIEVsZW1lbnQgdy8gaW5kZXggMC4KICAg
ICAgICAgLy8gRG9lcyAobmV3IEluc3RhbmNlKC4uLikpLmV4cG9ydHMuZm9vID09PSB0YWJsZS5n
ZXQoMCk/CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRH
ZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJh
dG9yLmNwcAppbmRleCBkMzczZmFlZTgxNjgxOGZhYWUyNjRlZGUzYjkxY2E0OTU1NGE2ZDU4Li5h
NjYxNjgyODlmZGEwZDYyZjYzYWZkZGI2N2ZlNmEwNTIzMDBjMzYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKQEAgLTYyNyw2ICs2
MjcsNyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29u
c3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQogICAgICAgICBjYXNlIFR5cGVLaW5kOjpW
b2lkOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAgICAgICBjYXNlIFR5cGVLaW5k
OjpTdHJ1Y3Q6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzoKICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9OwpAQCAtNjg2LDYgKzY4
Nyw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25z
dCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZv
aWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlN0cnVjdDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVjOgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTcxNyw2ICs3MTks
NyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3Qg
RnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5j
OgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlJ0dDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVjOgogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc3Niw2ICs3NzksNyBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgRnVu
Y3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQogICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgog
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJ0
dDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVjOgogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTgyOCw2ICs4MzIsNyBAQCBh
dXRvIExMSW50R2VuZXJhdG9yOjphZGRBcmd1bWVudHMoY29uc3QgVHlwZURlZmluaXRpb24mIHNp
Z25hdHVyZSkgLT4gUGFydGlhbFJlcwogICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgogICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6
CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzQ3LDE2ICsxMzUyLDE3IEBA
IGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYKIHsKICAgICBFeHByZXNzaW9uVHlwZSBjYWxsZWVJbmRl
eCA9IGFyZ3MudGFrZUxhc3QoKTsKIAotICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25T
aWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CisgICAgY29uc3Qg
YXV0byYgZnVuY3Rpb25TaWduYXR1cmUgPSAqc2lnbmF0dXJlLmV4cGFuZCgpLmFzPEZ1bmN0aW9u
U2lnbmF0dXJlPigpOworICAgIEFTU0VSVChmdW5jdGlvblNpZ25hdHVyZS5hcmd1bWVudENvdW50
KCkgPT0gYXJncy5zaXplKCkpOwogICAgIEFTU0VSVChtX2luZm8udGFibGVDb3VudCgpID4gdGFi
bGVJbmRleCk7CiAgICAgQVNTRVJUKG1faW5mby50YWJsZXNbdGFibGVJbmRleF0udHlwZSgpID09
IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYpOwogCi0gICAgTExJbnRDYWxsSW5mb3JtYXRpb24g
aW5mbyA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcigqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2ln
bmF0dXJlPigpKTsKKyAgICBMTEludENhbGxJbmZvcm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0
aW9uRm9yQ2FsbGVyKGZ1bmN0aW9uU2lnbmF0dXJlKTsKICAgICB1bmlmeVZhbHVlc1dpdGhCbG9j
ayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CiAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkK
LSAgICAgICAgV2FzbUNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2Rl
QmxvY2stPmFkZFNpZ25hdHVyZSgqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKSwg
aW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4
KTsKKyAgICAgICAgV2FzbUNhbGxJbmRpcmVjdDo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9j
b2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZv
Lm51bWJlck9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOwogICAgIGVsc2UKLSAgICAgICAg
V2FzbUNhbGxJbmRpcmVjdE5vVGxzOjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9j
ay0+YWRkU2lnbmF0dXJlKCpzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpLCBpbmZv
LnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOwor
ICAgICAgICBXYXNtQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1f
Y29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwgaW5m
by5udW1iZXJPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsKICAgICBpbmZvLmNvbW1pdFJl
c3VsdHMocmVzdWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtMTM2NiwxMiArMTM3MiwxMyBA
QCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9uJiBz
aWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaQogewogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZSA9
IGFyZ3MudGFrZUxhc3QoKTsKIAotICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxs
SW5mb3JtYXRpb25Gb3JDYWxsZXIoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7
CisgICAgY29uc3QgYXV0byYgZnVuY3Rpb25TaWduYXR1cmUgPSAqc2lnbmF0dXJlLmV4cGFuZCgp
LmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8g
PSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoZnVuY3Rpb25TaWduYXR1cmUpOwogICAgIHVuaWZ5
VmFsdWVzV2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKICAgICBpZiAoQ29udGV4dDo6
dXNlRmFzdFRMUygpKQotICAgICAgICBXYXNtQ2FsbFJlZjo6ZW1pdCh0aGlzLCBjYWxsZWUsIG1f
Y29kZUJsb2NrLT5hZGRTaWduYXR1cmUoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4o
KSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAg
ICAgIFdhc21DYWxsUmVmOjplbWl0KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25h
dHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1
bWVudHMpOwogICAgIGVsc2UKLSAgICAgICAgV2FzbUNhbGxSZWZOb1Rsczo6ZW1pdCh0aGlzLCBj
YWxsZWUsIG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNp
Z25hdHVyZT4oKSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50
cyk7CisgICAgICAgIFdhc21DYWxsUmVmTm9UbHM6OmVtaXQodGhpcywgY2FsbGVlLCBtX2NvZGVC
bG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVt
YmVyT2ZTdGFja0FyZ3VtZW50cyk7CiAgICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOwog
CiAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MTEludFBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50
UGxhbi5jcHAKaW5kZXggOGI0MzZkMmRjZjU2ZWY2MmVkMmU0NDcyOGI0NDEzMTVmY2M5ODM3YS4u
YzExN2UzYWY0NWIyMDg1MWFmMGY5NmZkZTk3NTUzNDM3OTE3YmZjNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2
b2lkIExMSW50UGxhbjo6ZGlkQ29tcGxldGVDb21waWxhdGlvbigpCiAgICAgZm9yICh1aW50MzJf
dCBmdW5jdGlvbkluZGV4ID0gMDsgZnVuY3Rpb25JbmRleCA8IG1fbW9kdWxlSW5mb3JtYXRpb24t
PmZ1bmN0aW9ucy5zaXplKCk7IGZ1bmN0aW9uSW5kZXgrKykgewogICAgICAgICBpZiAobV9leHBv
cnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250YWlucyhmdW5jdGlvbkluZGV4KSB8fCBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVuY3Rpb25zKCkuY29udGFpbnMoZnVuY3Rpb25JbmRleCkp
IHsKICAgICAgICAgICAgIFR5cGVJbmRleCB0eXBlSW5kZXggPSBtX21vZHVsZUluZm9ybWF0aW9u
LT5pbnRlcm5hbEZ1bmN0aW9uVHlwZUluZGljZXNbZnVuY3Rpb25JbmRleF07Ci0gICAgICAgICAg
ICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQo
dHlwZUluZGV4KTsKKyAgICAgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUg
PSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFuZCgpOwogICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzIGppdDsKICAgICAgICAgICAgIC8vIFRoZSBMTEludCBhbHdheXMgYm91bmRz
IGNoZWNrcwogICAgICAgICAgICAgTWVtb3J5TW9kZSBtb2RlID0gTWVtb3J5TW9kZTo6Qm91bmRz
Q2hlY2tpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGlt
aXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKaW5kZXggNTg3
MDM0NzM0NjYzOGQ0YTJkZTUzMjBiNDUzNzQ2NDM3ZmVhZDgyNS4uYzI4NDk1N2QxM2ExYTI1N2Y2
MjkwZWYyNDY0ZTcyYTBmNWIyNWNlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxpbWl0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
aW1pdHMuaApAQCAtNDUsNiArNDUsNyBAQCBjb25zdGV4cHIgc2l6ZV90IG1heEV4Y2VwdGlvbnMg
PSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heEdsb2JhbHMgPSAxMDAwMDAwOwogY29uc3Rl
eHByIHNpemVfdCBtYXhEYXRhU2VnbWVudHMgPSAxMDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1h
eFN0cnVjdEZpZWxkQ291bnQgPSAxMDAwMDsKK2NvbnN0ZXhwciBzaXplX3QgbWF4UmVjdXJzaW9u
R3JvdXBDb3VudCA9IDEwMDAwOwogCiBjb25zdGV4cHIgc2l6ZV90IG1heFN0cmluZ1NpemUgPSAx
MDAwMDA7CiBjb25zdGV4cHIgc2l6ZV90IG1heE1vZHVsZVNpemUgPSAxMDI0ICogMTAyNCAqIDEw
MjQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFyc2VyLmgKaW5kZXggNmE2NDhmMTBi
NDE5ZDBmODBkMjZiMWIzMmIxYjRlYjc5ZWVmYWE4ZS4uNjA4MTk0Y2Y1YTUyY2RlYjRiNmUxYmMw
YzczYTIwYmZhZDY5NmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbVBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIu
aApAQCAtNjQsNiArNjQsMzAgQEAgcHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX29mZnNldDsgfQogCiBwcm90ZWN0ZWQ6CisgICAgc3RydWN0IFJlY3Vyc2lvbkdy
b3VwSW5mb3JtYXRpb24geworICAgICAgICBib29sIGluUmVjdXJzaW9uR3JvdXA7CisgICAgICAg
IHVpbnQzMl90IHN0YXJ0OworICAgICAgICB1aW50MzJfdCBlbmQ7CisgICAgfTsKKworICAgIC8v
IFJBSUkgY2xhc3MgdG8gaGVscCBzZXQgcmVjdXJzaW9uIGdyb3VwIGluZm9ybWF0aW9uLgorICAg
IGNsYXNzIFJlY3Vyc2lvbkdyb3VwR3VhcmQgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmVjdXJz
aW9uR3JvdXBHdWFyZChQYXJzZXIqIHBhcnNlciwgUmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbiBp
bmZvKQorICAgICAgICAgICAgOiBtX3BhcnNlcihwYXJzZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fcGFyc2VyLT5tX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24gPSBpbmZvOworICAgICAg
ICB9CisKKyAgICAgICAgflJlY3Vyc2lvbkdyb3VwR3VhcmQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX3BhcnNlci0+bV9yZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uID0geyB9OworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBQYXJzZXIqIG1fcGFyc2VyOworICAgIH07CisK
ICAgICBQYXJzZXIoY29uc3QgdWludDhfdCosIHNpemVfdCk7CiAKICAgICBib29sIFdBUk5fVU5V
U0VEX1JFVFVSTiBjb25zdW1lQ2hhcmFjdGVyKGNoYXIpOwpAQCAtMTEzLDYgKzEzNyw4IEBAIHBy
aXZhdGU6CiAgICAgc2l6ZV90IG1fc291cmNlTGVuZ3RoOwogICAgIC8vIFdlIGtlZXAgYSBsb2Nh
bCByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCB0YWJsZSBzbyB3ZSBkb24ndCBoYXZlIHRvIGZldGNo
IGl0IHRvIGZpbmQgdGh1bmsgdHlwZXMuCiAgICAgY29uc3QgVHlwZUluZm9ybWF0aW9uJiBtX3R5
cGVJbmZvcm1hdGlvbjsKKyAgICAvLyBVc2VkIHRvIHRyYWNrIHdoZXRoZXIgd2UgYXJlIGluIGEg
cmVjdXJzaW9uIGdyb3VwIGFuZCB0aGUgZ3JvdXAncyB0eXBlIGluZGljZXMsIGlmIGFueS4KKyAg
ICBSZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uIG1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbjsK
IH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFN1Y2Nlc3NUeXBlPgpAQCAtMTIwLDYgKzE0Niw3IEBA
IEFMV0FZU19JTkxJTkUgUGFyc2VyPFN1Y2Nlc3NUeXBlPjo6UGFyc2VyKGNvbnN0IHVpbnQ4X3Qq
IHNvdXJjZUJ1ZmZlciwgc2l6ZV90IHNvCiAgICAgOiBtX3NvdXJjZShzb3VyY2VCdWZmZXIpCiAg
ICAgLCBtX3NvdXJjZUxlbmd0aChzb3VyY2VMZW5ndGgpCiAgICAgLCBtX3R5cGVJbmZvcm1hdGlv
bihUeXBlSW5mb3JtYXRpb246OnNpbmdsZXRvbigpKQorICAgICwgbV9yZWN1cnNpb25Hcm91cElu
Zm9ybWF0aW9uKHsgfSkKIHsKIH0KIApAQCAtMzEyLDcgKzMzOSw3IEBAIEFMV0FZU19JTkxJTkUg
Ym9vbCBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZUhlYXBUeXBlKGNvbnN0IE1vZHVsZUluZm9y
bWF0aW9uJiBpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkgPj0gaW5mby50eXBlQ291bnQoKSkKKyAgICBpZiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihoZWFwVHlwZSkgPj0gaW5mby50eXBlQ291bnQoKSAmJiAoIW1fcmVj
dXJzaW9uR3JvdXBJbmZvcm1hdGlvbi5pblJlY3Vyc2lvbkdyb3VwIHx8ICEoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGhlYXBUeXBlKSA+PSBtX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24uc3RhcnQg
JiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlYXBUeXBlKSA8PSBtX3JlY3Vyc2lvbkdyb3VwSW5m
b3JtYXRpb24uZW5kKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJlc3VsdCA9IGhl
YXBUeXBlOwpAQCAtMzM5LDcgKzM2NiwxOSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUGFyc2VyPFN1
Y2Nlc3NUeXBlPjo6cGFyc2VWYWx1ZVR5cGUoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mCiAgICAg
ICAgIGludDMyX3QgaGVhcFR5cGU7CiAgICAgICAgIGlmICghcGFyc2VIZWFwVHlwZShpbmZvLCBo
ZWFwVHlwZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHR5cGVJbmRleCA9
IGhlYXBUeXBlIDwgMCA/IHN0YXRpY19jYXN0PFR5cGVJbmRleD4oaGVhcFR5cGUpIDogVHlwZUlu
Zm9ybWF0aW9uOjpnZXQoaW5mby50eXBlU2lnbmF0dXJlc1toZWFwVHlwZV0uZ2V0KCkpOworICAg
ICAgICBpZiAoaGVhcFR5cGUgPCAwKQorICAgICAgICAgICAgdHlwZUluZGV4ID0gc3RhdGljX2Nh
c3Q8VHlwZUluZGV4PihoZWFwVHlwZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8g
Rm9yIHJlY3Vyc2l2ZSByZWZlcmVuY2VzIGluc2lkZSByZWN1cnNpb24gZ3JvdXBzLCB3ZSByZS11
c2UgdGhlCisgICAgICAgICAgICAvLyBgcmVjYCB0eXBlIGNvZGUgdG8gYmUgdGhlIGludGVybmFs
IHJlcHJlc2VudGF0aW9uIG9mIGByZWMuPGk+YAorICAgICAgICAgICAgLy8gaW4gdGhlIGZvcm1h
bCBzZW1hbnRpY3MuIFRoZXNlIHNob3VsZCBub3QgbGVhayBvdXQsIGFzIHRoZXkgYXJlCisgICAg
ICAgICAgICAvLyByZXBsYWNlZCB3aXRoIHJlYWwgdHlwZSBpbmRpY2VzIGR1cmluZyB0eXBlIHVu
cm9sbGluZy9leHBhbnNpb24uCisgICAgICAgICAgICBpZiAobV9yZWN1cnNpb25Hcm91cEluZm9y
bWF0aW9uLmluUmVjdXJzaW9uR3JvdXAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGhlYXBUeXBl
KSA+PSBtX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24uc3RhcnQpIHsKKyAgICAgICAgICAgICAg
ICB0eXBlS2luZCA9IFR5cGVLaW5kOjpSZWM7CisgICAgICAgICAgICAgICAgdHlwZUluZGV4ID0g
c3RhdGljX2Nhc3Q8VHlwZUluZGV4PihoZWFwVHlwZSAtIG1fcmVjdXJzaW9uR3JvdXBJbmZvcm1h
dGlvbi5zdGFydCk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0eXBlSW5k
ZXggPSBUeXBlSW5mb3JtYXRpb246OmdldChpbmZvLnR5cGVTaWduYXR1cmVzW2hlYXBUeXBlXS5n
ZXQoKSk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
R0MoKSAmJiB0eXBlS2luZCA9PSBUeXBlS2luZDo6UnR0KSB7CiAgICAgICAgIHR5cGVLaW5kID0g
VHlwZUtpbmQ6OlJ0dDsKICAgICAgICAgaXNOdWxsYWJsZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCmluZGV4IGQyZGI1ZGJm
NmM5NjE5NzYwZWQzNDI5ZDAwOGFhYmI4YzY2MWEzMGIuLmMxYmUxM2YyZWQ1ZmE2YjlkMDFmZDFl
MzQyOGM3ZjhhNDUxZjNiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TZWN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2VjdGlvblBhcnNlci5jcHAKQEAgLTQyLDExICs0MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIFdhc20gewogYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0
aWFsUmVzdWx0CiB7CiAgICAgdWludDMyX3QgY291bnQ7CisgICAgdWludDMyX3QgdHlwZUluZGV4
Q291bnQ7CiAKICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZhclVJbnQzMihjb3VudCks
ICJjYW4ndCBnZXQgVHlwZSBzZWN0aW9uJ3MgY291bnQiKTsKICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKGNvdW50ID4gbWF4VHlwZXMsICJUeXBlIHNlY3Rpb24ncyBjb3VudCBpcyB0b28gYmlnICIs
IGNvdW50LCAiIG1heGltdW0gIiwgbWF4VHlwZXMpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IW1faW5mby0+dHlwZVNpZ25hdHVyZXMudHJ5UmVzZXJ2ZUNhcGFjaXR5KGNvdW50KSwgImNhbid0
IGFsbG9jYXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIGNvdW50LCAiIGVu
dHJpZXMiKTsKIAorICAgIHR5cGVJbmRleENvdW50ID0gY291bnQ7CisKICAgICBmb3IgKHVpbnQz
Ml90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBpbnQ4X3QgdHlwZUtpbmQ7CiAg
ICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlS2luZCksICJjYW4ndCBn
ZXQgIiwgaSwgInRoIFR5cGUncyB0eXBlIik7CkBAIC02MywxMiArNjYsMzMgQEAgYXV0byBTZWN0
aW9uUGFyc2VyOjpwYXJzZVR5cGUoKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgICAgICAgICBXQVNN
X0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlU3RydWN0VHlwZShpLCBzaWduYXR1cmUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzog
eworICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseUdDKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhaWwoaSwgInRoIHR5cGUgZmFpbGVkIHRvIHBhcnNlIGJlY2F1c2Ug
cmVjIHR5cGVzIGFyZSBub3QgZW5hYmxlZCIpOworCisgICAgICAgICAgICB1aW50MzJfdCB0eXBl
Q291bnQ7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlUmVjdXJz
aW9uR3JvdXAoaSwgc2lnbmF0dXJlLCB0eXBlQ291bnQpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFpbChpLCAi
dGggVHlwZSBpcyBub24tRnVuYyAiLCB0eXBlS2luZCk7CiAgICAgICAgIH0KIAogICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFzaWduYXR1cmUsICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVt
b3J5IGZvciBUeXBlIHNlY3Rpb24ncyAiLCBpLCAidGggc2lnbmF0dXJlIik7Ci0gICAgICAgIG1f
aW5mby0+dHlwZVNpZ25hdHVyZXMudW5jaGVja2VkQXBwZW5kKHNpZ25hdHVyZS5yZWxlYXNlTm9u
TnVsbCgpKTsKKyAgICAgICAgLy8gVW50aWwgdGhlIHJlY3Vyc2lvbiBncm91cCBpcyBwYXJzZWQs
IHdlIGRvIG5vdCBrbm93IGhvdyBtYW55IHR5cGUKKyAgICAgICAgLy8gc2lnbmF0dXJlIGVudHJp
ZXMgdGhlIGdyb3VwIHdpbGwgY29udHJpYnV0ZSB0byB0aGUgdHlwZSBpbmRleAorICAgICAgICAv
LyBzcGFjZSwgc28gd2UgbWF5IG5lZWQgdG8gcmVzaXplIHRoZSB0eXBlIHNpZ25hdHVyZXMgaGVy
ZS4KKyAgICAgICAgaWYgKHNpZ25hdHVyZS0+aXM8UmVjdXJzaW9uR3JvdXA+KCkpIHsKKyAgICAg
ICAgICAgIGNvbnN0IFJlY3Vyc2lvbkdyb3VwKiByZWN1cnNpb25Hcm91cCA9IHNpZ25hdHVyZS0+
YXM8UmVjdXJzaW9uR3JvdXA+KCk7CisgICAgICAgICAgICB0eXBlSW5kZXhDb3VudCArPSByZWN1
cnNpb25Hcm91cC0+dHlwZUNvdW50KCkgLSAxOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJ
TF9JRighbV9pbmZvLT50eXBlU2lnbmF0dXJlcy50cnlSZXNlcnZlQ2FwYWNpdHkodHlwZUluZGV4
Q291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5vdWdoIG1lbW9yeSBmb3IgVHlwZSBzZWN0aW9uJ3Mg
IiwgdHlwZUluZGV4Q291bnQsICIgdHlwZSBpbmRpY2VzIik7CisgICAgICAgICAgICBmb3IgKHVp
bnQzMl90IGkgPSAwOyBpIDwgcmVjdXJzaW9uR3JvdXAtPnR5cGVDb3VudCgpOyArK2kpIHsKKyAg
ICAgICAgICAgICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IHByb2plY3Rpb24gPSBUeXBlSW5m
b3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yUHJvamVjdGlvbihzaWduYXR1cmUtPmluZGV4KCks
IGkpOworICAgICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXByb2plY3Rpb24sICJj
YW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciByZWN1cnNpb24gZ3JvdXAncyAiLCBpLCAi
dGggcHJvamVjdGlvbiIpOworICAgICAgICAgICAgICAgIG1faW5mby0+dHlwZVNpZ25hdHVyZXMu
dW5jaGVja2VkQXBwZW5kKHByb2plY3Rpb24ucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9pbmZvLT50eXBlU2lnbmF0dXJlcy51
bmNoZWNrZWRBcHBlbmQoc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICBy
ZXR1cm4geyB9OwogfQpAQCAtNDkxLDcgKzUxNSw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFy
c2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNlIDB4MDU6IHsKICAgICAg
ICAgICAgIFR5cGUgcmVmVHlwZTsKICAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBh
cnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2UgcmVmdHlwZSBpbiBlbGVt
IHNlY3Rpb24iKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXJlZlR5cGUuaXNG
dW5jcmVmKCksICJyZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91bGQgYmUgZnVuY3JlZiIp
OworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNGdW5jcmVmKHJlZlR5cGUpICYm
IHJlZlR5cGUuaXNOdWxsYWJsZSgpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxk
IGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5kZXhDb3VudDsKICAgICAg
ICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRleENvdW50Rm9yRWxlbWVu
dFNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOwpAQCAtNTEzLDcgKzUzNyw3IEBAIGF1
dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogCiAgICAg
ICAgICAgICBUeXBlIHJlZlR5cGU7CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFw
YXJzZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxl
bSBzZWN0aW9uIik7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlz
RnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYi
KTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzRnVuY3JlZihyZWZUeXBlKSAm
JiByZWZUeXBlLmlzTnVsbGFibGUoKSwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9uIHNob3Vs
ZCBiZSBmdW5jcmVmIik7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CiAgICAg
ICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1l
bnRTZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKQEAgLTUyOSw3ICs1NTMsNyBAQCBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAg
ICAgY2FzZSAweDA3OiB7CiAgICAgICAgICAgICBUeXBlIHJlZlR5cGU7CiAgICAgICAgICAgICBX
QVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0
IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7Ci0gICAgICAgICAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rp
b24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IWlzRnVuY3JlZihyZWZUeXBlKSAmJiByZWZUeXBlLmlzTnVsbGFibGUoKSwgInJlZnR5cGUgaW4g
ZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CiAKICAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4Q291bnQ7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBh
cnNlSW5kZXhDb3VudEZvckVsZW1lbnRTZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsK
QEAgLTcyNCw2ICs3NDgsNDMgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpwYXJzZVN0cnVjdFR5cGUo
dWludDMyX3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mIHMKICAgICByZXR1cm4g
eyB9OwogfQogCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVjdXJzaW9uR3JvdXAodWludDMy
X3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mIHJlY3Vyc2lvbkdyb3VwLCB1aW50
MzJfdCYgdHlwZUNvdW50KSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5R0MoKSk7CisKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVZh
clVJbnQzMih0eXBlQ291bnQpLCAiY2FuJ3QgZ2V0ICIsIHBvc2l0aW9uLCAidGggcmVjdXJzaW9u
IGdyb3VwJ3MgdHlwZSBjb3VudCIpOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYodHlwZUNvdW50
ID4gbWF4UmVjdXJzaW9uR3JvdXBDb3VudCwgIm51bWJlciBvZiB0eXBlcyBmb3IgcmVjdXJzaW9u
IGdyb3VwIGF0IHBvc2l0aW9uICIsIHBvc2l0aW9uLCAiIGlzIHRvbyBiaWcgIiwgdHlwZUNvdW50
LCAiIG1heGltdW0gIiwgbWF4UmVjdXJzaW9uR3JvdXBDb3VudCk7CisgICAgVmVjdG9yPFR5cGVJ
bmRleD4gdHlwZXM7CisgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighdHlwZXMudHJ5UmVzZXJ2ZUNh
cGFjaXR5KHR5cGVDb3VudCksICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciByZWN1
cnNpb24gZ3JvdXAgIiwgdHlwZUNvdW50LCAiIGVudHJpZXMiKTsKKworICAgIFJlY3Vyc2lvbkdy
b3VwR3VhcmQgZ3VhcmQgPSBSZWN1cnNpb25Hcm91cEd1YXJkKHRoaXMsIFJlY3Vyc2lvbkdyb3Vw
SW5mb3JtYXRpb24geyB0cnVlLCBtX2luZm8tPnR5cGVDb3VudCgpLCBtX2luZm8tPnR5cGVDb3Vu
dCgpICsgdHlwZUNvdW50IH0pOworCisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHR5cGVD
b3VudDsgKytpKSB7CisgICAgICAgIGludDhfdCB0eXBlS2luZDsKKyAgICAgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VJbnQ3KHR5cGVLaW5kKSwgImNhbid0IGdldCByZWN1cnNpb24gZ3Jv
dXAncyAiLCBpLCAidGggVHlwZSdzIHR5cGUiKTsKKyAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0
aW9uPiBzaWduYXR1cmU7CisgICAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VHlwZUtpbmQ+KHR5
cGVLaW5kKSkgeworICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOiB7CisgICAgICAgICAgICBX
QVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25UeXBlKGksIHNpZ25hdHVyZSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUeXBlS2luZDo6
U3RydWN0OiB7CisgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlU3Ry
dWN0VHlwZShpLCBzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFpbChpLCAidGggVHlwZSBpcyBu
b24tRnVuYyAiLCB0eXBlS2luZCk7CisgICAgICAgIH0KKworICAgICAgICBXQVNNX1BBUlNFUl9G
QUlMX0lGKCFzaWduYXR1cmUsICJjYW4ndCBhbGxvY2F0ZSBlbm91Z2ggbWVtb3J5IGZvciByZWN1
cnNpb24gZ3JvdXAncyAiLCBpLCAidGggc2lnbmF0dXJlIik7CisgICAgICAgIHR5cGVzLnVuY2hl
Y2tlZEFwcGVuZChzaWduYXR1cmUtPmluZGV4KCkpOworICAgIH0KKworICAgIHJlY3Vyc2lvbkdy
b3VwID0gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvclJlY3Vyc2lvbkdyb3VwKHR5
cGVzKTsKKworICAgIHJldHVybiB7IH07Cit9CisKIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VJ
MzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9uKHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+JiBp
bml0RXhwcikgLT4gUGFydGlhbFJlc3VsdAogewogICAgIHJldHVybiBwYXJzZUkzMkluaXRFeHBy
KGluaXRFeHByLCAiRWxlbWVudCBpbml0X2V4cHIgbXVzdCBwcm9kdWNlIGFuIGkzMiJfcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAppbmRleCA5
NTZhNTAyODdjYjkyNjNkMjk4ZWY5MTZiNjNlZGRkODhiZDVjZGY0Li4wYjcyNDRjNzM4ZDhmMThj
ZmZjNTNmNTU4NjQ3ZDMzZTEwZDMxYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TZWN0aW9uUGFyc2VyLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlRnVuY3Rpb25UeXBlKHVpbnQz
Ml90IHBvc2l0aW9uLCBSZWZQdHI8VHlwZURlZmluaXRpb24+Jik7CiAgICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VTdHJ1Y3RUeXBlKHVpbnQzMl90IHBvc2l0aW9uLCBS
ZWZQdHI8VHlwZURlZmluaXRpb24+Jik7CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gcGFyc2VSZWN1cnNpb25Hcm91cCh1aW50MzJfdCBwb3NpdGlvbiwgUmVmUHRyPFR5cGVE
ZWZpbml0aW9uPiYsIHVpbnQzMl90Jik7CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiB2YWxpZGF0ZUVsZW1lbnRUYWJsZUlkeCh1aW50MzJfdCk7CiAgICAgUGFydGlhbFJl
c3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gcGFyc2VJMzJJbml0RXhwckZvckVsZW1lbnRTZWN0aW9u
KHN0ZDo6b3B0aW9uYWw8STMySW5pdEV4cHI+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21TbG93UGF0aHMuY3BwCmluZGV4IDY0MTdmODBiMzVhN2EzMjllYTNmMDRiZTkxM2Rl
MjkxZDYwZTFlYjkuLjEwZTUyZWJjNDY5ZWE4Yzk5MDNjMDMzMDY2NjQ3ZDJjOTM4MjIxNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC01MDYs
NyArNTA2LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBkb1dhc21DYWxsSW5kaXJlY3Qo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFdhc206Okluc3RhbmMKICAgICAgICAgV0FTTV9USFJPVyhX
YXNtOjpFeGNlcHRpb25UeXBlOjpOdWxsVGFibGVFbnRyeSk7CiAKICAgICBjb25zdCBhdXRvJiBj
YWxsU2lnbmF0dXJlID0gQ0FMTEVFKCktPnNpZ25hdHVyZSh0eXBlSW5kZXgpOwotICAgIGlmIChj
YWxsU2lnbmF0dXJlICE9IFdhc206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0RnVuY3Rpb25TaWduYXR1
cmUoZnVuY3Rpb24udHlwZUluZGV4KSkKKyAgICBpZiAoY2FsbFNpZ25hdHVyZS5pbmRleCgpICE9
IGZ1bmN0aW9uLnR5cGVJbmRleCkKICAgICAgICAgV0FTTV9USFJPVyhXYXNtOjpFeGNlcHRpb25U
eXBlOjpCYWRTaWduYXR1cmUpOwogCiAgICAgaWYgKHRhcmdldEluc3RhbmNlICE9IGluc3RhbmNl
KQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgZG9XYXNtQ2Fs
bFJlZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuY2UqIGNhCiAgICAgaWYgKGNh
bGxlZUluc3RhbmNlICE9IGNhbGxlckluc3RhbmNlKQogICAgICAgICBjYWxsZWVJbnN0YW5jZS0+
c2V0Q2FjaGVkU3RhY2tMaW1pdChjYWxsZXJJbnN0YW5jZS0+Y2FjaGVkU3RhY2tMaW1pdCgpKTsK
IAotICAgIEFTU0VSVChXYXNtOjpUeXBlSW5mb3JtYXRpb246OmdldEZ1bmN0aW9uU2lnbmF0dXJl
KGZ1bmN0aW9uLnR5cGVJbmRleCkgPT0gQ0FMTEVFKCktPnNpZ25hdHVyZSh0eXBlSW5kZXgpKTsK
KyAgICBBU1NFUlQoZnVuY3Rpb24udHlwZUluZGV4ID09IENBTExFRSgpLT5zaWduYXR1cmUodHlw
ZUluZGV4KS5pbmRleCgpKTsKICAgICBVTlVTRURfUEFSQU0odHlwZUluZGV4KTsKICAgICBXQVNN
X0NBTExfUkVUVVJOKGNhbGxlZUluc3RhbmNlLCBmdW5jdGlvbi5lbnRyeXBvaW50TG9hZExvY2F0
aW9uLT5leGVjdXRhYmxlQWRkcmVzcygpLCBXYXNtRW50cnlQdHJUYWcpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5jcHAKaW5kZXggYjQ0
ODkxY2MzMWY3ZDUxZjlkNWIyZDU5MTViMzAwYzMwNDMxYjRiYi4uMjQwMzIwNTJhN2Y1YjA5NzQx
Y2EwMTM4OWExZTE4YjBiNGEzNzkyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtVHlwZURlZmluaXRpb24uY3BwCkBAIC00NSw4ICs0NSwxNCBAQCB2b2lkIFR5cGVE
ZWZpbml0aW9uOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgaWYgKGlzPEZ1bmN0
aW9uU2lnbmF0dXJlPigpKQogICAgICAgICByZXR1cm4gYXM8RnVuY3Rpb25TaWduYXR1cmU+KCkt
PmR1bXAob3V0KTsKIAotICAgIEFTU0VSVChpczxTdHJ1Y3RUeXBlPigpKTsKLSAgICByZXR1cm4g
YXM8U3RydWN0VHlwZT4oKS0+ZHVtcChvdXQpOworICAgIGlmIChpczxTdHJ1Y3RUeXBlPigpKQor
ICAgICAgICByZXR1cm4gYXM8U3RydWN0VHlwZT4oKS0+ZHVtcChvdXQpOworCisgICAgaWYgKGlz
PFJlY3Vyc2lvbkdyb3VwPigpKQorICAgICAgICByZXR1cm4gYXM8UmVjdXJzaW9uR3JvdXA+KCkt
PmR1bXAob3V0KTsKKworICAgIEFTU0VSVChpczxQcm9qZWN0aW9uPigpKTsKKyAgICByZXR1cm4g
YXM8UHJvamVjdGlvbj4oKS0+ZHVtcChvdXQpOwogfQogCiBTdHJpbmcgRnVuY3Rpb25TaWduYXR1
cmU6OnRvU3RyaW5nKCkgY29uc3QKQEAgLTg5LDYgKzk1LDM2IEBAIHZvaWQgU3RydWN0VHlwZTo6
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIG91dC5wcmludCgiKSIpOwogfQogCitT
dHJpbmcgUmVjdXJzaW9uR3JvdXA6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RG
Ojp0b1N0cmluZygqdGhpcyk7Cit9CisKK3ZvaWQgUmVjdXJzaW9uR3JvdXA6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBvdXQucHJpbnQoIigiKTsKKyAgICBDb21tYVByaW50
ZXIgY29tbWE7CisgICAgZm9yIChSZWN1cnNpb25Hcm91cENvdW50IHR5cGVJbmRleCA9IDA7IHR5
cGVJbmRleCA8IHR5cGVDb3VudCgpOyArK3R5cGVJbmRleCkgeworICAgICAgICBvdXQucHJpbnQo
Y29tbWEpOworICAgICAgICBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlKHR5cGVJbmRleCkpLmR1
bXAob3V0KTsKKyAgICB9CisgICAgb3V0LnByaW50KCIpIik7Cit9CisKK1N0cmluZyBQcm9qZWN0
aW9uOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6dG9TdHJpbmcoKnRoaXMp
OworfQorCit2b2lkIFByb2plY3Rpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sK
KyAgICBvdXQucHJpbnQoIigiKTsKKyAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAgVHlwZUlu
Zm9ybWF0aW9uOjpnZXQocmVjdXJzaW9uR3JvdXAoKSkuZHVtcChvdXQpOworICAgIG91dC5wcmlu
dCgiLiIsIGluZGV4KCkpOworICAgIG91dC5wcmludCgiKSIpOworfQorCiBzdGF0aWMgdW5zaWdu
ZWQgY29tcHV0ZVNpZ25hdHVyZUhhc2goc2l6ZV90IHJldHVybkNvdW50LCBjb25zdCBUeXBlKiBy
ZXR1cm5UeXBlcywgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IFR5cGUqIGFyZ3VtZW50VHlw
ZXMpCiB7CiAgICAgdW5zaWduZWQgYWNjdW11bGF0b3IgPSAweGExYmNlZGQ4dTsKQEAgLTExNyw2
ICsxNTMsMjIgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVTdHJ1Y3RUeXBlSGFzaChzaXplX3Qg
ZmllbGRDb3VudCwgY29uc3QgU3RydWN0RmllbGQqIGZpZWwKICAgICByZXR1cm4gYWNjdW11bGF0
b3I7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBjb21wdXRlUmVjdXJzaW9uR3JvdXBIYXNoKHNpemVf
dCB0eXBlQ291bnQsIGNvbnN0IFR5cGVJbmRleCogdHlwZXMpCit7CisgICAgdW5zaWduZWQgYWNj
dW11bGF0b3IgPSAweDljZmI4OWJiOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCB0eXBl
Q291bnQ7ICsraSkKKyAgICAgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3Vt
dWxhdG9yLCBXVEY6OkludEhhc2g8VHlwZUluZGV4Pjo6aGFzaChzdGF0aWNfY2FzdDxUeXBlSW5k
ZXg+KHR5cGVzW2ldKSkpOworICAgIHJldHVybiBhY2N1bXVsYXRvcjsKK30KKworc3RhdGljIHVu
c2lnbmVkIGNvbXB1dGVQcm9qZWN0aW9uSGFzaChUeXBlSW5kZXggcmVjdXJzaW9uR3JvdXAsIFBy
b2plY3Rpb25JbmRleCBpbmRleCkKK3sKKyAgICB1bnNpZ25lZCBhY2N1bXVsYXRvciA9IDB4YmVh
ZTZkNGU7CisgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJbnRIYXNoKGFjY3VtdWxhdG9yLCBX
VEY6OkludEhhc2g8VHlwZUluZGV4Pjo6aGFzaChzdGF0aWNfY2FzdDxUeXBlSW5kZXg+KHJlY3Vy
c2lvbkdyb3VwKSkpOworICAgIGFjY3VtdWxhdG9yID0gV1RGOjpwYWlySW50SGFzaChhY2N1bXVs
YXRvciwgV1RGOjpJbnRIYXNoPHVpbnQzMl90Pjo6aGFzaChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aW5kZXgpKSk7CisgICAgcmV0dXJuIGFjY3VtdWxhdG9yOworfQorCiB1bnNpZ25lZCBUeXBlRGVm
aW5pdGlvbjo6aGFzaCgpIGNvbnN0CiB7CiAgICAgaWYgKGlzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
KSB7CkBAIC0xMjQsOSArMTc2LDE5IEBAIHVuc2lnbmVkIFR5cGVEZWZpbml0aW9uOjpoYXNoKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGNvbXB1dGVTaWduYXR1cmVIYXNoKHNpZ25hdHVyZS0+cmV0
dXJuQ291bnQoKSwgc2lnbmF0dXJlLT5zdG9yYWdlKDApLCBzaWduYXR1cmUtPmFyZ3VtZW50Q291
bnQoKSwgc2lnbmF0dXJlLT5zdG9yYWdlKHNpZ25hdHVyZS0+cmV0dXJuQ291bnQoKSkpOwogICAg
IH0KIAotICAgIEFTU0VSVChpczxTdHJ1Y3RUeXBlPigpKTsKLSAgICBjb25zdCBTdHJ1Y3RUeXBl
KiBzdHJ1Y3RUeXBlID0gYXM8U3RydWN0VHlwZT4oKTsKLSAgICByZXR1cm4gY29tcHV0ZVN0cnVj
dFR5cGVIYXNoKHN0cnVjdFR5cGUtPmZpZWxkQ291bnQoKSwgc3RydWN0VHlwZS0+c3RvcmFnZSgw
KSk7CisgICAgaWYgKGlzPFN0cnVjdFR5cGU+KCkpIHsKKyAgICAgICAgY29uc3QgU3RydWN0VHlw
ZSogc3RydWN0VHlwZSA9IGFzPFN0cnVjdFR5cGU+KCk7CisgICAgICAgIHJldHVybiBjb21wdXRl
U3RydWN0VHlwZUhhc2goc3RydWN0VHlwZS0+ZmllbGRDb3VudCgpLCBzdHJ1Y3RUeXBlLT5zdG9y
YWdlKDApKTsKKyAgICB9CisKKyAgICBpZiAoaXM8UmVjdXJzaW9uR3JvdXA+KCkpIHsKKyAgICAg
ICAgY29uc3QgUmVjdXJzaW9uR3JvdXAqIHJlY3Vyc2lvbkdyb3VwID0gYXM8UmVjdXJzaW9uR3Jv
dXA+KCk7CisgICAgICAgIHJldHVybiBjb21wdXRlUmVjdXJzaW9uR3JvdXBIYXNoKHJlY3Vyc2lv
bkdyb3VwLT50eXBlQ291bnQoKSwgcmVjdXJzaW9uR3JvdXAtPnN0b3JhZ2UoMCkpOworICAgIH0K
KworICAgIEFTU0VSVChpczxQcm9qZWN0aW9uPigpKTsKKyAgICBjb25zdCBQcm9qZWN0aW9uKiBw
cm9qZWN0aW9uID0gYXM8UHJvamVjdGlvbj4oKTsKKyAgICByZXR1cm4gY29tcHV0ZVByb2plY3Rp
b25IYXNoKHByb2plY3Rpb24tPnJlY3Vyc2lvbkdyb3VwKCksIHByb2plY3Rpb24tPmluZGV4KCkp
OwogfQogCiBSZWZQdHI8VHlwZURlZmluaXRpb24+IFR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVG
dW5jdGlvblNpZ25hdHVyZShGdW5jdGlvbkFyZ0NvdW50IHJldHVybkNvdW50LCBGdW5jdGlvbkFy
Z0NvdW50IGFyZ3VtZW50Q291bnQpCkBAIC0xMzYsNyArMTk4LDcgQEAgUmVmUHRyPFR5cGVEZWZp
bml0aW9uPiBUeXBlRGVmaW5pdGlvbjo6dHJ5Q3JlYXRlRnVuY3Rpb25TaWduYXR1cmUoRnVuY3Rp
b25BcmdDb3UKICAgICB2b2lkKiBtZW1vcnkgPSBudWxscHRyOwogICAgIGlmICghcmVzdWx0Lmdl
dFZhbHVlKG1lbW9yeSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFR5cGVEZWZpbml0
aW9uKiBzaWduYXR1cmUgPSBuZXcgKE5vdE51bGwsIG1lbW9yeSkgVHlwZURlZmluaXRpb24ocmV0
dXJuQ291bnQsIGFyZ3VtZW50Q291bnQpOworICAgIFR5cGVEZWZpbml0aW9uKiBzaWduYXR1cmUg
PSBuZXcgKE5vdE51bGwsIG1lbW9yeSkgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb25LaW5k
OjpGdW5jdGlvblNpZ25hdHVyZSwgcmV0dXJuQ291bnQsIGFyZ3VtZW50Q291bnQpOwogICAgIHJl
dHVybiBhZG9wdFJlZihzaWduYXR1cmUpOwogfQogCkBAIC0xNDcsMTAgKzIwOSw3NiBAQCBSZWZQ
dHI8VHlwZURlZmluaXRpb24+IFR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVTdHJ1Y3RUeXBlKFN0
cnVjdEZpZWxkQ291bnQgZmllbAogICAgIHZvaWQqIG1lbW9yeSA9IG51bGxwdHI7CiAgICAgaWYg
KCFyZXN1bHQuZ2V0VmFsdWUobWVtb3J5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
VHlwZURlZmluaXRpb24qIHNpZ25hdHVyZSA9IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBUeXBlRGVm
aW5pdGlvbihmaWVsZENvdW50KTsKKyAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3
IChOb3ROdWxsLCBtZW1vcnkpIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZDo6U3Ry
dWN0VHlwZSwgZmllbGRDb3VudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKHNpZ25hdHVyZSk7Cit9
CisKK1JlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVJlY3Vy
c2lvbkdyb3VwKFJlY3Vyc2lvbkdyb3VwQ291bnQgdHlwZUNvdW50KQoreworICAgIC8vIFdlIHVz
ZSBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBmb3IgdGhpcyBjbGFzcy4KKyAgICBhdXRvIHJlc3Vs
dCA9IHRyeUZhc3RNYWxsb2MoYWxsb2NhdGVkUmVjdXJzaW9uR3JvdXBTaXplKHR5cGVDb3VudCkp
OworICAgIHZvaWQqIG1lbW9yeSA9IG51bGxwdHI7CisgICAgaWYgKCFyZXN1bHQuZ2V0VmFsdWUo
bWVtb3J5KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgVHlwZURlZmluaXRpb24qIHNp
Z25hdHVyZSA9IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5p
dGlvbktpbmQ6OlJlY3Vyc2lvbkdyb3VwLCB0eXBlQ291bnQpOwogICAgIHJldHVybiBhZG9wdFJl
ZihzaWduYXR1cmUpOwogfQogCitSZWZQdHI8VHlwZURlZmluaXRpb24+IFR5cGVEZWZpbml0aW9u
Ojp0cnlDcmVhdGVQcm9qZWN0aW9uKCkKK3sKKyAgICAvLyBXZSB1c2UgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQgZm9yIHRoaXMgY2xhc3MuCisgICAgYXV0byByZXN1bHQgPSB0cnlGYXN0TWFsbG9j
KGFsbG9jYXRlZFByb2plY3Rpb25TaXplKCkpOworICAgIHZvaWQqIG1lbW9yeSA9IG51bGxwdHI7
CisgICAgaWYgKCFyZXN1bHQuZ2V0VmFsdWUobWVtb3J5KSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgVHlwZURlZmluaXRpb24qIHNpZ25hdHVyZSA9IG5ldyAoTm90TnVsbCwgbWVtb3J5
KSBUeXBlRGVmaW5pdGlvbihUeXBlRGVmaW5pdGlvbktpbmQ6OlByb2plY3Rpb24pOworICAgIHJl
dHVybiBhZG9wdFJlZihzaWduYXR1cmUpOworfQorCitUeXBlIFR5cGVEZWZpbml0aW9uOjpzdWJz
dGl0dXRlKFR5cGUgdHlwZSwgVHlwZUluZGV4IHByb2plY3RlZSkKK3sKKyAgICBpZiAodHlwZS5r
aW5kID09IFR5cGVLaW5kOjpSZWMpIHsKKyAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBw
cm9qZWN0aW9uID0gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvclByb2plY3Rpb24o
cHJvamVjdGVlLCBzdGF0aWNfY2FzdDxQcm9qZWN0aW9uSW5kZXg+KHR5cGUuaW5kZXgpKTsKKyAg
ICAgICAgVHlwZUtpbmQga2luZCA9IHR5cGUuaXNOdWxsYWJsZSgpID8gVHlwZUtpbmQ6OlJlZk51
bGwgOiBUeXBlS2luZDo6UmVmOworICAgICAgICByZXR1cm4gVHlwZSB7IGtpbmQsIHR5cGUubnVs
bGFibGUsIHByb2plY3Rpb24tPmluZGV4KCkgfTsKKyAgICB9CisKKyAgICByZXR1cm4gdHlwZTsK
K30KKworY29uc3QgVHlwZURlZmluaXRpb24mIFR5cGVEZWZpbml0aW9uOjp1bnJvbGwoVHlwZUlu
ZGV4IHByb2plY3RlZSkgY29uc3QKK3sKKyAgICBpZiAoaXM8RnVuY3Rpb25TaWduYXR1cmU+KCkp
IHsKKyAgICAgICAgY29uc3QgRnVuY3Rpb25TaWduYXR1cmUqIGZ1bmMgPSBhczxGdW5jdGlvblNp
Z25hdHVyZT4oKTsKKyAgICAgICAgVmVjdG9yPFR5cGU+IG5ld0FyZ3VtZW50czsKKyAgICAgICAg
VmVjdG9yPFR5cGUsIDE+IG5ld1JldHVybnM7CisgICAgICAgIG5ld0FyZ3VtZW50cy50cnlSZXNl
cnZlQ2FwYWNpdHkoZnVuYy0+YXJndW1lbnRDb3VudCgpKTsKKyAgICAgICAgbmV3UmV0dXJucy50
cnlSZXNlcnZlQ2FwYWNpdHkoZnVuYy0+cmV0dXJuQ291bnQoKSk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmdW5jLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICAgICAgICAg
IG5ld0FyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQoc3Vic3RpdHV0ZShmdW5jLT5hcmd1bWVudFR5
cGUoaSksIHByb2plY3RlZSkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnVu
Yy0+cmV0dXJuQ291bnQoKTsgKytpKQorICAgICAgICAgICAgbmV3UmV0dXJucy51bmNoZWNrZWRB
cHBlbmQoc3Vic3RpdHV0ZShmdW5jLT5yZXR1cm5UeXBlKGkpLCBwcm9qZWN0ZWUpKTsKKworICAg
ICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IGRlZiA9IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURl
ZmluaXRpb25Gb3JGdW5jdGlvbihuZXdSZXR1cm5zLCBuZXdBcmd1bWVudHMpOworICAgICAgICBy
ZXR1cm4gKmRlZjsKKyAgICB9CisKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2NvbnN0IFR5cGVE
ZWZpbml0aW9uJiBUeXBlRGVmaW5pdGlvbjo6ZXhwYW5kKCkgY29uc3QKK3sKKyAgICBpZiAoaXM8
UHJvamVjdGlvbj4oKSkgeworICAgICAgICBjb25zdCBQcm9qZWN0aW9uJiBwcm9qZWN0aW9uID0g
KmFzPFByb2plY3Rpb24+KCk7CisgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBwcm9qZWN0
ZWUgPSBUeXBlSW5mb3JtYXRpb246OmdldChwcm9qZWN0aW9uLnJlY3Vyc2lvbkdyb3VwKCkpOwor
ICAgICAgICBjb25zdCBSZWN1cnNpb25Hcm91cCYgcmVjdXJzaW9uR3JvdXAgPSAqcHJvamVjdGVl
LmFzPFJlY3Vyc2lvbkdyb3VwPigpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdW5k
ZXJseWluZ1R5cGUgPSBUeXBlSW5mb3JtYXRpb246OmdldChyZWN1cnNpb25Hcm91cC50eXBlKHBy
b2plY3Rpb24uaW5kZXgoKSkpOworICAgICAgICByZXR1cm4gdW5kZXJseWluZ1R5cGUudW5yb2xs
KHByb2plY3RlZS5pbmRleCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKIFR5
cGVJbmZvcm1hdGlvbjo6VHlwZUluZm9ybWF0aW9uKCkKIHsKICNkZWZpbmUgTUFLRV9USFVOS19T
SUdOQVRVUkUodHlwZSwgZW5jLCBzdHIsIHZhbCwgXykgXApAQCAtMTg2LDcgKzMxNCw3IEBAIHN0
cnVjdCBGdW5jdGlvblBhcmFtZXRlclR5cGVzIHsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKGNv
bnN0IFR5cGVIYXNoJiBzaWcsIGNvbnN0IEZ1bmN0aW9uUGFyYW1ldGVyVHlwZXMmIHBhcmFtcykK
ICAgICB7Ci0gICAgICAgIGlmIChzaWcua2V5LT5pczxTdHJ1Y3RUeXBlPigpKQorICAgICAgICBp
ZiAoIXNpZy5rZXktPmlzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBzaWduYXR1cmUgPSBz
aWcua2V5LT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKQEAgLTIzMiw3ICszNjAsNyBAQCBzdHJ1
Y3QgU3RydWN0UGFyYW1ldGVyVHlwZXMgewogCiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
VHlwZUhhc2gmIHNpZywgY29uc3QgU3RydWN0UGFyYW1ldGVyVHlwZXMmIHBhcmFtcykKICAgICB7
Ci0gICAgICAgIGlmIChzaWcua2V5LT5pczxGdW5jdGlvblNpZ25hdHVyZT4oKSkKKyAgICAgICAg
aWYgKCFzaWcua2V5LT5pczxTdHJ1Y3RUeXBlPigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgICAgIGNvbnN0IFN0cnVjdFR5cGUqIHN0cnVjdFR5cGUgPSBzaWcua2V5LT5hczxT
dHJ1Y3RUeXBlPigpOwpAQCAtMjYwLDYgKzM4OCw3OCBAQCBzdHJ1Y3QgU3RydWN0UGFyYW1ldGVy
VHlwZXMgewogICAgIH0KIH07CiAKK3N0cnVjdCBSZWN1cnNpb25Hcm91cFBhcmFtZXRlclR5cGVz
IHsKKyAgICBjb25zdCBWZWN0b3I8VHlwZUluZGV4PiYgdHlwZXM7CisKKyAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBSZWN1cnNpb25Hcm91cFBhcmFtZXRlclR5cGVzJiBwYXJhbXMpCisg
ICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZVJlY3Vyc2lvbkdyb3VwSGFzaChwYXJhbXMudHlw
ZXMuc2l6ZSgpLCBwYXJhbXMudHlwZXMuZGF0YSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBUeXBlSGFzaCYgc2lnLCBjb25zdCBSZWN1cnNpb25Hcm91cFBhcmFtZXRl
clR5cGVzJiBwYXJhbXMpCisgICAgeworICAgICAgICBpZiAoIXNpZy5rZXktPmlzPFJlY3Vyc2lv
bkdyb3VwPigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IFJl
Y3Vyc2lvbkdyb3VwKiByZWN1cnNpb25Hcm91cCA9IHNpZy5rZXktPmFzPFJlY3Vyc2lvbkdyb3Vw
PigpOworICAgICAgICBpZiAocmVjdXJzaW9uR3JvdXAtPnR5cGVDb3VudCgpICE9IHBhcmFtcy50
eXBlcy5zaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHJlY3Vyc2lvbkdyb3VwLT50eXBlQ291bnQoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAocmVjdXJzaW9uR3JvdXAtPnR5cGUoaSkgIT0gcGFyYW1zLnR5cGVzW2ld
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUeXBlSGFzaCYg
ZW50cnksIGNvbnN0IFJlY3Vyc2lvbkdyb3VwUGFyYW1ldGVyVHlwZXMmIHBhcmFtcywgdW5zaWdu
ZWQpCisgICAgeworICAgICAgICBSZWZQdHI8VHlwZURlZmluaXRpb24+IHNpZ25hdHVyZSA9IFR5
cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVSZWN1cnNpb25Hcm91cChwYXJhbXMudHlwZXMuc2l6ZSgp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2lnbmF0dXJlKTsKKworICAgICAgICBSZWN1cnNp
b25Hcm91cCogcmVjdXJzaW9uR3JvdXAgPSBzaWduYXR1cmUtPmFzPFJlY3Vyc2lvbkdyb3VwPigp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1zLnR5cGVzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgcmVjdXJzaW9uR3JvdXAtPmdldFR5cGUoaSkgPSBwYXJhbXMudHlw
ZXNbaV07CisKKyAgICAgICAgZW50cnkua2V5ID0gV1RGTW92ZShzaWduYXR1cmUpOworICAgIH0K
K307CisKK3N0cnVjdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlwZXMgeworICAgIGNvbnN0IFR5cGVJ
bmRleCByZWN1cnNpb25Hcm91cDsKKyAgICBjb25zdCBQcm9qZWN0aW9uSW5kZXggaW5kZXg7CisK
KyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlwZXMm
IHBhcmFtcykKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlUHJvamVjdGlvbkhhc2gocGFy
YW1zLnJlY3Vyc2lvbkdyb3VwLCBwYXJhbXMuaW5kZXgpOworICAgIH0KKworICAgIHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFR5cGVIYXNoJiBzaWcsIGNvbnN0IFByb2plY3Rpb25QYXJhbWV0ZXJU
eXBlcyYgcGFyYW1zKQorICAgIHsKKyAgICAgICAgaWYgKCFzaWcua2V5LT5pczxQcm9qZWN0aW9u
PigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNvbnN0IFByb2plY3Rp
b24qIHByb2plY3Rpb24gPSBzaWcua2V5LT5hczxQcm9qZWN0aW9uPigpOworICAgICAgICBpZiAo
cHJvamVjdGlvbi0+cmVjdXJzaW9uR3JvdXAoKSAhPSBwYXJhbXMucmVjdXJzaW9uR3JvdXAgfHwg
cHJvamVjdGlvbi0+aW5kZXgoKSAhPSBwYXJhbXMuaW5kZXgpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQg
dHJhbnNsYXRlKFR5cGVIYXNoJiBlbnRyeSwgY29uc3QgUHJvamVjdGlvblBhcmFtZXRlclR5cGVz
JiBwYXJhbXMsIHVuc2lnbmVkKQorICAgIHsKKyAgICAgICAgUmVmUHRyPFR5cGVEZWZpbml0aW9u
PiBzaWduYXR1cmUgPSBUeXBlRGVmaW5pdGlvbjo6dHJ5Q3JlYXRlUHJvamVjdGlvbigpOworICAg
ICAgICBSRUxFQVNFX0FTU0VSVChzaWduYXR1cmUpOworCisgICAgICAgIFByb2plY3Rpb24qIHBy
b2plY3Rpb24gPSBzaWduYXR1cmUtPmFzPFByb2plY3Rpb24+KCk7CisgICAgICAgIHByb2plY3Rp
b24tPmdldFJlY3Vyc2lvbkdyb3VwKCkgPSBwYXJhbXMucmVjdXJzaW9uR3JvdXA7CisgICAgICAg
IHByb2plY3Rpb24tPmdldEluZGV4KCkgPSBwYXJhbXMuaW5kZXg7CisKKyAgICAgICAgZW50cnku
a2V5ID0gV1RGTW92ZShzaWduYXR1cmUpOworICAgIH0KK307CisKIFJlZlB0cjxUeXBlRGVmaW5p
dGlvbj4gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvckZ1bmN0aW9uKGNvbnN0IFZl
Y3RvcjxUeXBlLCAxPiYgcmVzdWx0cywgY29uc3QgVmVjdG9yPFR5cGU+JiBhcmdzKQogewogICAg
IGlmIGNvbnN0ZXhwciAoQVNTRVJUX0VOQUJMRUQpIHsKQEAgLTI4Miw2ICs0ODIsMjQgQEAgUmVm
UHRyPFR5cGVEZWZpbml0aW9uPiBUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yU3Ry
dWN0KGNvbnN0IFZlY3RvcjxTdHIKICAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXk7
CiB9CiAKK1JlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZUluZm9ybWF0aW9uOjp0eXBlRGVmaW5p
dGlvbkZvclJlY3Vyc2lvbkdyb3VwKGNvbnN0IFZlY3RvcjxUeXBlSW5kZXg+JiB0eXBlcykKK3sK
KyAgICBUeXBlSW5mb3JtYXRpb24mIGluZm8gPSBzaW5nbGV0b24oKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgaW5mby5tX2xvY2sgfTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3R5cGVT
ZXQudGVtcGxhdGUgYWRkPFJlY3Vyc2lvbkdyb3VwUGFyYW1ldGVyVHlwZXM+KFJlY3Vyc2lvbkdy
b3VwUGFyYW1ldGVyVHlwZXMgeyB0eXBlcyB9KTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJh
dG9yLT5rZXk7Cit9CisKK1JlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZUluZm9ybWF0aW9uOjp0
eXBlRGVmaW5pdGlvbkZvclByb2plY3Rpb24oVHlwZUluZGV4IHJlY3Vyc2lvbkdyb3VwLCBQcm9q
ZWN0aW9uSW5kZXggaW5kZXgpCit7CisgICAgVHlwZUluZm9ybWF0aW9uJiBpbmZvID0gc2luZ2xl
dG9uKCk7CisgICAgTG9ja2VyIGxvY2tlciB7IGluZm8ubV9sb2NrIH07CisKKyAgICBhdXRvIGFk
ZFJlc3VsdCA9IGluZm8ubV90eXBlU2V0LnRlbXBsYXRlIGFkZDxQcm9qZWN0aW9uUGFyYW1ldGVy
VHlwZXM+KFByb2plY3Rpb25QYXJhbWV0ZXJUeXBlcyB7IHJlY3Vyc2lvbkdyb3VwLCBpbmRleCB9
KTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT5rZXk7Cit9CisKIHZvaWQgVHlwZUlu
Zm9ybWF0aW9uOjp0cnlDbGVhbnVwKCkKIHsKICAgICBUeXBlSW5mb3JtYXRpb24mIGluZm8gPSBz
aW5nbGV0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21U
eXBlRGVmaW5pdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZp
bml0aW9uLmgKaW5kZXggODY5NmFjZjBmMzY3NTlkYmQ2NWM0YmVlZmI0ZDEwZTA5MzBjZTEzOC4u
NTBiY2ZiZjdhZDIyNDg2ZWQxMTJjMTA1MjMyY2ZlYzBkOWVlNzQzYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmgKQEAgLTQ0LDYgKzQ0LDgg
QEAgbmFtZXNwYWNlIFdhc20gewogCiB1c2luZyBGdW5jdGlvbkFyZ0NvdW50ID0gdWludDMyX3Q7
CiB1c2luZyBTdHJ1Y3RGaWVsZENvdW50ID0gdWludDMyX3Q7Cit1c2luZyBSZWN1cnNpb25Hcm91
cENvdW50ID0gdWludDMyX3Q7Cit1c2luZyBQcm9qZWN0aW9uSW5kZXggPSB1aW50MzJfdDsKIAog
Y2xhc3MgRnVuY3Rpb25TaWduYXR1cmUgewogcHVibGljOgpAQCAtMTIzLDIwICsxMjUsODQgQEAg
cHJpdmF0ZToKICAgICBTdHJ1Y3RGaWVsZENvdW50IG1fZmllbGRDb3VudDsKIH07CiAKK2NsYXNz
IFJlY3Vyc2lvbkdyb3VwIHsKK3B1YmxpYzoKKyAgICBSZWN1cnNpb25Hcm91cChUeXBlSW5kZXgq
IHBheWxvYWQsIFJlY3Vyc2lvbkdyb3VwQ291bnQgdHlwZUNvdW50KQorICAgICAgICA6IG1fcGF5
bG9hZChwYXlsb2FkKQorICAgICAgICAsIG1fdHlwZUNvdW50KHR5cGVDb3VudCkKKyAgICB7Cisg
ICAgfQorCisgICAgUmVjdXJzaW9uR3JvdXBDb3VudCB0eXBlQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3R5cGVDb3VudDsgfQorICAgIFR5cGVJbmRleCB0eXBlKFJlY3Vyc2lvbkdyb3VwQ291bnQg
aSkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxSZWN1cnNpb25Hcm91cCo+KHRoaXMpLT5nZXRU
eXBlKGkpOyB9CisKKyAgICBXVEY6OlN0cmluZyB0b1N0cmluZygpIGNvbnN0OworICAgIHZvaWQg
ZHVtcChXVEY6OlByaW50U3RyZWFtJiBvdXQpIGNvbnN0OworCisgICAgVHlwZUluZGV4JiBnZXRU
eXBlKFJlY3Vyc2lvbkdyb3VwQ291bnQgaSkgeyBBU1NFUlQoaSA8IHR5cGVDb3VudCgpKTs7IHJl
dHVybiAqc3RvcmFnZShpKTsgfQorICAgIFR5cGVJbmRleCogc3RvcmFnZShSZWN1cnNpb25Hcm91
cENvdW50IGkpIHsgcmV0dXJuIGkgKyBtX3BheWxvYWQ7IH0KKyAgICBUeXBlSW5kZXgqIHN0b3Jh
Z2UoUmVjdXJzaW9uR3JvdXBDb3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlY3Vy
c2lvbkdyb3VwKj4odGhpcyktPnN0b3JhZ2UoaSk7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlSW5k
ZXgqIG1fcGF5bG9hZDsKKyAgICBSZWN1cnNpb25Hcm91cENvdW50IG1fdHlwZUNvdW50OworfTsK
KworY2xhc3MgUHJvamVjdGlvbiB7CitwdWJsaWM6CisgICAgUHJvamVjdGlvbihUeXBlSW5kZXgq
IHBheWxvYWQpCisgICAgICAgIDogbV9wYXlsb2FkKHBheWxvYWQpCisgICAgeworICAgIH0KKwor
ICAgIFR5cGVJbmRleCByZWN1cnNpb25Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8
UHJvamVjdGlvbio+KHRoaXMpLT5nZXRSZWN1cnNpb25Hcm91cCgpOyB9CisgICAgUHJvamVjdGlv
bkluZGV4IGluZGV4KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQcm9qZWN0aW9uKj4odGhp
cyktPmdldEluZGV4KCk7IH0KKworICAgIFdURjo6U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Cisg
ICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKKyAgICBUeXBlSW5k
ZXgmIGdldFJlY3Vyc2lvbkdyb3VwKCkgeyByZXR1cm4gKnN0b3JhZ2UoMCk7IH0KKyAgICBQcm9q
ZWN0aW9uSW5kZXgmIGdldEluZGV4KCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8UHJvamVj
dGlvbkluZGV4Kj4oc3RvcmFnZSgxKSk7IH0KKyAgICBUeXBlSW5kZXgqIHN0b3JhZ2UodWludDMy
X3QgaSkgeyBBU1NFUlQoaSA8PSAxKTsgcmV0dXJuIGkgKyBtX3BheWxvYWQ7IH0KKyAgICBUeXBl
SW5kZXgqIHN0b3JhZ2UodWludDMyX3QgaSkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxQcm9q
ZWN0aW9uKj4odGhpcyktPnN0b3JhZ2UoaSk7IH0KKworcHJpdmF0ZToKKyAgICBUeXBlSW5kZXgq
IG1fcGF5bG9hZDsKK307CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQcm9qZWN0aW9uSW5kZXgpIDw9
IHNpemVvZihUeXBlSW5kZXgpKTsKKworZW51bSBjbGFzcyBUeXBlRGVmaW5pdGlvbktpbmQgOiB1
aW50OF90IHsKKyAgICBGdW5jdGlvblNpZ25hdHVyZSwKKyAgICBTdHJ1Y3RUeXBlLAorICAgIFJl
Y3Vyc2lvbkdyb3VwLAorICAgIFByb2plY3Rpb24KK307CisKIGNsYXNzIFR5cGVEZWZpbml0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFR5cGVEZWZpbml0aW9uPiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKICAgICBUeXBlRGVmaW5pdGlvbigpID0gZGVsZXRlOwog
ICAgIFR5cGVEZWZpbml0aW9uKGNvbnN0IFR5cGVEZWZpbml0aW9uJikgPSBkZWxldGU7CiAKLSAg
ICBUeXBlRGVmaW5pdGlvbihGdW5jdGlvbkFyZ0NvdW50IHJldENvdW50LCBGdW5jdGlvbkFyZ0Nv
dW50IGFyZ0NvdW50KQorICAgIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZCBraW5k
LCBGdW5jdGlvbkFyZ0NvdW50IHJldENvdW50LCBGdW5jdGlvbkFyZ0NvdW50IGFyZ0NvdW50KQog
ICAgICAgICA6IG1fdHlwZUhlYWRlciB7IEZ1bmN0aW9uU2lnbmF0dXJlIHsgc3RhdGljX2Nhc3Q8
VHlwZSo+KHBheWxvYWQoKSksIGFyZ0NvdW50LCByZXRDb3VudCB9IH0KICAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gVHlwZURlZmluaXRpb25LaW5kOjpGdW5jdGlvblNpZ25h
dHVyZSk7CisgICAgfQorCisgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb25LaW5kIGtp
bmQsIHVpbnQzMl90IGZpZWxkQ291bnQpCisgICAgICAgIDogbV90eXBlSGVhZGVyIHsgU3RydWN0
VHlwZSB7IHN0YXRpY19jYXN0PFN0cnVjdEZpZWxkKj4ocGF5bG9hZCgpKSwgc3RhdGljX2Nhc3Q8
U3RydWN0RmllbGRDb3VudD4oZmllbGRDb3VudCkgfSB9CisgICAgeworICAgICAgICBpZiAoa2lu
ZCA9PSBUeXBlRGVmaW5pdGlvbktpbmQ6OlJlY3Vyc2lvbkdyb3VwKQorICAgICAgICAgICAgbV90
eXBlSGVhZGVyID0geyBSZWN1cnNpb25Hcm91cCB7IHN0YXRpY19jYXN0PFR5cGVJbmRleCo+KHBh
eWxvYWQoKSksIHN0YXRpY19jYXN0PFJlY3Vyc2lvbkdyb3VwQ291bnQ+KGZpZWxkQ291bnQpIH0g
fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBUeXBl
RGVmaW5pdGlvbktpbmQ6OlN0cnVjdFR5cGUpOwogICAgIH0KIAotICAgIFR5cGVEZWZpbml0aW9u
KFN0cnVjdEZpZWxkQ291bnQgZmllbGRDb3VudCkKLSAgICAgICAgOiBtX3R5cGVIZWFkZXIgeyBT
dHJ1Y3RUeXBlIHsgc3RhdGljX2Nhc3Q8U3RydWN0RmllbGQqPihwYXlsb2FkKCkpLCBmaWVsZENv
dW50IH0gfQorICAgIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZCBraW5kKQorICAg
ICAgICA6IG1fdHlwZUhlYWRlciB7IFByb2plY3Rpb24geyBzdGF0aWNfY2FzdDxUeXBlSW5kZXgq
PihwYXlsb2FkKCkpIH0gfQogICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBU
eXBlRGVmaW5pdGlvbktpbmQ6OlByb2plY3Rpb24pOwogICAgIH0KIAogICAgIC8vIFBheWxvYWQg
c3RhcnRzIHBhc3QgZW5kIG9mIHRoaXMgb2JqZWN0LgpAQCAtMTQ0LDYgKzIxMCw4IEBAIGNsYXNz
IFR5cGVEZWZpbml0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFR5cGVEZWZpbml0
aW9uPiB7CiAKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRlZEZ1bmN0aW9uU2l6ZShDaGVja2Vk
PEZ1bmN0aW9uQXJnQ291bnQ+IHJldENvdW50LCBDaGVja2VkPEZ1bmN0aW9uQXJnQ291bnQ+IGFy
Z0NvdW50KSB7IHJldHVybiBzaXplb2YoVHlwZURlZmluaXRpb24pICsgKHJldENvdW50ICsgYXJn
Q291bnQpICogc2l6ZW9mKFR5cGUpOyB9CiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0ZWRTdHJ1
Y3RTaXplKENoZWNrZWQ8U3RydWN0RmllbGRDb3VudD4gZmllbGRDb3VudCkgeyByZXR1cm4gc2l6
ZW9mKFR5cGVEZWZpbml0aW9uKSArIGZpZWxkQ291bnQgKiBzaXplb2YoU3RydWN0RmllbGQpOyB9
CisgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0ZWRSZWN1cnNpb25Hcm91cFNpemUoQ2hlY2tlZDxS
ZWN1cnNpb25Hcm91cENvdW50PiB0eXBlQ291bnQpIHsgcmV0dXJuIHNpemVvZihUeXBlRGVmaW5p
dGlvbikgKyB0eXBlQ291bnQgKiBzaXplb2YoVHlwZUluZGV4KTsgfQorICAgIHN0YXRpYyBzaXpl
X3QgYWxsb2NhdGVkUHJvamVjdGlvblNpemUoKSB7IHJldHVybiBzaXplb2YoVHlwZURlZmluaXRp
b24pICsgMiAqIHNpemVvZihUeXBlSW5kZXgpOyB9CiAKIHB1YmxpYzoKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KQEAgLTE2Miw2ICsyMzAsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFR5cGVEZWZpbml0aW9uJiByaHMpIGNvbnN0IHsgcmV0dXJuIHRoaXMgPT0gJnJo
czsgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAorICAgIGNvbnN0IFR5cGVEZWZpbml0
aW9uJiB1bnJvbGwoVHlwZUluZGV4KSBjb25zdDsKKyAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYg
ZXhwYW5kKCkgY29uc3Q7CisKICAgICAvLyBUeXBlIGRlZmluaXRpb25zIGFyZSB1bmlxdWVkIGFu
ZCwgZm9yIGNhbGxfaW5kaXJlY3QsIHZhbGlkYXRlZCBhdCBydW50aW1lLiBUYWJsZXMgY2FuIGNy
ZWF0ZSBpbnZhbGlkIFR5cGVJbmRleCB2YWx1ZXMgd2hpY2ggY2F1c2UgY2FsbF9pbmRpcmVjdCB0
byBmYWlsLiBXZSB1c2UgMCBhcyB0aGUgaW52YWxpZEluZGV4IHNvIHRoYXQgdGhlIGNvZGVnZW4g
Y2FuIGVhc2lseSB0ZXN0IGZvciBpdCBhbmQgdHJhcCwgYW5kIHdlIGFkZCBhIHRva2VuIGludmFs
aWQgZW50cnkgaW4gVHlwZUluZm9ybWF0aW9uLgogICAgIHN0YXRpYyBjb25zdCBjb25zdGV4cHIg
VHlwZUluZGV4IGludmFsaWRJbmRleCA9IDA7CiAKQEAgLTE2OSwxMSArMjQwLDE3IEBAIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFR5cGVJbmZvcm1hdGlvbjsKICAgICBmcmllbmQgc3RydWN0
IEZ1bmN0aW9uUGFyYW1ldGVyVHlwZXM7CiAgICAgZnJpZW5kIHN0cnVjdCBTdHJ1Y3RQYXJhbWV0
ZXJUeXBlczsKKyAgICBmcmllbmQgc3RydWN0IFJlY3Vyc2lvbkdyb3VwUGFyYW1ldGVyVHlwZXM7
CisgICAgZnJpZW5kIHN0cnVjdCBQcm9qZWN0aW9uUGFyYW1ldGVyVHlwZXM7CiAKICAgICBzdGF0
aWMgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiB0cnlDcmVhdGVGdW5jdGlvblNpZ25hdHVyZShGdW5j
dGlvbkFyZ0NvdW50IHJldHVybkNvdW50LCBGdW5jdGlvbkFyZ0NvdW50IGFyZ3VtZW50Q291bnQp
OwogICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHRyeUNyZWF0ZVN0cnVjdFR5cGUo
U3RydWN0RmllbGRDb3VudCk7CisgICAgc3RhdGljIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHJ5
Q3JlYXRlUmVjdXJzaW9uR3JvdXAoUmVjdXJzaW9uR3JvdXBDb3VudCk7CisgICAgc3RhdGljIFJl
ZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHJ5Q3JlYXRlUHJvamVjdGlvbigpOworCisgICAgc3RhdGlj
IFR5cGUgc3Vic3RpdHV0ZShUeXBlLCBUeXBlSW5kZXgpOwogCi0gICAgc3RkOjp2YXJpYW50PEZ1
bmN0aW9uU2lnbmF0dXJlLCBTdHJ1Y3RUeXBlPiBtX3R5cGVIZWFkZXI7CisgICAgc3RkOjp2YXJp
YW50PEZ1bmN0aW9uU2lnbmF0dXJlLCBTdHJ1Y3RUeXBlLCBSZWN1cnNpb25Hcm91cCwgUHJvamVj
dGlvbj4gbV90eXBlSGVhZGVyOwogICAgIC8vIFBheWxvYWQgaXMgc3RvcmVkIGhlcmUuCiB9Owog
CkBAIC0yMjMsNiArMzAwLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxUeXBlRGVm
aW5pdGlvbj4gdHlwZURlZmluaXRpb25Gb3JGdW5jdGlvbihjb25zdCBWZWN0b3I8VHlwZSwgMT4m
IHJldHVyblR5cGVzLCBjb25zdCBWZWN0b3I8VHlwZT4mIGFyZ3VtZW50VHlwZXMpOwogICAgIHN0
YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHR5cGVEZWZpbml0aW9uRm9yU3RydWN0KGNvbnN0
IFZlY3RvcjxTdHJ1Y3RGaWVsZD4mIGZpZWxkcyk7CisgICAgc3RhdGljIFJlZlB0cjxUeXBlRGVm
aW5pdGlvbj4gdHlwZURlZmluaXRpb25Gb3JSZWN1cnNpb25Hcm91cChjb25zdCBWZWN0b3I8VHlw
ZUluZGV4PiYgdHlwZXMpOworICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHR5cGVE
ZWZpbml0aW9uRm9yUHJvamVjdGlvbihUeXBlSW5kZXgsIFByb2plY3Rpb25JbmRleCk7CiAgICAg
QUxXQVlTX0lOTElORSBjb25zdCBUeXBlRGVmaW5pdGlvbiogdGh1bmtGb3IoVHlwZSB0eXBlKSBj
b25zdCB7IHJldHVybiB0aHVua1R5cGVzW2xpbmVhcml6ZVR5cGUodHlwZS5raW5kKV07IH0KIAog
ICAgIHN0YXRpYyBjb25zdCBUeXBlRGVmaW5pdGlvbiYgZ2V0KFR5cGVJbmRleCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb25JbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb25JbmxpbmVz
LmgKaW5kZXggYTM1NjM2OWQ0MDZiOGM3YjFhMmM0ODMxZjE1MDhlMDA1NjU5YmRiNy4uNDczOGQ0
ZDE4NjhiNDEzYWM1ZjhhNDUyM2M5ZjRmMjlhMjk1MGFlMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaApAQCAtNTEs
NyArNTEsMTQgQEAgaW5saW5lIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBUeXBlSW5mb3JtYXRpb246
OmdldChUeXBlSW5kZXggaW5kZXgpCiAKIGlubGluZSBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYg
VHlwZUluZm9ybWF0aW9uOjpnZXRGdW5jdGlvblNpZ25hdHVyZShUeXBlSW5kZXggaW5kZXgpCiB7
Ci0gICAgcmV0dXJuICpnZXQoaW5kZXgpLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAgIGNv
bnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBnZXQoaW5kZXgpOworICAgIGlmIChzaWdu
YXR1cmUuaXM8UHJvamVjdGlvbj4oKSkgeworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYg
ZXhwYW5kZWQgPSBzaWduYXR1cmUuZXhwYW5kKCk7CisgICAgICAgIEFTU0VSVChleHBhbmRlZC5p
czxGdW5jdGlvblNpZ25hdHVyZT4oKSk7CisgICAgICAgIHJldHVybiAqZXhwYW5kZWQuYXM8RnVu
Y3Rpb25TaWduYXR1cmU+KCk7CisgICAgfQorICAgIEFTU0VSVChzaWduYXR1cmUuaXM8RnVuY3Rp
b25TaWduYXR1cmU+KCkpOworICAgIHJldHVybiAqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0
dXJlPigpOwogfQogCiBpbmxpbmUgVHlwZUluZGV4IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNvbnN0
IFR5cGVEZWZpbml0aW9uJiB0eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2FzbVRvSlMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Fz
bVRvSlMuY3BwCmluZGV4IDgwYTFlZGYxYmFmMTE2OWIzYmM0ZjBkNzUzZWZlNTAxODQyZDU5YjMu
LjBhN2M2ZjY5NzY4MTA0Yzg3ZmFkZDgzMmU4Y2Q0ODY0MjkyY2FjMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgRXhwZWN0
ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJl
PiB3YXNtVG9KUyhWTSYgdm0KICAgICAvLyBJdCdkIGJlIHN1cGVyIGVhc3kgdG8gZG8gc286IGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MDEKICAgICBjb25zdCBh
dXRvJiB3YXNtQ0MgPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKICAgICBjb25zdCBhdXRvJiBq
c0NDID0ganNDYWxsaW5nQ29udmVudGlvbigpOwotICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0
eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCk7CisgICAgY29u
c3QgVHlwZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQo
dHlwZUluZGV4KS5leHBhbmQoKTsKICAgICBjb25zdCBhdXRvJiBzaWduYXR1cmUgPSAqdHlwZURl
ZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgdW5zaWduZWQgYXJnQ291bnQg
PSBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpOwogICAgIEpJVCBqaXQ7CkBAIC0xMDYsNiArMTA2
LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeVB0clRhZz4sIEJp
bmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlZvaWQ6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jOgogICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6U3RydWN0OgorICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVjOgogICAg
ICAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVmTnVsbDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlJlZjoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJ0dDoKQEAgLTE4Miw2ICsxODMs
NyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwgQmlu
ZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6
Vm9pZDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAgICAgICAgICAgICBjYXNl
IFR5cGVLaW5kOjpTdHJ1Y3Q6CisgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6UmVmOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UnR0OgpAQCAtMzc5LDcgKzM4MSw3
IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5k
aW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBkZWZhdWx0OiAgewotICAgICAgICAgICAgaWYgKFdhc206OmlzRnVuY3JlZihy
ZXR1cm5UeXBlKSB8fCBXYXNtOjppc0V4dGVybnJlZihyZXR1cm5UeXBlKSkKKyAgICAgICAgICAg
IGlmIChXYXNtOjppc1JlZlR5cGUocmV0dXJuVHlwZSkpCiAgICAgICAgICAgICAgICAgaml0Lm1v
dmUoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIsIHdhc21DYWxsSW5mby5yZXN1bHRzWzBdLmdwcigp
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAvLyBGb3IgdGhlIEphdmFTY3Jp
cHQgZW1iZWRkaW5nLCBpbXBvcnRzIHdpdGggdGhlc2UgdHlwZXMgaW4gdGhlaXIgdHlwZSBkZWZp
bml0aW9uIHJldHVybiBhcmUgYSBXZWJBc3NlbWJseS5Nb2R1bGUgdmFsaWRhdGlvbiBlcnJvci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcAppbmRleCBiYzljYjA2OGQ4YTM1NzRmMDZmMTEzMzU1NGNlZWVlNzJi
MDNmYjU0Li5mMzVlZTIxMzk1MmM5OWNiZjY1NzQ0M2UxYTQyZDZlYjIxMTFmNDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuY3BwCkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJl
Y29yZDo6aW5pdGlhbGl6ZUV4cG9ydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAog
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1vZHVsZUluZm9ybWF0aW9uLmlu
dGVybmFsRXhjZXB0aW9uVHlwZUluZGljZXMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIFdh
c206OlR5cGVJbmRleCB0eXBlSW5kZXggPSBtb2R1bGVJbmZvcm1hdGlvbi5pbnRlcm5hbEV4Y2Vw
dGlvblR5cGVJbmRpY2VzW2luZGV4XTsKLSAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5z
ZXRUYWcobW9kdWxlSW5mb3JtYXRpb24uaW1wb3J0RXhjZXB0aW9uQ291bnQoKSArIGluZGV4LCBX
YXNtOjpUYWc6OmNyZWF0ZShXYXNtOjpUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpKSk7
CisgICAgICAgIG1faW5zdGFuY2UtPmluc3RhbmNlKCkuc2V0VGFnKG1vZHVsZUluZm9ybWF0aW9u
LmltcG9ydEV4Y2VwdGlvbkNvdW50KCkgKyBpbmRleCwgV2FzbTo6VGFnOjpjcmVhdGUoV2FzbTo6
VHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4KS5leHBhbmQoKSkpOwogICAgIH0KIAogICAg
IHVuc2lnbmVkIGZ1bmN0aW9uSW1wb3J0Q291bnQgPSBjYWxsZWVHcm91cC0+ZnVuY3Rpb25JbXBv
cnRDb3VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5q
c29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCmluZGV4IDFmYTg2Zjkw
YWMwMGYyZTA2M2M4ZmNjNDI3NTNjMzkwZmQ0MWE1ZmIuLjExMGFhODExNWZkYzY1MjliMjI3MmMx
NzM3ZWNmODRjNjg3YjAyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L3dhc20uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAg
LTE4LDYgKzE4LDcgQEAKICAgICAgICAgImZ1bmMiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtMzIsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJzdHJ1Y3Qi
OiAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTMzLCAiYjN0eXBlIjogIkIzOjpW
b2lkIiB9LAogICAgICAgICAicnR0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVl
IjogIC0yNCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAgInJlYyI6ICAgICAgIHsg
InR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtNDksICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0s
CiAgICAgICAgICJ2b2lkIjogICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0
LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9CiAgICAgfSwKICAgICAidmFsdWVfdHlwZSI6IFsiaTMy
IiwgImk2NCIsICJmMzIiLCAiZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkwYTAwZGE4
YmI2YzEzZGFkMTMzYmI1OWI4ZjAwZjdkNDkyZGU4NzcuLjk3YzFiNjZjNDE4Nzc5ZDFmNzJlNDRi
ZWJkYjIwOTg4YTRhODQyMDIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDQtMjggIEFzdW11IFRha2lr
YXdhICA8YXN1bXVAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2FzbS1HQ10gQWRkIHN1cHBvcnQg
Zm9yIFdlYkFzc2VtYmx5IEdDIHJlY3Vyc2lvbiBncm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBXYXNtIEdDIHJlY3Vy
c2lvbiBncm91cHMuCisKKyAgICAgICAgKiB3YXNtL2djL3JlYy5qczogQWRkZWQuCisgICAgICAg
IChtb2R1bGUpOgorICAgICAgICAodGVzdFJlY0RlY2xhcmF0aW9uKToKKyAgICAgICAgKiB3YXNt
L3dhc20uanNvbjoKKwogMjAyMi0wNC0yNyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vs
b3NAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnNraXAgZmxha3kgdGVzdCBvbiBtaXBzCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3dhc20vZ2MvcmVjLmpzIGIvSlNUZXN0cy93YXNtL2djL3JlYy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNjM2ZjMzM2JjYjE2NzFlZThmYzBmZWE5MmRhM2EyNmZjZWViMmVkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2djL3JlYy5qcwpAQCAtMCwwICsxLDIxMyBAQAor
Ly9AIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVm
ZXJlbmNlcz10cnVlIiwgIi0tdXNlV2ViQXNzZW1ibHlHQz10cnVlIikKKworaW1wb3J0ICogYXMg
YXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyI7CitpbXBvcnQgeyBpbnN0YW50aWF0ZSB9IGZyb20g
Ii4uL3dhYnQtd3JhcHBlci5qcyI7CisKK2Z1bmN0aW9uIG1vZHVsZShieXRlcywgdmFsaWQgPSB0
cnVlKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKKyAg
bGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0gMDsgaSA8
IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7
CisgIH0KKyAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKK30KKworZnVu
Y3Rpb24gdGVzdFJlY0RlY2xhcmF0aW9uKCkgeworICAvKgorICAgKiAobW9kdWxlCisgICAqICAg
KHJlYyAodHlwZSAoZnVuYykpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogKQorICAgKi8KKyAgbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDBceDVm
XHgwMCIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAodHlwZSAoZnVuYykp
ICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAoZnVuYyAodHlwZSAwKSkKKyAgICogKQorICAgKi8K
KyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4
MDBceDVmXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4ODhceDgwXHg4
MFx4ODBceDAwXHgwMVx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKSk7CisKKyAgLyoKKyAg
ICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKHN0cnVjdCkpICh0eXBlIChmdW5jKSkpCisg
ICAqICAgKGZ1bmMgKHR5cGUgMCkpCisgICAqICkKKyAgICovCisgIGFzc2VydC50aHJvd3MoCisg
ICAgKCkgPT4gbW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4
XHg4MFx4ODBceDgwXHgwMFx4MDFceDRmXHgwMlx4NWZceDAwXHg2MFx4MDBceDAwXHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwK
KyAgICAidHlwZSBzaWduYXR1cmUgd2FzIG5vdCBhIGZ1bmN0aW9uIHNpZ25hdHVyZSIKKyAgKQor
CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0
cnVjdCkpKQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0KSkpCisgICAq
ICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAodHlw
ZSAwKSkKKyAgICogICAoZnVuYyAocmVzdWx0IChyZWYgMikpIChyZWYuZnVuYyAwKSkKKyAgICog
KQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAzXHg0Zlx4MDJc
eDYwXHgwMFx4MDBceDVmXHgwMFx4NGZceDAyXHg2MFx4MDBceDAwXHg1Zlx4MDBceDYwXHgwMFx4
MDFceDZiXHgwMlx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwNFx4MDlceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDFceDA3XHg3MFx4MDFceGQyXHgwMFx4MGJceDBhXHg5MVx4ODBceDgw
XHg4MFx4MDBceDAyXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMFx4ZDJceDAwXHgwYiIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHJl
YyAodHlwZSAoZnVuYykpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAoZnVuYyAoZXhwb3J0ICJm
IikgKHR5cGUgMCkpCisgICAqICkKKyAgICoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5
cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKGZ1bmMgKGltcG9ydCAibSIgImYi
KSAodHlwZSAwKSkKKyAgICogICAoc3RhcnQgMCkKKyAgICogKQorICAgKi8KKyAgeworICAgIGxl
dCBtMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAyXHg2MFx4
MDBceDAwXHg1Zlx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg1XHg4
MFx4ODBceDgwXHgwMFx4MDFceDAxXHg2Nlx4MDBceDAwXHgwYVx4ODhceDgwXHg4MFx4ODBceDAw
XHgwMVx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKSk7CisgICAgbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4MDJceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHg2ZFx4MDFceDY2XHgwMFx4MDBceDA4XHg4MVx4ODBc
eDgwXHg4MFx4MDBceDAwIiksIHsgbTogeyBmOiBtMS5leHBvcnRzLmYgfSB9KTsKKyAgfQorCisg
IC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVj
dCkpKQorICAgKiAgIChmdW5jIChleHBvcnQgImYiKSAodHlwZSAwKSkKKyAgICogKQorICAgKgor
ICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAodHlwZSAoc3RydWN0KSkgKHR5cGUgKGZ1bmMpKSkK
KyAgICogICAoZnVuYyAoaW1wb3J0ICJtIiAiZiIpICh0eXBlIDEpKQorICAgKiAgIChzdGFydCAw
KQorICAgKiApCisgICAqLworICB7CisgICAgbGV0IG0xID0gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBc
eDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODVceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDY2XHgw
MFx4MDBceDBhXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAw
XHgwYiIpKTsKKyAgICBhc3NlcnQudGhyb3dzKAorICAgICAgKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDVmXHgwMFx4NjBceDAwXHgwMFx4MDJceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHg2ZFx4MDFceDY2XHgwMFx4MDFceDA4XHg4MVx4ODBc
eDgwXHg4MFx4MDBceDAwIiksIHsgbTogeyBmOiBtMS5leHBvcnRzLmYgfSB9KSwKKyAgICAgIFdl
YkFzc2VtYmx5LkxpbmtFcnJvciwKKyAgICAgICJpbXBvcnRlZCBmdW5jdGlvbiBtOmYgc2lnbmF0
dXJlIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIFdlYkFzc2VtYmx5IGZ1bmN0aW9uJ3Mgc2ln
bmF0dXJlIgorICAgICk7CisgIH0KKworICAvKgorICAgKiAobW9kdWxlICRtCisgICAqICAgKHJl
YyAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMCkpKSkgKHR5cGUgKHN0cnVjdCkpKQorICAgKiAg
IChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgMCkpCisgICAqICAgKGZ1bmMgKGV4cG9y
dCAiZiIpICh0eXBlIDApIChyZWYuZnVuYyAwKSkKKyAgICogKQorICAgKgorICAgKiAobW9kdWxl
CisgICAqICAgKHJlYyAodHlwZSAoc3RydWN0KSkgKHR5cGUgKGZ1bmMgKHJlc3VsdCAocmVmIDEp
KSkpKQorICAgKiAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVmLmZ1bmMgMCkpCisgICAqICAg
KGZ1bmMgKGltcG9ydCAibSIgImYiKSAodHlwZSAxKSkKKyAgICogKQorICAgKi8KKyAgeworICAg
IGxldCBtMSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4OGFceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAyXHg2
MFx4MDBceDAxXHg2Ylx4MDBceDVmXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODVceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDY2XHgwMFx4MDBceDA5XHg4N1x4ODBc
eDgwXHg4MFx4MDBceDAxXHgwN1x4NzBceDAxXHhkMlx4MDBceDBiXHgwYVx4OGFceDgwXHg4MFx4
ODBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4ZDJceDAwXHgwYiIpKTsKKyAgICBh
c3NlcnQudGhyb3dzKAorICAgICAgKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4YVx4ODBceDgwXHg4MFx4
MDBceDAxXHg0Zlx4MDJceDVmXHgwMFx4NjBceDAwXHgwMVx4NmJceDAxXHgwMlx4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDFceDZkXHgwMVx4NjZceDAwXHgwMVx4MDlceDg3XHg4MFx4ODBceDgw
XHgwMFx4MDFceDA3XHg3MFx4MDFceGQyXHgwMFx4MGIiKSwgeyBtOiB7IGY6IG0xLmV4cG9ydHMu
ZiB9IH0pLAorICAgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAgICAgImltcG9ydGVkIGZ1
bmN0aW9uIG06ZiBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgV2ViQXNzZW1i
bHkgZnVuY3Rpb24ncyBzaWduYXR1cmUiCisgICAgKTsKKyAgfQorCisgIC8qCisgICAqIChtb2R1
bGUKKyAgICogICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVjdCkpKQorICAgKiAgIChy
ZWMgKHR5cGUgKHN0cnVjdCkpICh0eXBlIChmdW5jKSkpCisgICAqICAgKGdsb2JhbCAocmVmIDAp
IChyZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAodHlwZSAzKSkKKyAgICogKQorICAgKi8KKyAg
YXNzZXJ0LnRocm93cygKKyAgICAoKSA9PiBtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4OGZceDgwXHg4MFx4ODBceDAwXHgwMlx4NGZceDAyXHg2MFx4MDBceDAw
XHg1Zlx4MDBceDRmXHgwMlx4NWZceDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDNceDA2XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHg2Ylx4MDBceDAwXHhkMlx4
MDBceDBiXHgwYVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMVx4ODJceDgwXHg4MFx4ODBceDAwXHgw
MFx4MGIiKSwKKyAgICBXZWJBc3NlbWJseS5Db21waWxlRXJyb3IsCisgICAgIkdsb2JhbCBpbml0
X2V4cHIgb3Bjb2RlIG9mIHR5cGUgUmVmIGRvZXNuJ3QgbWF0Y2ggZ2xvYmFsJ3MgdHlwZSBSZWYi
CisgICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMgKHJl
c3VsdCAocmVmIDEpKSkpCisgICAqICAgICAgICAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMCkp
KSkpCisgICAqICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAo
ZWxlbSBkZWNsYXJlIGZ1bmNyZWYgKHJlZi5mdW5jIDEpKQorICAgKiAgIChmdW5jICh0eXBlIDAp
IChyZWYuZnVuYyAxKSkKKyAgICogICAoZnVuYyAodHlwZSAxKSAocmVmLmZ1bmMgMCkpCisgICAq
ICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAy
XHg2MFx4MDBceDAxXHg2Ylx4MDFceDYwXHgwMFx4MDFceDZiXHgwMFx4MDNceDgzXHg4MFx4ODBc
eDgwXHgwMFx4MDJceDAwXHgwMVx4MDlceDhkXHg4MFx4ODBceDgwXHgwMFx4MDJceDA3XHg3MFx4
MDFceGQyXHgwMFx4MGJceDA3XHg3MFx4MDFceGQyXHgwMVx4MGJceDBhXHg5M1x4ODBceDgwXHg4
MFx4MDBceDAyXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHhkMlx4MDFceDBiXHg4NFx4ODBceDgw
XHg4MFx4MDBceDAwXHhkMlx4MDBceDBiIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICog
ICAocmVjICh0eXBlIChmdW5jIChyZXN1bHQgKHJlZiAxKSkpKQorICAgKiAgICAgICAgKHR5cGUg
KGZ1bmMgKHJlc3VsdCAocmVmIDApKSkpKQorICAgKiAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAo
cmVmLmZ1bmMgMCkpCisgICAqICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAxKSkK
KyAgICogICAoZnVuYyAodHlwZSAwKSAocmVmLmZ1bmMgMSkpCisgICAqICAgKGZ1bmMgKHR5cGUg
MSkgKHJlZi5mdW5jIDEpKQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgp
ID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAyXHg2MFx4MDBc
eDAxXHg2Ylx4MDFceDYwXHgwMFx4MDFceDZiXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4
MDJceDAwXHgwMVx4MDlceDhkXHg4MFx4ODBceDgwXHgwMFx4MDJceDA3XHg3MFx4MDFceGQyXHgw
MFx4MGJceDA3XHg3MFx4MDFceGQyXHgwMVx4MGJceDBhXHg5M1x4ODBceDgwXHg4MFx4MDBceDAy
XHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHhkMlx4MDFceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBc
eDAwXHhkMlx4MDFceDBiIikpLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvciwKKyAgICAi
Y29udHJvbCBmbG93IHJldHVybnMgd2l0aCB1bmV4cGVjdGVkIHR5cGUuIFJlZiBpcyBub3QgYSBS
ZWYsIGluIGZ1bmN0aW9uIGF0IGluZGV4IDEiCisgICk7CisKKyAgLyoKKyAgICogKG1vZHVsZQor
ICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMgKHBhcmFtIGkzMikpKSAodHlwZSAoc3RydWN0KSkpCisg
ICAqICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAo
dHlwZSAwKSkKKyAgICogICAoZnVuYyAoY2FsbF9yZWYgKGkzMi5jb25zdCA0MikgKHJlZi5mdW5j
IDApKSkKKyAgICogICAoc3RhcnQgMSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
Y1x4ODBceDgwXHg4MFx4MDBceDAyXHg0Zlx4MDJceDYwXHgwMVx4N2ZceDAwXHg1Zlx4MDBceDYw
XHgwMFx4MDBceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDJceDA4XHg4MVx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwOVx4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDdceDcwXHgwMVx4
ZDJceDAwXHgwYlx4MGFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDJceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDBceDBiXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MmFceGQyXHgwMFx4MTRceDBi
IikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChmdW5jIChyZXN1
bHQgaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAocmVjICh0eXBlIChzdHJ1Y3QpKSAo
dHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSkKKyAgICogICAoZnVuYyAodHlwZSAwKQorICAgKiAg
ICAgKGJsb2NrICh0eXBlIDMpCisgICAqICAgICAgIChpMzIuY29uc3QgNDIpKSkKKyAgICogKQor
ICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg5MVx4ODBceDgwXHg4MFx4MDBceDAyXHg0Zlx4MDJceDYw
XHgwMFx4MDFceDdmXHg1Zlx4MDBceDRmXHgwMlx4NWZceDAwXHg2MFx4MDBceDAxXHg3Zlx4MDNc
eDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4
ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDAzXHg0MVx4MmFceDBiXHgwYiIpKTsKKworICAv
KgorICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAodHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSAo
dHlwZSAoc3RydWN0KSkpCisgICAqICAgKHJlYyAodHlwZSAoc3RydWN0KSkgKHR5cGUgKGZ1bmMg
KHJlc3VsdCBpMzIpKSkpCisgICAqICAgKGZ1bmMgKHR5cGUgMCkKKyAgICogICAgIChsb29wICh0
eXBlIDMpCisgICAqICAgICAgIChpMzIuY29uc3QgNDIpKSkKKyAgICogKQorICAgKi8KKyAgbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHg5MVx4ODBceDgwXHg4MFx4MDBceDAyXHg0Zlx4MDJceDYwXHgwMFx4MDFceDdm
XHg1Zlx4MDBceDRmXHgwMlx4NWZceDAwXHg2MFx4MDBceDAxXHg3Zlx4MDNceDgyXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAwXHgwYVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4ODdceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDNceDAzXHg0MVx4MmFceDBiXHgwYiIpKTsKKworICAvKgorICAgKiAobW9k
dWxlCisgICAqICAgKHJlYyAodHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSAodHlwZSAoc3RydWN0
KSkpCisgICAqICAgKHJlYyAodHlwZSAoc3RydWN0KSkgKHR5cGUgKGZ1bmMgKHJlc3VsdCBpMzIp
KSkpCisgICAqICAgKGZ1bmMgKHR5cGUgMCkKKyAgICogICAgIChpMzIuY29uc3QgMSkKKyAgICog
ICAgIChpZiAodHlwZSAzKSAodGhlbiAoaTMyLmNvbnN0IDQyKSkgKGVsc2UgKGkzMi5jb25zdCA0
MykpKSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg5MVx4ODBceDgwXHg4MFx4MDBc
eDAyXHg0Zlx4MDJceDYwXHgwMFx4MDFceDdmXHg1Zlx4MDBceDRmXHgwMlx4NWZceDAwXHg2MFx4
MDBceDAxXHg3Zlx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4OTJceDgwXHg4
MFx4ODBceDAwXHgwMVx4OGNceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgwNFx4MDNceDQx
XHgyYVx4MDVceDQxXHgyYlx4MGJceDBiIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICog
ICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0cnVjdCkpKQorICAgKiAgICh0YWJsZSA1IGZ1
bmNyZWYpCisgICAqICAgKGVsZW0gZnVuY3JlZiAocmVmLmZ1bmMgMCkpCisgICAqICAgKGZ1bmMg
KHR5cGUgMCkpCisgICAqICAgKGZ1bmMgKGNhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25z
dCAwKSkpCisgICAqICAgKHN0YXJ0IDEpCisgICAqICkKKyAgICovCisgIG5ldyBXZWJBc3NlbWJs
eS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
ODhceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAyXHg2MFx4MDBceDAwXHg1Zlx4MDBceDAzXHg4
M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAx
XHg3MFx4MDBceDA1XHgwOFx4ODFceDgwXHg4MFx4ODBceDAwXHgwMVx4MDlceDhiXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDA2XHgwMFx4NDFceDAwXHgwYlx4NzBceDAxXHhkMlx4MDBceDBiXHgwYVx4
OTRceDgwXHg4MFx4ODBceDAwXHgwMlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGJceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMFx4MTFceDAwXHgwMFx4MGIiKSk7Cit9CisKK3Rlc3RS
ZWNEZWNsYXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3dhc20uanNvbiBiL0pT
VGVzdHMvd2FzbS93YXNtLmpzb24KaW5kZXggNmEzNjgxZGI5OTMxZDcyYjYyNjQxZTc5ZTIxNTU5
OGUwOGI2Mzk0Yy4uNDM3NDkwYjVmZGE3OGU1ZmRmZjM2MDVkNjc3ZDA1OTFkNTVmOTIwYiAxMDA2
NDQKLS0tIGEvSlNUZXN0cy93YXNtL3dhc20uanNvbgorKysgYi9KU1Rlc3RzL3dhc20vd2FzbS5q
c29uCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICJmdW5jIjogICAgICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgLTMyLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAi
c3RydWN0IjogICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMywgImIzdHlwZSI6
ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInJ0dCI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtMjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCisgICAgICAgICJyZWMiOiAg
ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTQ5LCAiYjN0eXBlIjogIkIzOjpW
b2lkIiB9LAogICAgICAgICAidm9pZCI6ICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVl
IjogIC02NCwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfQogICAgIH0sCiAgICAgInZhbHVlX3R5cGUi
OiBbImkzMiIsICJpNjQiLCAiZjMyIiwgImY2NCIsICJleHRlcm5yZWYiLCAiZnVuY3JlZiJdLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458895</attachid>
            <date>2022-05-05 11:03:49 -0700</date>
            <delta_ts>2022-05-08 23:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239666-20220505110348.patch</filename>
            <type>text/plain</type>
            <size>83935</size>
            <attacher name="Asumu Takikawa">asumu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZGMyZmM4NjgxYzMzNzU4MTU1NWM2ZGZiMjQ0NTkwMzM5NmQxMWFhLi4yNWQ5ZTA0NTgxYmMzNmY3
ZTRjYTBmYzFiNDljNGY0MjRiZTI5ZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDYgQEAKKzIwMjItMDUtMDQgIEFzdW11IFRha2lrYXdhICA8YXN1bXVAaWdhbGlhLmNv
bT4KKworICAgICAgICBbV2FzbS1HQ10gQWRkIHN1cHBvcnQgZm9yIFdlYkFzc2VtYmx5IEdDIHJl
Y3Vyc2lvbiBncm91cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzOTY2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgV2FzbSBHQyBwcm9wb3NhbCdzIHJlY3Vyc2lvbiBn
cm91cHMuIFRoZXNlIGFyZQorICAgICAgICBhIG5ldyBraW5kIG9mIFR5cGVEZWZpbml0aW9uIHRo
YXQgYWxsb3dzIGZvciByZWN1cnNpdmUgdHlwZQorICAgICAgICBkZWZpbml0aW9ucy4gUmVjdXJz
aXZlIHR5cGUgaW5kZXggcmVmZXJlbmNlcyBhcmUgb25seSBhbGxvd2VkIHdpdGgKKyAgICAgICAg
cmVjdXJzaW9uIGdyb3VwIGRlZmluaXRpb25zLgorCisgICAgICAgIFJlY3Vyc2lvbiBncm91cHMg
Y2FuIGJlIHN0b3JlZCBoYXNoLWNvbnNlZCBsaWtlIG90aGVyIHR5cGUKKyAgICAgICAgZGVmaW5p
dGlvbnMsIGJ1dCB0byBzdWNjZXNzZnVsbHkgY29tcGFyZSB0aGVtIHRoZXkgbXVzdCBzdG9yZSBz
ZXZlcmFsCisgICAgICAgIGRlZmluaXRpb25zIGluIHRoZSB0eXBlIHN0b3JlOgorCisgICAgICAg
ICAgLSBUaGUgcmVjdXJzaW9uIGdyb3VwIGl0c2VsZiAocmVjICh0eXBlIC4uLikgLi4uKQorICAg
ICAgICAgIC0gRWFjaCB0eXBlIGNvbXBvbmVudCBpbiB0aGUgZ3JvdXAgKHR5cGUgLi4uKSwgd2hl
cmUgYW55IHBvdGVudGlhbAorICAgICAgICAgICAgcmVjdXJzaXZlIHJlZmVyZW5jZXMgYXJlIHJl
cHJlc2VudGVkIGFzIGEgc3BlY2lhbCB2YWx1ZSB0eXBlLgorICAgICAgICAgIC0gUHJvamVjdGlv
bnMgaW50byB0aGUgcmVjdXJzaW9uIGdyb3VwICgocmVjIC4uLikuPGk+KQorCisgICAgICAgIFBy
b2plY3Rpb25zIGNhbiBiZSBleHBhbmRlZCBpbnRvIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uL3N0
cnVjdC9ldGMKKyAgICAgICAgdHlwZSB3aGVuIHRoZSB2YWxpZGF0b3IgbmVlZHMgdG8gZXhhbWlu
ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSB0eXBlLgorICAgICAgICBUaGlzIG9wZXJhdGlvbiBleHBv
c2VzIHRoZSB0eXBlIGNvbXBvbmVudCBpbiB0aGUgZ3JvdXAsIGFuZCByZXBsYWNlcworICAgICAg
ICByZWN1cnNpdmUgcmVmZXJlbmNlcyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBwcm9qZWN0aW9uICh3
aGljaCBjYW4gdGhlbgorICAgICAgICBiZSBleHBhbmRlZCBpZiByZXF1aXJlZCwgYW5kIHNvIG9u
KS4KKworICAgICAgICBJZiBleHBhbnNpb24gYmVjb21lcyBhIGJvdHRsZW5lY2ssIGl0IGlzIGVh
c3kgdG8gbWVtb2l6ZSBpdCB3aXRoIHRoZQorICAgICAgICBhZGRpdGlvbiBvZiBhIFR5cGVJbmRl
eCB0byBUeXBlSW5kZXggbWFwcGluZyBpbiB0aGUgdHlwZSBzdG9yZS4KKworICAgICAgICBHZW5l
cmFsbHksIHRoZSBleHBhbnNpb24gb3BlcmF0aW9uIGlzIG5lZWRlZCB3aGVuIGNvZGUgcmVsaWVz
IG9uIHRoZQorICAgICAgICBzdHJ1Y3R1cmUgb2YgdGhlIHVuZGVybHlpbmcgdHlwZS4gRm9yIGZ1
bmN0aW9ucywgdGhlc2UgdXNlcyB1c3VhbGx5CisgICAgICAgIGxvb2sgbGlrZSBgc2lnbmF0dXJl
LmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpYC4gVGhlIHNpZ25hdHVyZSAqbXVzdCogYmUKKyAgICAg
ICAgZXhwYW5kZWQgYmVmb3JlIHN1Y2ggYSBjb252ZXJzaW9uIGlzIGNhbGxlZC4KKworICAgICAg
ICBXaGVuIHNpZ25hdHVyZXMgbmVlZCB0byBiZSBjb21wYXJlZCBmb3IgZXF1YWxpdHksIHN1Y2gg
YXMgZm9yCisgICAgICAgIGNhbGxfaW5kaXJlY3Qgb3IgZm9yIG1hdGNoaW5nIGZ1bmN0aW9uIGlt
cG9ydC9leHBvcnQsIHRoZSBjb21wYXJpc29uCisgICAgICAgIHNob3VsZCBnZW5lcmFsbHkgYmUg
ZG9uZSBieSB0aGUgdHlwZSBpbmRleCBvZiB0aGUgcHJvamVjdGlvbi4gVGhhdCBpcywKKyAgICAg
ICAgKm5vdCogYnkgZXF1YWxpdHkgb2YgdGhlIHVuZGVybHlpbmcvZXhwYW5kZWQgdHlwZS4KKwor
ICAgICAgICBSZWN1cnNpdmUgcmVmZXJlbmNlcyBhcmUgbm90IHJlcHJlc2VudGVkIGluIHRoZSBi
aW5hcnkgZm9ybWF0IGFuZCBhcmUKKyAgICAgICAgaW50ZXJuYWwgdG8gdGhlIHNlbWFudGljcyBh
bmQgaW1wbGVtZW50YXRpb24uIFRvIGF2b2lkIHVzaW5nIGV4dHJhCisgICAgICAgIG9wY29kZXMs
IHRoZXkgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQgYXMgYSB0eXBlIHRoYXQgdXNlcyB0aGUK
KyAgICAgICAgb3Bjb2RlIGZvciByZWN1cnNpb24gZ3JvdXAgKFR5cGVLaW5kOjpSZWMpLCB3aGlj
aCBjYW5ub3Qgbm9ybWFsbHkgYmUKKyAgICAgICAgdXNlZCBmb3IgdmFsdWUgdHlwZXMgaW4gdGhl
IGJpbmFyeSBmb3JtYXQsIHdpdGggYSBoZWFwIHR5cGUgdGhhdAorICAgICAgICBlbmNvZGVzIHRo
ZSBpbmRleCBpbnRvIHRoZSByZWN1cnNpb24gZ3JvdXAncyB0eXBlIGxpc3QuCisKKyAgICAgICAg
KiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkFpcklS
R2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpXYXNt
OjpCQlFQbGFuOjp3b3JrKToKKyAgICAgICAgKEpTQzo6V2FzbTo6QkJRUGxhbjo6Y29tcGlsZUZ1
bmN0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21DYWxsZWUuaDoKKyAgICAgICAgKiB3YXNtL1dh
c21Gb3JtYXQuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6aXNWYWx1ZVR5cGUpOgorICAgICAgICAq
IHdhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I6OmFkZFNpZ25hdHVyZSk6CisgICAgICAg
ICogd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaDoKKyAgICAgICAgKiB3YXNt
L1dhc21GdW5jdGlvblBhcnNlci5oOgorICAgICAgICAoSlNDOjpXYXNtOjpzcGxpdFN0YWNrKToK
KyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OkZ1bmN0aW9uUGFy
c2VyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNl
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6RnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlRXhw
cmVzc2lvbik6CisgICAgICAgIChKU0M6Oldhc206OkZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+Ojpw
YXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbik6CisgICAgICAgICogd2FzbS9XYXNtSW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpJbnN0YW5jZTo6aW5pdEVsZW1lbnRTZWdtZW50KToK
KyAgICAgICAgKiB3YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldh
c206OkxMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIpOgorICAgICAgICAo
SlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyk6CisgICAgICAg
IChKU0M6Oldhc206OkxMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QpOgorICAgICAgICAo
SlNDOjpXYXNtOjpMTEludEdlbmVyYXRvcjo6YWRkQ2FsbFJlZik6CisgICAgICAgICogd2FzbS9X
YXNtTExJbnRQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TExJbnRQbGFuOjpkaWRDb21w
bGV0ZUNvbXBpbGF0aW9uKToKKyAgICAgICAgKiB3YXNtL1dhc21MaW1pdHMuaDoKKyAgICAgICAg
KiB3YXNtL1dhc21QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGFyc2VyOjpSZWN1cnNp
b25Hcm91cEd1YXJkOjpSZWN1cnNpb25Hcm91cEd1YXJkKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
UGFyc2VyOjpSZWN1cnNpb25Hcm91cEd1YXJkOjp+UmVjdXJzaW9uR3JvdXBHdWFyZCk6CisgICAg
ICAgIChKU0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OlBhcnNlcik6CisgICAgICAgIChK
U0M6Oldhc206OlBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5cGUpOgorICAgICAgICAo
SlNDOjpXYXNtOjpQYXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZSk6CisgICAgICAg
ICogd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rp
b25QYXJzZXI6OnBhcnNlVHlwZSk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6
OnBhcnNlRWxlbWVudCk6CisgICAgICAgIChKU0M6Oldhc206OlNlY3Rpb25QYXJzZXI6OnBhcnNl
UmVjdXJzaW9uR3JvdXApOgorICAgICAgICAqIHdhc20vV2FzbVNlY3Rpb25QYXJzZXIuaDoKKyAg
ICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6ZG9X
YXNtQ2FsbEluZGlyZWN0KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmRvV2FzbUNhbGxSZWYpOgor
ICAgICAgICAqIHdhc20vV2FzbVR5cGVEZWZpbml0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6VHlwZURlZmluaXRpb246OmR1bXAgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1
cnNpb25Hcm91cDo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNp
b25Hcm91cDo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlByb2plY3Rpb246OnRv
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6ZHVtcCBjb25z
dCk6CisgICAgICAgIChKU0M6Oldhc206OmNvbXB1dGVSZWN1cnNpb25Hcm91cEhhc2gpOgorICAg
ICAgICAoSlNDOjpXYXNtOjpjb21wdXRlUHJvamVjdGlvbkhhc2gpOgorICAgICAgICAoSlNDOjpX
YXNtOjpUeXBlRGVmaW5pdGlvbjo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlR5
cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVGdW5jdGlvblNpZ25hdHVyZSk6CisgICAgICAgIChKU0M6
Oldhc206OlR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVTdHJ1Y3RUeXBlKToKKyAgICAgICAgKEpT
Qzo6V2FzbTo6VHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVJlY3Vyc2lvbkdyb3VwKToKKyAgICAg
ICAgKEpTQzo6V2FzbTo6VHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVByb2plY3Rpb24pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpUeXBlRGVmaW5pdGlvbjo6c3Vic3RpdHV0ZSk6CisgICAgICAgIChK
U0M6Oldhc206OlR5cGVEZWZpbml0aW9uOjp1bnJvbGwgY29uc3QpOgorICAgICAgICAoSlNDOjpX
YXNtOjpUeXBlRGVmaW5pdGlvbjo6ZXhwYW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
RnVuY3Rpb25QYXJhbWV0ZXJUeXBlczo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpTdHJ1
Y3RQYXJhbWV0ZXJUeXBlczo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNpb25H
cm91cFBhcmFtZXRlclR5cGVzOjpoYXNoKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9u
R3JvdXBQYXJhbWV0ZXJUeXBlczo6ZXF1YWwpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNp
b25Hcm91cFBhcmFtZXRlclR5cGVzOjp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpQ
cm9qZWN0aW9uUGFyYW1ldGVyVHlwZXM6Omhhc2gpOgorICAgICAgICAoSlNDOjpXYXNtOjpQcm9q
ZWN0aW9uUGFyYW1ldGVyVHlwZXM6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVj
dGlvblBhcmFtZXRlclR5cGVzOjp0cmFuc2xhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpUeXBl
SW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yUmVjdXJzaW9uR3JvdXApOgorICAgICAgICAo
SlNDOjpXYXNtOjpUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yUHJvamVjdGlvbik6
CisgICAgICAgICogd2FzbS9XYXNtVHlwZURlZmluaXRpb24uaDoKKyAgICAgICAgKEpTQzo6V2Fz
bTo6UmVjdXJzaW9uR3JvdXA6OlJlY3Vyc2lvbkdyb3VwKToKKyAgICAgICAgKEpTQzo6V2FzbTo6
UmVjdXJzaW9uR3JvdXA6OnR5cGVDb3VudCBjb25zdCk6CisgICAgICAgIChKU0M6Oldhc206OlJl
Y3Vyc2lvbkdyb3VwOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UmVjdXJzaW9u
R3JvdXA6OmdldFR5cGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpSZWN1cnNpb25Hcm91cDo6c3Rv
cmFnZSk6CisgICAgICAgIChKU0M6Oldhc206OlJlY3Vyc2lvbkdyb3VwOjpzdG9yYWdlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6UHJvamVjdGlvbik6CisgICAgICAg
IChKU0M6Oldhc206OlByb2plY3Rpb246OnJlY3Vyc2lvbkdyb3VwIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6aW5kZXggY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNt
OjpQcm9qZWN0aW9uOjpnZXRSZWN1cnNpb25Hcm91cCk6CisgICAgICAgIChKU0M6Oldhc206OlBy
b2plY3Rpb246OmdldEluZGV4KToKKyAgICAgICAgKEpTQzo6V2FzbTo6UHJvamVjdGlvbjo6c3Rv
cmFnZSk6CisgICAgICAgIChKU0M6Oldhc206OlByb2plY3Rpb246OnN0b3JhZ2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpXYXNtOjpUeXBlRGVmaW5pdGlvbjo6VHlwZURlZmluaXRpb24pOgorICAg
ICAgICAoSlNDOjpXYXNtOjpUeXBlRGVmaW5pdGlvbjo6YWxsb2NhdGVkUmVjdXJzaW9uR3JvdXBT
aXplKToKKyAgICAgICAgKEpTQzo6V2FzbTo6VHlwZURlZmluaXRpb246OmFsbG9jYXRlZFByb2pl
Y3Rpb25TaXplKToKKyAgICAgICAgKiB3YXNtL1dhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6VHlwZUluZm9ybWF0aW9uOjpnZXRGdW5jdGlvblNpZ25hdHVy
ZSk6CisgICAgICAgICogd2FzbS9qcy9XYXNtVG9KUy5jcHA6CisgICAgICAgIChKU0M6Oldhc206
Ondhc21Ub0pTKToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNw
cDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmluaXRpYWxpemVFeHBv
cnRzKToKKyAgICAgICAgKiB3YXNtL3dhc20uanNvbjoKKwogMjAyMi0wNS0wNCAgWXVzdWtlIFN1
enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBkZWNvbnRhbWlu
YXRlIGluIFN0cnVjdHVyZUlEOjpkZWNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCmluZGV4IDc3YTkyOGQ4MzY1MmVmZmQyNGM4ZjI2
ZGRjZGJmYjc0NGRkMGRhZGMuLjljOTBkNTk5MjU4YzFiYzAwYjBlNjk1YTdjN2IzOTQ1NDA2NGE4
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJh
dG9yLmNwcApAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVX
YXNtQ29udGV4dEluc3RhbmNlKEJhc2ljQmxvY2sqIGJsb2NrLCBUeXBlZFRtcCBpbnN0CiAgICAg
ZW1pdFBhdGNocG9pbnQoYmxvY2ssIHBhdGNocG9pbnQsIFRtcCgpLCBpbnN0YW5jZSk7CiB9CiAK
LUFpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYg
aW5mbywgQjM6OlByb2NlZHVyZSYgcHJvY2VkdXJlLCBJbnRlcm5hbEZ1bmN0aW9uKiBjb21waWxh
dGlvbiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+JiB1bmxpbmtlZFdhc21Ub1dhc21D
YWxscywgTWVtb3J5TW9kZSBtb2RlLCB1bnNpZ25lZCBmdW5jdGlvbkluZGV4LCBUaWVyVXBDb3Vu
dCogdGllclVwLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCB1bnNpZ25lZCYgb3Ny
RW50cnlTY3JhdGNoQnVmZmVyU2l6ZSkKK0FpcklSR2VuZXJhdG9yOjpBaXJJUkdlbmVyYXRvcihj
b25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgQjM6OlByb2NlZHVyZSYgcHJvY2VkdXJlLCBJ
bnRlcm5hbEZ1bmN0aW9uKiBjb21waWxhdGlvbiwgVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNh
bGw+JiB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgTWVtb3J5TW9kZSBtb2RlLCB1bnNpZ25lZCBm
dW5jdGlvbkluZGV4LCBUaWVyVXBDb3VudCogdGllclVwLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYg
b3JpZ2luYWxTaWduYXR1cmUsIHVuc2lnbmVkJiBvc3JFbnRyeVNjcmF0Y2hCdWZmZXJTaXplKQog
ICAgIDogbV9pbmZvKGluZm8pCiAgICAgLCBtX21vZGUobW9kZSkKICAgICAsIG1fZnVuY3Rpb25J
bmRleChmdW5jdGlvbkluZGV4KQpAQCAtMTA0Miw2ICsxMDQyLDcgQEAgQWlySVJHZW5lcmF0b3I6
OkFpcklSR2VuZXJhdG9yKGNvbnN0IE1vZHVsZUluZm9ybWF0aW9uJiBpbmZvLCBCMzo6UHJvY2Vk
dXJlJiBwcm8KICAgICBtX21haW5FbnRyeXBvaW50U3RhcnQgPSBtX2NvZGUuYWRkQmxvY2soKTsK
ICAgICBtX2N1cnJlbnRCbG9jayA9IG1fbWFpbkVudHJ5cG9pbnRTdGFydDsKIAorICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBvcmlnaW5hbFNpZ25hdHVyZS5leHBhbmQoKTsK
ICAgICBBU1NFUlQoIW1fbG9jYWxzLnNpemUoKSk7CiAgICAgbV9sb2NhbHMuZ3JvdyhzaWduYXR1
cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJn
dW1lbnRDb3VudCgpOyArK2kpIHsKQEAgLTM3MjEsOSArMzcyMiwxMCBAQCBhdXRvIEFpcklSR2Vu
ZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0
aW9uJiBzaWduYQogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQWlySVJHZW5lcmF0b3I6OmFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYg
c2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1
bHRzKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIG9yaWdpbmFsU2ln
bmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
KSAtPiBQYXJ0aWFsUmVzdWx0CiB7CiAgICAgRXhwcmVzc2lvblR5cGUgY2FsbGVlSW5kZXggPSBh
cmdzLnRha2VMYXN0KCk7CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IG9y
aWdpbmFsU2lnbmF0dXJlLmV4cGFuZCgpOwogICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rp
b25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CiAgICAgQVNT
RVJUKG1faW5mby50YWJsZUNvdW50KCkgPiB0YWJsZUluZGV4KTsKICAgICBBU1NFUlQobV9pbmZv
LnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7
CkBAIC0zNzkwLDcgKzM3OTIsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJl
Y3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mCiAgICAgICAgIH0p
OwogCiAgICAgICAgIEV4cHJlc3Npb25UeXBlIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBnNjQo
KTsKLSAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6YmlnSW1tKFR5cGVJbmZvcm1hdGlvbjo6Z2V0
KHNpZ25hdHVyZSkpLCBleHBlY3RlZFNpZ25hdHVyZUluZGV4KTsKKyAgICAgICAgYXBwZW5kKE1v
dmUsIEFyZzo6YmlnSW1tKFR5cGVJbmZvcm1hdGlvbjo6Z2V0KG9yaWdpbmFsU2lnbmF0dXJlKSks
IGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgpOwogICAgICAgICBlbWl0Q2hlY2soWyZdIHsKICAgICAg
ICAgICAgIHJldHVybiBJbnN0KEJyYW5jaDY0LCBudWxscHRyLCBBcmc6OnJlbENvbmQoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4cGVjdGVkU2lnbmF0
dXJlSW5kZXgpOwogICAgICAgICB9LCBbPSwgdGhpc10gKENDYWxsSGVscGVycyYgaml0LCBjb25z
dCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGZkOThiMTgzODM1OWU1YWE4
ZjcwNmZhMjMwMzljNWFjMjA1YTFmMWQuLjEzZGRmNDQ3Zjc2ODZkYTEwY2U0OTEyYzRhNDk1Y2Rl
M2I3YWE1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lS
R2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdl
bmVyYXRvci5jcHAKQEAgLTMwMDYsOSArMzAwNiwxMCBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZENhbGwodWludDMyX3QgZnVuY3Rpb25JbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25h
dAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGly
ZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUs
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBh
cnRpYWxSZXN1bHQKK2F1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVk
IHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBvcmlnaW5hbFNpZ25hdHVyZSwgVmVj
dG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4gUGFydGlh
bFJlc3VsdAogewogICAgIFZhbHVlKiBjYWxsZWVJbmRleCA9IGdldChhcmdzLnRha2VMYXN0KCkp
OworICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBvcmlnaW5hbFNpZ25hdHVy
ZS5leHBhbmQoKTsKICAgICBBU1NFUlQoc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigp
LT5hcmd1bWVudENvdW50KCkgPT0gYXJncy5zaXplKCkpOwogCiAgICAgbV9tYWtlc0NhbGxzID0g
dHJ1ZTsKQEAgLTMwNjcsNyArMzA2OCw3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbElu
ZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzCiAKICAg
ICAgICAgLy8gQ2hlY2sgdGhlIHNpZ25hdHVyZSBtYXRjaGVzIHRoZSB2YWx1ZSB3ZSBleHBlY3Qu
CiAgICAgICAgIHsKLSAgICAgICAgICAgIFZhbHVlKiBleHBlY3RlZFNpZ25hdHVyZUluZGV4ID0g
bV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHNpZ25hdHVyZSkpOworICAgICAgICAgICAgVmFsdWUqIGV4
cGVjdGVkU2lnbmF0dXJlSW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PENvbnN0NjRW
YWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgVHlwZUluZm9ybWF0aW9uOjpnZXQob3JpZ2luYWxTaWdu
YXR1cmUpKTsKICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrID0gbV9jdXJyZW50QmxvY2st
PmFwcGVuZE5ldzxDaGVja1ZhbHVlPihtX3Byb2MsIENoZWNrLCBvcmlnaW4oKSwKICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFZhbHVlPihtX3Byb2MsIE5vdEVxdWFs
LCBvcmlnaW4oKSwgY2FsbGVlU2lnbmF0dXJlSW5kZXgsIGV4cGVjdGVkU2lnbmF0dXJlSW5kZXgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCmluZGV4IDhl
MThhNzcyMjMyMGE0Y2JkNGVlMGU4YzIzYjc3NDI1ZmZkMmEwNDcuLjc4ZTc3Zjk0MWRmYjkyMzc4
ZTlmZjQwNTI0ZWE0YjQ4ZGU2MmUzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CQlFQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQkJRUGxhbi5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEJCUVBsYW46OndvcmsoQ29t
cGlsYXRpb25FZmZvcnQgZWZmb3J0KQogCiAgICAgc2l6ZV90IGZ1bmN0aW9uSW5kZXhTcGFjZSA9
IG1fZnVuY3Rpb25JbmRleCArIG1fbW9kdWxlSW5mb3JtYXRpb24tPmltcG9ydEZ1bmN0aW9uQ291
bnQoKTsKICAgICBUeXBlSW5kZXggdHlwZUluZGV4ID0gbV9tb2R1bGVJbmZvcm1hdGlvbi0+aW50
ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW21fZnVuY3Rpb25JbmRleF07Ci0gICAgY29uc3QgVHlw
ZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCk7
CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6
Z2V0KHR5cGVJbmRleCkuZXhwYW5kKCk7CiAgICAgZnVuY3Rpb24tPmVudHJ5cG9pbnQuY29tcGls
YXRpb24gPSBtYWtlVW5pcXVlPENvbXBpbGF0aW9uPigKICAgICAgICAgRklOQUxJWkVfV0FTTV9D
T0RFX0ZPUl9NT0RFKENvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSwgbGlua0J1ZmZlciwgSklUQ29t
cGlsYXRpb25QdHJUYWcsICJXZWJBc3NlbWJseSBCQlEgZnVuY3Rpb25bJWldICVzIG5hbWUgJXMi
LCBtX2Z1bmN0aW9uSW5kZXgsIHNpZ25hdHVyZS50b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBt
YWtlU3RyaW5nKEluZGV4T3JOYW1lKGZ1bmN0aW9uSW5kZXhTcGFjZSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi0+bmFtZVNlY3Rpb24tPmdldChmdW5jdGlvbkluZGV4U3BhY2UpKSkuYXNjaWkoKS5kYXRh
KCkpLAogICAgICAgICBXVEZNb3ZlKGNvbnRleHQud2FzbUVudHJ5cG9pbnRCeXByb2R1Y3RzKSk7
CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBCQlFQbGFuOjpjb21waWxlRnVuY3Rpb24odWludDMy
X3QgZnVuY3Rpb25JbmRleCkKICAgICBpZiAobV9leHBvcnRlZEZ1bmN0aW9uSW5kaWNlcy5jb250
YWlucyhmdW5jdGlvbkluZGV4KSB8fCBtX21vZHVsZUluZm9ybWF0aW9uLT5yZWZlcmVuY2VkRnVu
Y3Rpb25zKCkuY29udGFpbnMoZnVuY3Rpb25JbmRleCkpIHsKICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogICAgICAgICBUeXBlSW5kZXggdHlwZUluZGV4ID0gbV9tb2R1bGVJbmZv
cm1hdGlvbi0+aW50ZXJuYWxGdW5jdGlvblR5cGVJbmRpY2VzW2Z1bmN0aW9uSW5kZXhdOwotICAg
ICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpn
ZXQodHlwZUluZGV4KTsKKyAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9
IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCkuZXhwYW5kKCk7CiAKICAgICAgICAgbV9j
b21waWxhdGlvbkNvbnRleHRzW2Z1bmN0aW9uSW5kZXhdLmVtYmVkZGVyRW50cnlwb2ludEpJVCA9
IG1ha2VVbmlxdWU8Q0NhbGxIZWxwZXJzPigpOwogICAgICAgICBhdXRvIGVtYmVkZGVyVG9XYXNt
SW50ZXJuYWxGdW5jdGlvbiA9IGNyZWF0ZUpTVG9XYXNtV3JhcHBlcigqbV9jb21waWxhdGlvbkNv
bnRleHRzW2Z1bmN0aW9uSW5kZXhdLmVtYmVkZGVyRW50cnlwb2ludEpJVCwgc2lnbmF0dXJlLCAm
bV91bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZvcm1h
dGlvbi5nZXQoKSwgbV9tb2RlLCBmdW5jdGlvbkluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21DYWxsZWUuaAppbmRleCBkOGFkZjRiMTMwZmE0ZTg0YWZhNjgyZmUwN2IzM2IxZjVk
YjZmMzM1Li5iNWQxYWU2YzdmZTFhNWY0YmIzOTY5ZTI2Y2M0M2E3MTI0MTBhNTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxlZS5oCkBAIC0yNjUsNyArMjY1LDcgQEAgcHVi
bGljOgogCiAgICAgTExJbnRUaWVyVXBDb3VudGVyJiB0aWVyVXBDb3VudGVyKCkgeyByZXR1cm4g
bV90aWVyVXBDb3VudGVyOyB9CiAKLSAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0
dXJlKHVuc2lnbmVkIGluZGV4KSBjb25zdAorICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWdu
YXR1cmUodW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gKm1fc2ln
bmF0dXJlc1tpbmRleF07CiAgICAgfQpAQCAtMzA0LDcgKzMwNCw3IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdhc21JbnN0cnVjdGlvblN0cmVhbT4gbV9pbnN0cnVjdGlvbnM7CiAg
ICAgY29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwogICAg
IEZpeGVkVmVjdG9yPFdhc21JbnN0cnVjdGlvblN0cmVhbTo6T2Zmc2V0PiBtX2p1bXBUYXJnZXRz
OwotICAgIEZpeGVkVmVjdG9yPGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKj4gbV9zaWduYXR1cmVz
OworICAgIEZpeGVkVmVjdG9yPGNvbnN0IFR5cGVEZWZpbml0aW9uKj4gbV9zaWduYXR1cmVzOwog
ICAgIE91dE9mTGluZUp1bXBUYXJnZXRzIG1fb3V0T2ZMaW5lSnVtcFRhcmdldHM7CiAgICAgTExJ
bnRUaWVyVXBDb3VudGVyIG1fdGllclVwQ291bnRlcjsKICAgICBGaXhlZFZlY3RvcjxKdW1wVGFi
bGU+IG1fanVtcFRhYmxlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaApp
bmRleCA5YmVhNDQ4NjQ3ODA3ZGI2Nzk1OGNkOTg4YjI4YTQzODM4ODIyZjIzLi41YTg2ZDNjNjhk
ZWE2Y2Y2OWEwMjUxYThkZTJhODY3MGJhNWIyY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZvcm1hdC5oCkBAIC03NSw2ICs3NSw5IEBAIGlubGluZSBib29sIGlzVmFsdWVUeXBl
KFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICByZXR1cm4g
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0aW9uUmVmZXJlbmNlcygpOwogICAgIGNh
c2UgVHlwZUtpbmQ6OlJ0dDoKKyAgICAvLyBSZWMgdHlwZSBraW5kcyBhcmUgdXNlZCBpbnRlcm5h
bGx5IHRvIHJlcHJlc2VudCBgcmVjLjxpPmAgcmVmZXJlbmNlcworICAgIC8vIHdpdGhpbiByZWN1
cnNpb24gZ3JvdXBzLiBUaGV5IGFyZSBpbnZhbGlkIGluIG90aGVyIGNvbnRleHRzLgorICAgIGNh
c2UgVHlwZUtpbmQ6OlJlYzoKICAgICAgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
R0MoKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3Iu
Y3BwCmluZGV4IDBjNmY3OWI2YzE5OWJkOWFmNDgwYTU5M2ZjYzE0NTQyOTAyYTNlNzguLjA4OGI3
OWU4Yjc4ZmYxMGZmY2E3OTVhNDUwOTA4ZWVhNmViMjg3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJh
dG9yLmNwcApAQCAtNTEsNyArNTEsNyBAQCBXYXNtSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBG
dW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6b3V0T2ZMaW5lSnVtcE9mZnNldChXYQogICAgIHJl
dHVybiBtX291dE9mTGluZUp1bXBUYXJnZXRzLmdldChieXRlY29kZU9mZnNldCk7CiB9CiAKLXVu
c2lnbmVkIEZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yOjphZGRTaWduYXR1cmUoY29uc3QgRnVu
Y3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZSkKK3Vuc2lnbmVkIEZ1bmN0aW9uQ29kZUJsb2NrR2Vu
ZXJhdG9yOjphZGRTaWduYXR1cmUoY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSkKIHsK
ICAgICB1bnNpZ25lZCBpbmRleCA9IG1fc2lnbmF0dXJlcy5zaXplKCk7CiAgICAgbV9zaWduYXR1
cmVzLmFwcGVuZCgmc2lnbmF0dXJlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKaW5kZXggNDg5ZmU2
NmM1N2ZlOTdmMmZkNGFlY2NjZmYxYWQ2ODc4MjRkYjIzOC4uMDAzYzk5OGEyMzZjYTg0MTNlZmY0
ZWY4MmI1ZDNmNWI3NTE4ZmQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlOwogbmFtZXNwYWNlIFdhc20gewogCiBj
bGFzcyBMTEludENhbGxlZTsKLWNsYXNzIEZ1bmN0aW9uU2lnbmF0dXJlOworY2xhc3MgVHlwZURl
ZmluaXRpb247CiBzdHJ1Y3QgR2VuZXJhdG9yVHJhaXRzOwogCiBzdHJ1Y3QgSnVtcFRhYmxlRW50
cnkgewpAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKIAogICAgIEhhc2hNYXA8V2FzbUluc3Ry
dWN0aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiYg
dGllclVwQ291bnRlcigpIHsgcmV0dXJuIG1fdGllclVwQ291bnRlcjsgfQogCi0gICAgdW5zaWdu
ZWQgYWRkU2lnbmF0dXJlKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJik7CisgICAgdW5zaWduZWQg
YWRkU2lnbmF0dXJlKGNvbnN0IFR5cGVEZWZpbml0aW9uJik7CiAKICAgICBKdW1wVGFibGUmIGFk
ZEp1bXBUYWJsZShzaXplX3QgbnVtYmVyT2ZFbnRyaWVzKTsKICAgICB1bnNpZ25lZCBudW1iZXJP
Zkp1bXBUYWJsZXMoKSBjb25zdDsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXYXNtSW5zdHJ1Y3Rpb25TdHJlYW0+IG1faW5zdHJ1Y3Rpb25zOwogICAg
IGNvbnN0IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxwdHIgfTsKICAgICBW
ZWN0b3I8V2FzbUluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQ+IG1fanVtcFRhcmdldHM7Ci0gICAg
VmVjdG9yPGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKj4gbV9zaWduYXR1cmVzOworICAgIFZlY3Rv
cjxjb25zdCBUeXBlRGVmaW5pdGlvbio+IG1fc2lnbmF0dXJlczsKICAgICBPdXRPZkxpbmVKdW1w
VGFyZ2V0cyBtX291dE9mTGluZUp1bXBUYXJnZXRzOwogICAgIEhhc2hNYXA8V2FzbUluc3RydWN0
aW9uU3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiBtX3Rp
ZXJVcENvdW50ZXI7CiAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qdW1wVGFibGVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZ1bmN0aW9uUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAppbmRleCBkZWI4
N2ZiYzM3YjcxYmY5ZTFkOTAwMGE3N2MyZjQ1NzYyZWZiM2NiLi5hMGM3NDAwZWQyNWFmYzM0M2Ni
OGVlMTg5MzljMDIyMTgyZTA1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtNDgsOCArNDgsOSBAQCBlbnVtIGNsYXNzIENhdGNo
S2luZCB7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNsb3NpbmdTdGFjaywgdHlwZW5hbWUg
TmV3U3RhY2s+Ci12b2lkIHNwbGl0U3RhY2soQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBFbmNs
b3NpbmdTdGFjayYgZW5jbG9zaW5nU3RhY2ssIE5ld1N0YWNrJiBuZXdTdGFjaykKK3ZvaWQgc3Bs
aXRTdGFjayhCbG9ja1NpZ25hdHVyZSBvcmlnaW5hbFNpZ25hdHVyZSwgRW5jbG9zaW5nU3RhY2sm
IGVuY2xvc2luZ1N0YWNrLCBOZXdTdGFjayYgbmV3U3RhY2spCiB7CisgICAgQmxvY2tTaWduYXR1
cmUgc2lnbmF0dXJlID0gJm9yaWdpbmFsU2lnbmF0dXJlLT5leHBhbmQoKTsKICAgICBuZXdTdGFj
ay5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpZ25hdHVyZS0+YXM8RnVuY3Rpb25TaWduYXR1cmU+
KCktPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgQVNTRVJUKGVuY2xvc2luZ1N0YWNrLnNpemUoKSA+
PSBzaWduYXR1cmUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5hcmd1bWVudENvdW50KCkpOwog
ICAgIHVuc2lnbmVkIG9mZnNldCA9IGVuY2xvc2luZ1N0YWNrLnNpemUoKSAtIHNpZ25hdHVyZS0+
YXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKTsKQEAgLTIyOSw3ICsyMzAs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250ZXh0PgogRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46
OkZ1bmN0aW9uUGFyc2VyKENvbnRleHQmIGNvbnRleHQsIGNvbnN0IHVpbnQ4X3QqIGZ1bmN0aW9u
U3RhcnQsIHNpemVfdCBmdW5jdGlvbkxlbmd0aCwgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25h
dHVyZSwgY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8pCiAgICAgOiBQYXJzZXIoZnVuY3Rp
b25TdGFydCwgZnVuY3Rpb25MZW5ndGgpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKLSAgICAs
IG1fc2lnbmF0dXJlKHNpZ25hdHVyZSkKKyAgICAsIG1fc2lnbmF0dXJlKHNpZ25hdHVyZS5leHBh
bmQoKSkKICAgICAsIG1faW5mbyhpbmZvKQogewogICAgIGlmICh2ZXJib3NlKQpAQCAtMjQyLDYg
KzI0Myw3IEBAIGF1dG8gRnVuY3Rpb25QYXJzZXI8Q29udGV4dD46OnBhcnNlKCkgLT4gUmVzdWx0
CiB7CiAgICAgdWludDMyX3QgbG9jYWxHcm91cHNDb3VudDsKIAorICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIW1fc2lnbmF0dXJlLmlzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLCAidHlwZSBzaWduYXR1
cmUgd2FzIG5vdCBhIGZ1bmN0aW9uIHNpZ25hdHVyZSIpOwogICAgIGNvbnN0IGF1dG8mIHNpZ25h
dHVyZSA9ICptX3NpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFtX2NvbnRleHQuYWRkQXJndW1lbnRzKG1fc2lnbmF0dXJlKSwgImNhbid0
IGFkZCAiLCBzaWduYXR1cmUuYXJndW1lbnRDb3VudCgpLCAiIGFyZ3VtZW50cyB0byBGdW5jdGlv
biIpOwogICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlVmFyVUludDMyKGxvY2FsR3JvdXBz
Q291bnQpLCAiY2FuJ3QgZ2V0IGxvY2FsIGdyb3VwcyBjb3VudCIpOwpAQCAtMTIxOSw3ICsxMjIx
LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAg
IFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VGdW5jdGlvbkluZGV4KGZ1bmN0aW9uSW5k
ZXgpKTsKIAogICAgICAgICBUeXBlSW5kZXggY2FsbGVlVHlwZUluZGV4ID0gbV9pbmZvLnR5cGVJ
bmRleEZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleCk7Ci0gICAgICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNh
bGxlZVR5cGVJbmRleCk7CisgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5p
dGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVR5cGVJbmRleCkuZXhwYW5kKCk7CiAg
ICAgICAgIGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25hdHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxG
dW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihjYWxsZWVT
aWduYXR1cmUuYXJndW1lbnRDb3VudCgpID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2Fs
bCBmdW5jdGlvbiBpbmRleCAiLCBmdW5jdGlvbkluZGV4LCAiIGhhcyAiLCBjYWxsZWVTaWduYXR1
cmUuYXJndW1lbnRDb3VudCgpLCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0YWNr
IGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVzIik7
CiAKQEAgLTEyNTgsNyArMTI2MCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENS
RUFURV9DQVNFKQogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKG1faW5mby50YWJsZXNbdGFi
bGVJbmRleF0udHlwZSgpICE9IFRhYmxlRWxlbWVudFR5cGU6OkZ1bmNyZWYsICJjYWxsX2luZGly
ZWN0IGlzIG9ubHkgdmFsaWQgd2hlbiBhIHRhYmxlIGhhcyB0eXBlIGZ1bmNyZWYiKTsKIAogICAg
ICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBtX2luZm8udHlwZVNp
Z25hdHVyZXNbc2lnbmF0dXJlSW5kZXhdLmdldCgpOwotICAgICAgICBjb25zdCBhdXRvJiBjYWxs
ZWVTaWduYXR1cmUgPSAqdHlwZURlZmluaXRpb24uYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7Cisg
ICAgICAgIGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25hdHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5leHBh
bmQoKS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgc2l6ZV90IGFyZ3VtZW50Q291
bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsgMTsgLy8gQWRkIHRoZSBjYWxs
ZWUncyBpbmRleC4KICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRihhcmd1bWVudENvdW50ID4g
bV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9pbmRpcmVjdCBleHBlY3RzICIsIGFyZ3Vt
ZW50Q291bnQsICIgYXJndW1lbnRzLCBidXQgdGhlIGV4cHJlc3Npb24gc3RhY2sgY3VycmVudGx5
IGhvbGRzICIsIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSwgIiB2YWx1ZXMiKTsKIApAQCAtMTI5
MCw3ICsxMjkyLDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0Up
CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYoIWlzUmVmV2l0aFR5cGVJbmRleChtX2V4
cHJlc3Npb25TdGFjay5sYXN0KCkudHlwZSgpKSwgIm5vbi1mdW5jcmVmIGNhbGxfcmVmIHZhbHVl
ICIsIG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50eXBlKCkua2luZCk7CiAKICAgICAgICAgY29u
c3QgVHlwZUluZGV4IGNhbGxlZVR5cGVJbmRleCA9IG1fZXhwcmVzc2lvblN0YWNrLmxhc3QoKS50
eXBlKCkuaW5kZXg7Ci0gICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlv
biA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNhbGxlZVR5cGVJbmRleCk7CisgICAgICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiB0eXBlRGVmaW5pdGlvbiA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGNh
bGxlZVR5cGVJbmRleCkuZXhwYW5kKCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIGNhbGxlZVNpZ25h
dHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAg
c2l6ZV90IGFyZ3VtZW50Q291bnQgPSBjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpICsg
MTsgLy8gQWRkIHRoZSBjYWxsZWUncyB2YWx1ZS4KICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9J
Rihhcmd1bWVudENvdW50ID4gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiY2FsbF9yZWYgZXhw
ZWN0cyAiLCBhcmd1bWVudENvdW50LCAiIGFyZ3VtZW50cywgYnV0IHRoZSBleHByZXNzaW9uIHN0
YWNrIGN1cnJlbnRseSBob2xkcyAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgdmFsdWVz
Iik7CkBAIC0xMzIwLDcgKzEzMjIsOCBAQCBGT1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChD
UkVBVEVfQ0FTRSkKICAgICAgICAgQmxvY2tTaWduYXR1cmUgaW5saW5lU2lnbmF0dXJlQXNUeXBl
OwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1faW5m
bywgaW5saW5lU2lnbmF0dXJlQXNUeXBlKSwgImNhbid0IGdldCBibG9jaydzIHNpZ25hdHVyZSIp
OwogCi0gICAgICAgIGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBp
bmxpbmVTaWduYXR1cmVBc1R5cGUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAgICAgICBC
bG9ja1NpZ25hdHVyZSBleHBhbmRlZFNpZ25hdHVyZSA9ICZpbmxpbmVTaWduYXR1cmVBc1R5cGUt
PmV4cGFuZCgpOworICAgICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSogaW5saW5lU2lnbmF0
dXJlID0gZXhwYW5kZWRTaWduYXR1cmUtPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOwogICAgICAg
ICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA8IGlubGlu
ZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiVG9vIGZldyB2YWx1ZXMgb24gc3RhY2sgZm9y
IGJsb2NrLiBCbG9jayBleHBlY3RzICIsIGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgp
LCAiLCBidXQgb25seSAiLCBtX2V4cHJlc3Npb25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50
LiBCbG9jayBoYXMgaW5saW5lU2lnbmF0dXJlOiAiLCBpbmxpbmVTaWduYXR1cmUtPnRvU3RyaW5n
KCkpOwogICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCkg
LSBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKQEAg
LTEzMzEsNyArMTMzNCw3IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9D
QVNFKQogICAgICAgICBpbnQ2NF90IG9sZFNpemUgPSBtX2V4cHJlc3Npb25TdGFjay5zaXplKCk7
CiAgICAgICAgIFN0YWNrIG5ld1N0YWNrOwogICAgICAgICBDb250cm9sVHlwZSBibG9jazsKLSAg
ICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQmxvY2soaW5saW5lU2lnbmF0dXJlQXNU
eXBlLCBtX2V4cHJlc3Npb25TdGFjaywgYmxvY2ssIG5ld1N0YWNrKSk7CisgICAgICAgIFdBU01f
VFJZX0FERF9UT19DT05URVhUKGFkZEJsb2NrKGV4cGFuZGVkU2lnbmF0dXJlLCBtX2V4cHJlc3Np
b25TdGFjaywgYmxvY2ssIG5ld1N0YWNrKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU2l6
ZSwgb2xkU2l6ZSAtIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA9PSBpbmxpbmVTaWduYXR1cmUt
PmFyZ3VtZW50Q291bnQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdGFjay5zaXplKCkgPT0gaW5s
aW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogCkBAIC0xMzQ0LDcgKzEzNDcsOCBAQCBG
T1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgQmxvY2tT
aWduYXR1cmUgaW5saW5lU2lnbmF0dXJlQXNUeXBlOwogICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFwYXJzZUJsb2NrU2lnbmF0dXJlKG1faW5mbywgaW5saW5lU2lnbmF0dXJlQXNUeXBlKSwg
ImNhbid0IGdldCBsb29wJ3Mgc2lnbmF0dXJlIik7CiAKLSAgICAgICAgY29uc3QgRnVuY3Rpb25T
aWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9IGlubGluZVNpZ25hdHVyZUFzVHlwZS0+YXM8RnVu
Y3Rpb25TaWduYXR1cmU+KCk7CisgICAgICAgIEJsb2NrU2lnbmF0dXJlIGV4cGFuZGVkU2lnbmF0
dXJlID0gJmlubGluZVNpZ25hdHVyZUFzVHlwZS0+ZXhwYW5kKCk7CisgICAgICAgIGNvbnN0IEZ1
bmN0aW9uU2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBleHBhbmRlZFNpZ25hdHVyZS0+YXM8
RnVuY3Rpb25TaWduYXR1cmU+KCk7CiAgICAgICAgIFdBU01fVkFMSURBVE9SX0ZBSUxfSUYobV9l
eHByZXNzaW9uU3RhY2suc2l6ZSgpIDwgaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCks
ICJUb28gZmV3IHZhbHVlcyBvbiBzdGFjayBmb3IgbG9vcCBibG9jay4gTG9vcCBleHBlY3RzICIs
IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiLCBidXQgb25seSAiLCBtX2V4cHJl
c3Npb25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBMb29wIGhhcyBpbmxpbmVTaWduYXR1
cmU6ICIsIGlubGluZVNpZ25hdHVyZS0+dG9TdHJpbmcoKSk7CiAgICAgICAgIHVuc2lnbmVkIG9m
ZnNldCA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSAtIGlubGluZVNpZ25hdHVyZS0+YXJndW1l
bnRDb3VudCgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaW5saW5lU2lnbmF0
dXJlLT5hcmd1bWVudENvdW50KCk7ICsraSkgewpAQCAtMTM1NSw3ICsxMzU5LDcgQEAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGludDY0X3Qgb2xk
U2l6ZSA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsKICAgICAgICAgU3RhY2sgbmV3U3RhY2s7
CiAgICAgICAgIENvbnRyb2xUeXBlIGxvb3A7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19DT05U
RVhUKGFkZExvb3AoaW5saW5lU2lnbmF0dXJlQXNUeXBlLCBtX2V4cHJlc3Npb25TdGFjaywgbG9v
cCwgbmV3U3RhY2ssIG1fbG9vcEluZGV4KyspKTsKKyAgICAgICAgV0FTTV9UUllfQUREX1RPX0NP
TlRFWFQoYWRkTG9vcChleHBhbmRlZFNpZ25hdHVyZSwgbV9leHByZXNzaW9uU3RhY2ssIGxvb3As
IG5ld1N0YWNrLCBtX2xvb3BJbmRleCsrKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU2l6
ZSwgb2xkU2l6ZSAtIG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKSA9PSBpbmxpbmVTaWduYXR1cmUt
PmFyZ3VtZW50Q291bnQoKSk7CiAgICAgICAgIEFTU0VSVChuZXdTdGFjay5zaXplKCkgPT0gaW5s
aW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogCkBAIC0xMzcwLDcgKzEzNzQsOCBAQCBG
T1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgV0FTTV9Q
QVJTRVJfRkFJTF9JRighcGFyc2VCbG9ja1NpZ25hdHVyZShtX2luZm8sIGlubGluZVNpZ25hdHVy
ZUFzVHlwZSksICJjYW4ndCBnZXQgaWYncyBzaWduYXR1cmUiKTsKICAgICAgICAgV0FTTV9UUllf
UE9QX0VYUFJFU1NJT05fU1RBQ0tfSU5UTyhjb25kaXRpb24sICJpZiBjb25kaXRpb24iKTsKIAot
ICAgICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSogaW5saW5lU2lnbmF0dXJlID0gaW5saW5l
U2lnbmF0dXJlQXNUeXBlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAgICAgICAgQmxvY2tT
aWduYXR1cmUgZXhwYW5kZWRTaWduYXR1cmUgPSAmaW5saW5lU2lnbmF0dXJlQXNUeXBlLT5leHBh
bmQoKTsKKyAgICAgICAgY29uc3QgRnVuY3Rpb25TaWduYXR1cmUqIGlubGluZVNpZ25hdHVyZSA9
IGV4cGFuZGVkU2lnbmF0dXJlLT5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICAgICAgV0FT
TV9WQUxJREFUT1JfRkFJTF9JRighY29uZGl0aW9uLnR5cGUoKS5pc0kzMigpLCAiaWYgY29uZGl0
aW9uIG11c3QgYmUgaTMyLCBnb3QgIiwgY29uZGl0aW9uLnR5cGUoKS5raW5kKTsKICAgICAgICAg
V0FTTV9WQUxJREFUT1JfRkFJTF9JRihtX2V4cHJlc3Npb25TdGFjay5zaXplKCkgPCBpbmxpbmVT
aWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSwgIlRvbyBmZXcgYXJndW1lbnRzIG9uIHN0YWNrIGZv
ciBpZiBibG9jay4gSWYgZXhwZWN0cyAiLCBpbmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQo
KSwgIiwgYnV0IG9ubHkgIiwgbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpLCAiIHdlcmUgcHJlc2Vu
dC4gSWYgYmxvY2sgaGFzIHNpZ25hdHVyZTogIiwgaW5saW5lU2lnbmF0dXJlLT50b1N0cmluZygp
KTsKICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0g
aW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7CkBAIC0xMzgwLDcgKzEzODUsNyBAQCBG
T1JfRUFDSF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgaW50NjRf
dCBvbGRTaXplID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpOwogICAgICAgICBTdGFjayBuZXdT
dGFjazsKICAgICAgICAgQ29udHJvbFR5cGUgY29udHJvbDsKLSAgICAgICAgV0FTTV9UUllfQURE
X1RPX0NPTlRFWFQoYWRkSWYoY29uZGl0aW9uLCBpbmxpbmVTaWduYXR1cmVBc1R5cGUsIG1fZXhw
cmVzc2lvblN0YWNrLCBjb250cm9sLCBuZXdTdGFjaykpOworICAgICAgICBXQVNNX1RSWV9BRERf
VE9fQ09OVEVYVChhZGRJZihjb25kaXRpb24sIGV4cGFuZGVkU2lnbmF0dXJlLCBtX2V4cHJlc3Np
b25TdGFjaywgY29udHJvbCwgbmV3U3RhY2spKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRT
aXplLCBvbGRTaXplIC0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpID09IGlubGluZVNpZ25hdHVy
ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICAgICAgQVNTRVJUKG5ld1N0YWNrLnNpemUoKSA9PSBp
bmxpbmVTaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKSk7CiAKQEAgLTE0MDcsNyArMTQxMiw4IEBA
IEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQogICAgICAgICBCbG9j
a1NpZ25hdHVyZSBpbmxpbmVTaWduYXR1cmVBc1R5cGU7CiAgICAgICAgIFdBU01fUEFSU0VSX0ZB
SUxfSUYoIXBhcnNlQmxvY2tTaWduYXR1cmUobV9pbmZvLCBpbmxpbmVTaWduYXR1cmVBc1R5cGUp
LCAiY2FuJ3QgZ2V0IHRyeSdzIHNpZ25hdHVyZSIpOwogCi0gICAgICAgIGNvbnN0IEZ1bmN0aW9u
U2lnbmF0dXJlKiBpbmxpbmVTaWduYXR1cmUgPSBpbmxpbmVTaWduYXR1cmVBc1R5cGUtPmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpOworICAgICAgICBCbG9ja1NpZ25hdHVyZSBleHBhbmRlZFNpZ25h
dHVyZSA9ICZpbmxpbmVTaWduYXR1cmVBc1R5cGUtPmV4cGFuZCgpOworICAgICAgICBjb25zdCBG
dW5jdGlvblNpZ25hdHVyZSogaW5saW5lU2lnbmF0dXJlID0gZXhwYW5kZWRTaWduYXR1cmUtPmFz
PEZ1bmN0aW9uU2lnbmF0dXJlPigpOwogICAgICAgICBXQVNNX1ZBTElEQVRPUl9GQUlMX0lGKG1f
ZXhwcmVzc2lvblN0YWNrLnNpemUoKSA8IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgp
LCAiVG9vIGZldyBhcmd1bWVudHMgb24gc3RhY2sgZm9yIHRyeSBibG9jay4gVHJ5ZSBleHBlY3Rz
ICIsIGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpLCAiLCBidXQgb25seSAiLCBtX2V4
cHJlc3Npb25TdGFjay5zaXplKCksICIgd2VyZSBwcmVzZW50LiBUcnkgYmxvY2sgaGFzIHNpZ25h
dHVyZTogIiwgaW5saW5lU2lnbmF0dXJlLT50b1N0cmluZygpKTsKICAgICAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gbV9leHByZXNzaW9uU3RhY2suc2l6ZSgpIC0gaW5saW5lU2lnbmF0dXJlLT5hcmd1
bWVudENvdW50KCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmxpbmVTaWdu
YXR1cmUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQpAQCAtMTQxNiw3ICsxNDIyLDcgQEAgRk9SX0VB
Q0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIGludDY0X3Qgb2xk
U2l6ZSA9IG1fZXhwcmVzc2lvblN0YWNrLnNpemUoKTsKICAgICAgICAgU3RhY2sgbmV3U3RhY2s7
CiAgICAgICAgIENvbnRyb2xUeXBlIGNvbnRyb2w7Ci0gICAgICAgIFdBU01fVFJZX0FERF9UT19D
T05URVhUKGFkZFRyeShpbmxpbmVTaWduYXR1cmVBc1R5cGUsIG1fZXhwcmVzc2lvblN0YWNrLCBj
b250cm9sLCBuZXdTdGFjaykpOworICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRU
cnkoZXhwYW5kZWRTaWduYXR1cmUsIG1fZXhwcmVzc2lvblN0YWNrLCBjb250cm9sLCBuZXdTdGFj
aykpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFNpemUsIG9sZFNpemUgLSBtX2V4cHJlc3Np
b25TdGFjay5zaXplKCkgPT0gaW5saW5lU2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCkpOwogICAg
ICAgICBBU1NFUlQobmV3U3RhY2suc2l6ZSgpID09IGlubGluZVNpZ25hdHVyZS0+YXJndW1lbnRD
b3VudCgpKTsKIApAQCAtMTQzMyw3ICsxNDM5LDcgQEAgRk9SX0VBQ0hfV0FTTV9NRU1PUllfU1RP
UkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIHVpbnQzMl90IGV4Y2VwdGlvbkluZGV4OwogICAg
ICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRXhjZXB0aW9uSW5kZXgoZXhjZXB0
aW9uSW5kZXgpKTsKICAgICAgICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1faW5mby50eXBlSW5k
ZXhGcm9tRXhjZXB0aW9uSW5kZXhTcGFjZShleGNlcHRpb25JbmRleCk7Ci0gICAgICAgIGNvbnN0
IFR5cGVEZWZpbml0aW9uJiBleGNlcHRpb25TaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246Omdl
dCh0eXBlSW5kZXgpOworICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgZXhjZXB0aW9uU2ln
bmF0dXJlID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUluZGV4KS5leHBhbmQoKTsKIAogICAg
ICAgICBDb250cm9sRW50cnkmIGNvbnRyb2xFbnRyeSA9IG1fY29udHJvbFN0YWNrLmxhc3QoKTsK
ICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJTF9JRighaXNUcnlPckNhdGNoKGNvbnRyb2xFbnRy
eS5jb250cm9sRGF0YSksICJjYXRjaCBibG9jayBpc24ndCBhc3NvY2lhdGVkIHRvIGEgdHJ5Iik7
CkBAIC0xNjg3LDcgKzE2OTMsNyBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+OjpwYXJz
ZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAgdWludDMy
X3QgZXhjZXB0aW9uSW5kZXg7CiAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFy
c2VFeGNlcHRpb25JbmRleChleGNlcHRpb25JbmRleCkpOwogICAgICAgICBUeXBlSW5kZXggdHlw
ZUluZGV4ID0gbV9pbmZvLnR5cGVJbmRleEZyb21FeGNlcHRpb25JbmRleFNwYWNlKGV4Y2VwdGlv
bkluZGV4KTsKLSAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGV4Y2VwdGlvblNpZ25hdHVy
ZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCk7CisgICAgICAgIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiBleGNlcHRpb25TaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRpb246OmdldCh0eXBl
SW5kZXgpLmV4cGFuZCgpOwogCiAgICAgICAgIGlmIChtX3VucmVhY2hhYmxlQmxvY2tzID4gMSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUluc3RhbmNlLmNwcAppbmRleCA3M2JhOWJkMjEzZTU1NDZkNTUwNTkxMzE3NWI4YmIyY2ZmOWJh
YmU5Li4wYjE2NTMzNjYzNThjNDBhMWY3ODVmOTlkNDUyZmY5YTUzYjBkYTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JbnN0YW5jZS5jcHAKQEAgLTIzMyw2ICsyMzMsNyBA
QCB2b2lkIEluc3RhbmNlOjppbml0RWxlbWVudFNlZ21lbnQodWludDMyX3QgdGFibGVJbmRleCwg
Y29uc3QgRWxlbWVudCYgc2VnbWVudCwgdQogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTEwCiAgICAgICAgIHVpbnQzMl90IGZ1bmN0aW9uSW5k
ZXggPSBzZWdtZW50LmZ1bmN0aW9uSW5kaWNlc1tzcmNJbmRleF07CiAgICAgICAgIFR5cGVJbmRl
eCB0eXBlSW5kZXggPSBtX21vZHVsZS0+dHlwZUluZGV4RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShm
dW5jdGlvbkluZGV4KTsKKyAgICAgICAgY29uc3QgYXV0byYgc2lnbmF0dXJlID0gVHlwZUluZm9y
bWF0aW9uOjpnZXRGdW5jdGlvblNpZ25hdHVyZSh0eXBlSW5kZXgpOwogICAgICAgICBpZiAoaXNJ
bXBvcnRGdW5jdGlvbihmdW5jdGlvbkluZGV4KSkgewogICAgICAgICAgICAgSlNPYmplY3QqIGZ1
bmN0aW9uSW1wb3J0ID0gaW1wb3J0RnVuY3Rpb248V3JpdGVCYXJyaWVyPEpTT2JqZWN0Pj4oZnVu
Y3Rpb25JbmRleCktPmdldCgpOwogICAgICAgICAgICAgaWYgKGlzV2ViQXNzZW1ibHlIb3N0RnVu
Y3Rpb24oZnVuY3Rpb25JbXBvcnQpKSB7CkBAIC0yNTgsNyArMjU5LDYgQEAgdm9pZCBJbnN0YW5j
ZTo6aW5pdEVsZW1lbnRTZWdtZW50KHVpbnQzMl90IHRhYmxlSW5kZXgsIGNvbnN0IEVsZW1lbnQm
IHNlZ21lbnQsIHUKIAogICAgICAgICBDYWxsZWUmIGVtYmVkZGVyRW50cnlwb2ludENhbGxlZSA9
IGNhbGxlZUdyb3VwKCktPmVtYmVkZGVyRW50cnlwb2ludENhbGxlZUZyb21GdW5jdGlvbkluZGV4
U3BhY2UoZnVuY3Rpb25JbmRleCk7CiAgICAgICAgIFdhc21Ub1dhc21JbXBvcnRhYmxlRnVuY3Rp
b246OkxvYWRMb2NhdGlvbiBlbnRyeXBvaW50TG9hZExvY2F0aW9uID0gY2FsbGVlR3JvdXAoKS0+
ZW50cnlwb2ludExvYWRMb2NhdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRl
eCk7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0
RnVuY3Rpb25TaWduYXR1cmUodHlwZUluZGV4KTsKICAgICAgICAgLy8gRklYTUU6IFNheSB3ZSBl
eHBvcnQgbG9jYWwgZnVuY3Rpb24gImZvbyIgYXQgZnVuY3Rpb24gaW5kZXggMC4KICAgICAgICAg
Ly8gV2hhdCBpZiB3ZSBhbHNvIHNldCBpdCB0byB0aGUgdGFibGUgYW4gRWxlbWVudCB3LyBpbmRl
eCAwLgogICAgICAgICAvLyBEb2VzIChuZXcgSW5zdGFuY2UoLi4uKSkuZXhwb3J0cy5mb28gPT09
IHRhYmxlLmdldCgwKT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludEdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJ
bnRHZW5lcmF0b3IuY3BwCmluZGV4IGQzNzNmYWVlODE2ODE4ZmFhZTI2NGVkZTNiOTFjYTQ5NTU0
YTZkNTguLmE2NjE2ODI4OWZkYTBkNjJmNjNhZmRkYjY3ZmU2YTA1MjMwMGMzNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAt
NjI3LDYgKzYyNyw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNh
bGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OlZvaWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OlN0cnVjdDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVjOgogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH07CkBAIC02
ODYsNiArNjg3LDcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2Fs
bGVyKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBzaWduYXR1cmUKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6Vm9pZDoKICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6U3RydWN0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzE3
LDYgKzcxOSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxl
cihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgY2FzZSBU
eXBlS2luZDo6UnR0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzc2LDYg
Kzc3OSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlZShj
b25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKICAgICAgICAgY2FzZSBUeXBl
S2luZDo6UnR0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtODI4LDYgKzgz
Miw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZEFyZ3VtZW50cyhjb25zdCBUeXBlRGVmaW5p
dGlvbiYgc2lnbmF0dXJlKSAtPiBQYXJ0aWFsUmVzCiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlZv
aWQ6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAgICAgICAgIGNhc2UgVHlwZUtpbmQ6
OlN0cnVjdDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6UmVjOgogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KQEAgLTEzNDcsMTYgKzEz
NTIsMTcgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRh
YmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJgogewogICAgIEV4cHJlc3Npb25UeXBlIGNh
bGxlZUluZGV4ID0gYXJncy50YWtlTGFzdCgpOwogCi0gICAgQVNTRVJUKHNpZ25hdHVyZS5hczxG
dW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsKKyAg
ICBjb25zdCBhdXRvJiBmdW5jdGlvblNpZ25hdHVyZSA9ICpzaWduYXR1cmUuZXhwYW5kKCkuYXM8
RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgQVNTRVJUKGZ1bmN0aW9uU2lnbmF0dXJlLmFyZ3Vt
ZW50Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7CiAgICAgQVNTRVJUKG1faW5mby50YWJsZUNvdW50
KCkgPiB0YWJsZUluZGV4KTsKICAgICBBU1NFUlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50
eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAKLSAgICBMTEludENhbGxJbmZv
cm1hdGlvbiBpbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKCpzaWduYXR1cmUuYXM8RnVu
Y3Rpb25TaWduYXR1cmU+KCkpOworICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxs
SW5mb3JtYXRpb25Gb3JDYWxsZXIoZnVuY3Rpb25TaWduYXR1cmUpOwogICAgIHVuaWZ5VmFsdWVz
V2l0aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKICAgICBpZiAoQ29udGV4dDo6dXNlRmFz
dFRMUygpKQotICAgICAgICBXYXNtQ2FsbEluZGlyZWN0OjplbWl0KHRoaXMsIGNhbGxlZUluZGV4
LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKCpzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1
cmU+KCkpLCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIHRh
YmxlSW5kZXgpOworICAgICAgICBXYXNtQ2FsbEluZGlyZWN0OjplbWl0KHRoaXMsIGNhbGxlZUlu
ZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZz
ZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgdGFibGVJbmRleCk7CiAgICAgZWxzZQot
ICAgICAgICBXYXNtQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1f
Y29kZUJsb2NrLT5hZGRTaWduYXR1cmUoKnNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4o
KSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgdGFibGVJ
bmRleCk7CisgICAgICAgIFdhc21DYWxsSW5kaXJlY3ROb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWVJ
bmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUpLCBpbmZvLnN0YWNrT2Zm
c2V0LCBpbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMsIHRhYmxlSW5kZXgpOwogICAgIGluZm8u
Y29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKIAogICAgIHJldHVybiB7IH07CkBAIC0xMzY2LDEyICsx
MzcyLDEzIEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxSZWYoY29uc3QgVHlwZURlZmlu
aXRpb24mIHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpCiB7CiAgICAgRXhwcmVzc2lvblR5cGUg
Y2FsbGVlID0gYXJncy50YWtlTGFzdCgpOwogCi0gICAgTExJbnRDYWxsSW5mb3JtYXRpb24gaW5m
byA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcigqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0
dXJlPigpKTsKKyAgICBjb25zdCBhdXRvJiBmdW5jdGlvblNpZ25hdHVyZSA9ICpzaWduYXR1cmUu
ZXhwYW5kKCkuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7CisgICAgTExJbnRDYWxsSW5mb3JtYXRp
b24gaW5mbyA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihmdW5jdGlvblNpZ25hdHVyZSk7CiAg
ICAgdW5pZnlWYWx1ZXNXaXRoQmxvY2soaW5mby5hcmd1bWVudHMsIGFyZ3MpOwogICAgIGlmIChD
b250ZXh0Ojp1c2VGYXN0VExTKCkpCi0gICAgICAgIFdhc21DYWxsUmVmOjplbWl0KHRoaXMsIGNh
bGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZSgqc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2ln
bmF0dXJlPigpKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRz
KTsKKyAgICAgICAgV2FzbUNhbGxSZWY6OmVtaXQodGhpcywgY2FsbGVlLCBtX2NvZGVCbG9jay0+
YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZT
dGFja0FyZ3VtZW50cyk7CiAgICAgZWxzZQotICAgICAgICBXYXNtQ2FsbFJlZk5vVGxzOjplbWl0
KHRoaXMsIGNhbGxlZSwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZSgqc2lnbmF0dXJlLmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpKSwgaW5mby5zdGFja09mZnNldCwgaW5mby5udW1iZXJPZlN0YWNr
QXJndW1lbnRzKTsKKyAgICAgICAgV2FzbUNhbGxSZWZOb1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWUs
IG1fY29kZUJsb2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgaW5mby5zdGFja09mZnNldCwg
aW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKICAgICBpbmZvLmNvbW1pdFJlc3VsdHMocmVz
dWx0cyk7CiAKICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtTExJbnRQbGFuLmNwcAppbmRleCA4YjQzNmQyZGNmNTZlZjYyZWQyZTQ0NzI4YjQ0MTMxNWZj
Yzk4MzdhLi5jMTE3ZTNhZjQ1YjIwODUxYWYwZjk2ZmRlOTc1NTM0Mzc5MTdiZmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTExJbnRQbGFuLmNwcApAQCAtMTQ5LDcgKzE0
OSw3IEBAIHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNvbXBpbGF0aW9uKCkKICAgICBmb3Ig
KHVpbnQzMl90IGZ1bmN0aW9uSW5kZXggPSAwOyBmdW5jdGlvbkluZGV4IDwgbV9tb2R1bGVJbmZv
cm1hdGlvbi0+ZnVuY3Rpb25zLnNpemUoKTsgZnVuY3Rpb25JbmRleCsrKSB7CiAgICAgICAgIGlm
IChtX2V4cG9ydGVkRnVuY3Rpb25JbmRpY2VzLmNvbnRhaW5zKGZ1bmN0aW9uSW5kZXgpIHx8IG1f
bW9kdWxlSW5mb3JtYXRpb24tPnJlZmVyZW5jZWRGdW5jdGlvbnMoKS5jb250YWlucyhmdW5jdGlv
bkluZGV4KSkgewogICAgICAgICAgICAgVHlwZUluZGV4IHR5cGVJbmRleCA9IG1fbW9kdWxlSW5m
b3JtYXRpb24tPmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1tmdW5jdGlvbkluZGV4XTsKLSAg
ICAgICAgICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBUeXBlSW5mb3JtYXRp
b246OmdldCh0eXBlSW5kZXgpOworICAgICAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHNp
Z25hdHVyZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGVJbmRleCkuZXhwYW5kKCk7CiAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnMgaml0OwogICAgICAgICAgICAgLy8gVGhlIExMSW50IGFsd2F5
cyBib3VuZHMgY2hlY2tzCiAgICAgICAgICAgICBNZW1vcnlNb2RlIG1vZGUgPSBNZW1vcnlNb2Rl
OjpCb3VuZHNDaGVja2luZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21MaW1pdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MaW1pdHMuaApp
bmRleCA1ODcwMzQ3MzQ2NjM4ZDRhMmRlNTMyMGI0NTM3NDY0MzdmZWFkODI1Li5jMjg0OTU3ZDEz
YTFhMjU3ZjYyOTBlZjI0NjRlNzJhMGY1YjI1Y2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtTGltaXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUxpbWl0cy5oCkBAIC00NSw2ICs0NSw3IEBAIGNvbnN0ZXhwciBzaXplX3QgbWF4RXhj
ZXB0aW9ucyA9IDEwMDAwMDsKIGNvbnN0ZXhwciBzaXplX3QgbWF4R2xvYmFscyA9IDEwMDAwMDA7
CiBjb25zdGV4cHIgc2l6ZV90IG1heERhdGFTZWdtZW50cyA9IDEwMDAwMDsKIGNvbnN0ZXhwciBz
aXplX3QgbWF4U3RydWN0RmllbGRDb3VudCA9IDEwMDAwOworY29uc3RleHByIHNpemVfdCBtYXhS
ZWN1cnNpb25Hcm91cENvdW50ID0gMTAwMDA7CiAKIGNvbnN0ZXhwciBzaXplX3QgbWF4U3RyaW5n
U2l6ZSA9IDEwMDAwMDsKIGNvbnN0ZXhwciBzaXplX3QgbWF4TW9kdWxlU2l6ZSA9IDEwMjQgKiAx
MDI0ICogMTAyNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYXJzZXIuaAppbmRleCA2
YTY0OGYxMGI0MTlkMGY4MGQyNmIxYjMyYjFiNGViNzllZWZhYThlLi42MDgxOTRjZjVhNTJjZGVi
NGI2ZTFiYzBjNzNhMjBiZmFkNjk2Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVBhcnNlci5oCkBAIC02NCw2ICs2NCwzMCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAKIHByb3RlY3RlZDoKKyAgICBzdHJ1Y3QgUmVj
dXJzaW9uR3JvdXBJbmZvcm1hdGlvbiB7CisgICAgICAgIGJvb2wgaW5SZWN1cnNpb25Hcm91cDsK
KyAgICAgICAgdWludDMyX3Qgc3RhcnQ7CisgICAgICAgIHVpbnQzMl90IGVuZDsKKyAgICB9Owor
CisgICAgLy8gUkFJSSBjbGFzcyB0byBoZWxwIHNldCByZWN1cnNpb24gZ3JvdXAgaW5mb3JtYXRp
b24uCisgICAgY2xhc3MgUmVjdXJzaW9uR3JvdXBHdWFyZCB7CisgICAgcHVibGljOgorICAgICAg
ICBSZWN1cnNpb25Hcm91cEd1YXJkKFBhcnNlciogcGFyc2VyLCBSZWN1cnNpb25Hcm91cEluZm9y
bWF0aW9uIGluZm8pCisgICAgICAgICAgICA6IG1fcGFyc2VyKHBhcnNlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9wYXJzZXItPm1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbiA9IGluZm87
CisgICAgICAgIH0KKworICAgICAgICB+UmVjdXJzaW9uR3JvdXBHdWFyZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fcGFyc2VyLT5tX3JlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24gPSB7IH07
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFBhcnNlciogbV9wYXJzZXI7Cisg
ICAgfTsKKwogICAgIFBhcnNlcihjb25zdCB1aW50OF90Kiwgc2l6ZV90KTsKIAogICAgIGJvb2wg
V0FSTl9VTlVTRURfUkVUVVJOIGNvbnN1bWVDaGFyYWN0ZXIoY2hhcik7CkBAIC0xMTMsNiArMTM3
LDggQEAgcHJpdmF0ZToKICAgICBzaXplX3QgbV9zb3VyY2VMZW5ndGg7CiAgICAgLy8gV2Uga2Vl
cCBhIGxvY2FsIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIHRhYmxlIHNvIHdlIGRvbid0IGhhdmUg
dG8gZmV0Y2ggaXQgdG8gZmluZCB0aHVuayB0eXBlcy4KICAgICBjb25zdCBUeXBlSW5mb3JtYXRp
b24mIG1fdHlwZUluZm9ybWF0aW9uOworICAgIC8vIFVzZWQgdG8gdHJhY2sgd2hldGhlciB3ZSBh
cmUgaW4gYSByZWN1cnNpb24gZ3JvdXAgYW5kIHRoZSBncm91cCdzIHR5cGUgaW5kaWNlcywgaWYg
YW55LgorICAgIFJlY3Vyc2lvbkdyb3VwSW5mb3JtYXRpb24gbV9yZWN1cnNpb25Hcm91cEluZm9y
bWF0aW9uOwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgU3VjY2Vzc1R5cGU+CkBAIC0xMjAsNiAr
MTQ2LDcgQEAgQUxXQVlTX0lOTElORSBQYXJzZXI8U3VjY2Vzc1R5cGU+OjpQYXJzZXIoY29uc3Qg
dWludDhfdCogc291cmNlQnVmZmVyLCBzaXplX3Qgc28KICAgICA6IG1fc291cmNlKHNvdXJjZUJ1
ZmZlcikKICAgICAsIG1fc291cmNlTGVuZ3RoKHNvdXJjZUxlbmd0aCkKICAgICAsIG1fdHlwZUlu
Zm9ybWF0aW9uKFR5cGVJbmZvcm1hdGlvbjo6c2luZ2xldG9uKCkpCisgICAgLCBtX3JlY3Vyc2lv
bkdyb3VwSW5mb3JtYXRpb24oeyB9KQogewogfQogCkBAIC0zMTIsNyArMzM5LDcgQEAgQUxXQVlT
X0lOTElORSBib29sIFBhcnNlcjxTdWNjZXNzVHlwZT46OnBhcnNlSGVhcFR5cGUoY29uc3QgTW9k
dWxlSW5mb3JtYXRpb24mIGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlm
IChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnR5cGVDb3VudCgpKQorICAg
IGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGhlYXBUeXBlKSA+PSBpbmZvLnR5cGVDb3VudCgpICYm
ICghbV9yZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uLmluUmVjdXJzaW9uR3JvdXAgfHwgIShzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaGVhcFR5cGUpID49IG1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlv
bi5zdGFydCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaGVhcFR5cGUpIDw9IG1fcmVjdXJzaW9u
R3JvdXBJbmZvcm1hdGlvbi5lbmQpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVz
dWx0ID0gaGVhcFR5cGU7CkBAIC0zMzksNyArMzY2LDE5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBQ
YXJzZXI8U3VjY2Vzc1R5cGU+OjpwYXJzZVZhbHVlVHlwZShjb25zdCBNb2R1bGVJbmZvcm1hdGlv
biYKICAgICAgICAgaW50MzJfdCBoZWFwVHlwZTsKICAgICAgICAgaWYgKCFwYXJzZUhlYXBUeXBl
KGluZm8sIGhlYXBUeXBlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdHlw
ZUluZGV4ID0gaGVhcFR5cGUgPCAwID8gc3RhdGljX2Nhc3Q8VHlwZUluZGV4PihoZWFwVHlwZSkg
OiBUeXBlSW5mb3JtYXRpb246OmdldChpbmZvLnR5cGVTaWduYXR1cmVzW2hlYXBUeXBlXS5nZXQo
KSk7CisgICAgICAgIGlmIChoZWFwVHlwZSA8IDApCisgICAgICAgICAgICB0eXBlSW5kZXggPSBz
dGF0aWNfY2FzdDxUeXBlSW5kZXg+KGhlYXBUeXBlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAvLyBGb3IgcmVjdXJzaXZlIHJlZmVyZW5jZXMgaW5zaWRlIHJlY3Vyc2lvbiBncm91cHMs
IHdlIHJlLXVzZSB0aGUKKyAgICAgICAgICAgIC8vIGByZWNgIHR5cGUgY29kZSB0byBiZSB0aGUg
aW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYHJlYy48aT5gCisgICAgICAgICAgICAvLyBpbiB0
aGUgZm9ybWFsIHNlbWFudGljcy4gVGhlc2Ugc2hvdWxkIG5vdCBsZWFrIG91dCwgYXMgdGhleSBh
cmUKKyAgICAgICAgICAgIC8vIHJlcGxhY2VkIHdpdGggcmVhbCB0eXBlIGluZGljZXMgZHVyaW5n
IHR5cGUgdW5yb2xsaW5nL2V4cGFuc2lvbi4KKyAgICAgICAgICAgIGlmIChtX3JlY3Vyc2lvbkdy
b3VwSW5mb3JtYXRpb24uaW5SZWN1cnNpb25Hcm91cCAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
aGVhcFR5cGUpID49IG1fcmVjdXJzaW9uR3JvdXBJbmZvcm1hdGlvbi5zdGFydCkgeworICAgICAg
ICAgICAgICAgIHR5cGVLaW5kID0gVHlwZUtpbmQ6OlJlYzsKKyAgICAgICAgICAgICAgICB0eXBl
SW5kZXggPSBzdGF0aWNfY2FzdDxUeXBlSW5kZXg+KGhlYXBUeXBlIC0gbV9yZWN1cnNpb25Hcm91
cEluZm9ybWF0aW9uLnN0YXJ0KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHR5cGVJbmRleCA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KGluZm8udHlwZVNpZ25hdHVyZXNbaGVh
cFR5cGVdLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlHQygpICYmIHR5cGVLaW5kID09IFR5cGVLaW5kOjpSdHQpIHsKICAgICAgICAgdHlw
ZUtpbmQgPSBUeXBlS2luZDo6UnR0OwogICAgICAgICBpc051bGxhYmxlID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5jcHAKaW5kZXgg
ZDJkYjVkYmY2Yzk2MTk3NjBlZDM0MjlkMDA4YWFiYjhjNjYxYTMwYi4uMmZhZGQ4ZDRiZWZiMjM5
MDgwZjg3NTMxNDAxOTRjYjc4YWI5MDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21TZWN0aW9uUGFyc2VyLmNwcApAQCAtNjMsMTIgKzYzLDIzIEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VUeXBlKCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICAgICAgV0FT
TV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZVN0cnVjdFR5cGUoaSwgc2lnbmF0dXJlKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6
IHsKKyAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNzZW1ibHlHQygpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWlsKGksICJ0aCB0eXBlIGZhaWxlZCB0byBwYXJzZSBiZWNhdXNl
IHJlYyB0eXBlcyBhcmUgbm90IGVuYWJsZWQiKTsKKworICAgICAgICAgICAgV0FTTV9GQUlMX0lG
X0hFTFBFUl9GQUlMUyhwYXJzZVJlY3Vyc2lvbkdyb3VwKGksIHNpZ25hdHVyZSkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWlsKGksICJ0aCBUeXBlIGlzIG5vbi1GdW5jICIsIHR5cGVLaW5kKTsKICAgICAgICAg
fQogCiAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXNpZ25hdHVyZSwgImNhbid0IGFsbG9j
YXRlIGVub3VnaCBtZW1vcnkgZm9yIFR5cGUgc2VjdGlvbidzICIsIGksICJ0aCBzaWduYXR1cmUi
KTsKLSAgICAgICAgbV9pbmZvLT50eXBlU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0
dXJlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAvLyBSZWN1cnNpb24gZ3JvdXAgcGFyc2lu
ZyB3aWxsIGFwcGVuZCB0aGUgZW50cmllcyBpdHNlbGYsIGFzIHRoZXJlIG1heQorICAgICAgICAv
LyBiZSBtdWx0aXBsZSBlbnRyaWVzIHRoYXQgbmVlZCB0byBiZSBhZGRlZCB0byB0aGUgdHlwZSBz
ZWN0aW9uIGZvcgorICAgICAgICAvLyBlYWNoIHJlY3Vyc2lvbiBncm91cC4KKyAgICAgICAgaWYg
KCFzaWduYXR1cmUtPmlzPFJlY3Vyc2lvbkdyb3VwPigpKQorICAgICAgICAgICAgbV9pbmZvLT50
eXBlU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0dXJlLnJlbGVhc2VOb25OdWxsKCkp
OwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpAQCAtNDkxLDcgKzUwMiw3IEBAIGF1dG8gU2Vj
dGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlhbFJlc3VsdAogICAgICAgICBjYXNl
IDB4MDU6IHsKICAgICAgICAgICAgIFR5cGUgcmVmVHlwZTsKICAgICAgICAgICAgIFdBU01fUEFS
U0VSX0ZBSUxfSUYoIXBhcnNlUmVmVHlwZShtX2luZm8sIHJlZlR5cGUpLCAiY2FuJ3QgcGFyc2Ug
cmVmdHlwZSBpbiBlbGVtIHNlY3Rpb24iKTsKLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxf
SUYoIXJlZlR5cGUuaXNGdW5jcmVmKCksICJyZWZ0eXBlIGluIGVsZW1lbnQgc2VjdGlvbiBzaG91
bGQgYmUgZnVuY3JlZiIpOworICAgICAgICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighaXNGdW5j
cmVmKHJlZlR5cGUpICYmIHJlZlR5cGUuaXNOdWxsYWJsZSgpLCAicmVmdHlwZSBpbiBlbGVtZW50
IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKIAogICAgICAgICAgICAgdWludDMyX3QgaW5k
ZXhDb3VudDsKICAgICAgICAgICAgIFdBU01fRkFJTF9JRl9IRUxQRVJfRkFJTFMocGFyc2VJbmRl
eENvdW50Rm9yRWxlbWVudFNlY3Rpb24oaW5kZXhDb3VudCwgZWxlbWVudE51bSkpOwpAQCAtNTEz
LDcgKzUyNCw3IEBAIGF1dG8gU2VjdGlvblBhcnNlcjo6cGFyc2VFbGVtZW50KCkgLT4gUGFydGlh
bFJlc3VsdAogCiAgICAgICAgICAgICBUeXBlIHJlZlR5cGU7CiAgICAgICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCByZWZUeXBlKSwgImNhbid0IHBhcnNl
IHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7Ci0gICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlM
X0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVmdHlwZSBpbiBlbGVtZW50IHNlY3Rpb24gc2hv
dWxkIGJlIGZ1bmNyZWYiKTsKKyAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIWlzRnVu
Y3JlZihyZWZUeXBlKSAmJiByZWZUeXBlLmlzTnVsbGFibGUoKSwgInJlZnR5cGUgaW4gZWxlbWVu
dCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGlu
ZGV4Q291bnQ7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlSW5k
ZXhDb3VudEZvckVsZW1lbnRTZWN0aW9uKGluZGV4Q291bnQsIGVsZW1lbnROdW0pKTsKQEAgLTUy
OSw3ICs1NDAsNyBAQCBhdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlRWxlbWVudCgpIC0+IFBhcnRp
YWxSZXN1bHQKICAgICAgICAgY2FzZSAweDA3OiB7CiAgICAgICAgICAgICBUeXBlIHJlZlR5cGU7
CiAgICAgICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwYXJzZVJlZlR5cGUobV9pbmZvLCBy
ZWZUeXBlKSwgImNhbid0IHBhcnNlIHJlZnR5cGUgaW4gZWxlbSBzZWN0aW9uIik7Ci0gICAgICAg
ICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFyZWZUeXBlLmlzRnVuY3JlZigpLCAicmVmdHlwZSBp
biBlbGVtZW50IHNlY3Rpb24gc2hvdWxkIGJlIGZ1bmNyZWYiKTsKKyAgICAgICAgICAgIFdBU01f
UEFSU0VSX0ZBSUxfSUYoIWlzRnVuY3JlZihyZWZUeXBlKSAmJiByZWZUeXBlLmlzTnVsbGFibGUo
KSwgInJlZnR5cGUgaW4gZWxlbWVudCBzZWN0aW9uIHNob3VsZCBiZSBmdW5jcmVmIik7CiAKICAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4Q291bnQ7CiAgICAgICAgICAgICBXQVNNX0ZBSUxfSUZf
SEVMUEVSX0ZBSUxTKHBhcnNlSW5kZXhDb3VudEZvckVsZW1lbnRTZWN0aW9uKGluZGV4Q291bnQs
IGVsZW1lbnROdW0pKTsKQEAgLTcyNCw2ICs3MzUsNTEgQEAgYXV0byBTZWN0aW9uUGFyc2VyOjpw
YXJzZVN0cnVjdFR5cGUodWludDMyX3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4m
IHMKICAgICByZXR1cm4geyB9OwogfQogCithdXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlUmVjdXJz
aW9uR3JvdXAodWludDMyX3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mIHJlY3Vy
c2lvbkdyb3VwKSAtPiBQYXJ0aWFsUmVzdWx0Cit7CisgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVdl
YkFzc2VtYmx5R0MoKSk7CisKKyAgICB1aW50MzJfdCB0eXBlQ291bnQ7CisgICAgV0FTTV9QQVJT
RVJfRkFJTF9JRighcGFyc2VWYXJVSW50MzIodHlwZUNvdW50KSwgImNhbid0IGdldCAiLCBwb3Np
dGlvbiwgInRoIHJlY3Vyc2lvbiBncm91cCdzIHR5cGUgY291bnQiKTsKKyAgICBXQVNNX1BBUlNF
Ul9GQUlMX0lGKHR5cGVDb3VudCA+IG1heFJlY3Vyc2lvbkdyb3VwQ291bnQsICJudW1iZXIgb2Yg
dHlwZXMgZm9yIHJlY3Vyc2lvbiBncm91cCBhdCBwb3NpdGlvbiAiLCBwb3NpdGlvbiwgIiBpcyB0
b28gYmlnICIsIHR5cGVDb3VudCwgIiBtYXhpbXVtICIsIG1heFJlY3Vyc2lvbkdyb3VwQ291bnQp
OworICAgIFZlY3RvcjxUeXBlSW5kZXg+IHR5cGVzOworICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYo
IXR5cGVzLnRyeVJlc2VydmVDYXBhY2l0eSh0eXBlQ291bnQpLCAiY2FuJ3QgYWxsb2NhdGUgZW5v
dWdoIG1lbW9yeSBmb3IgcmVjdXJzaW9uIGdyb3VwICIsIHR5cGVDb3VudCwgIiBlbnRyaWVzIik7
CisKKyAgICBSZWN1cnNpb25Hcm91cEd1YXJkIGd1YXJkID0gUmVjdXJzaW9uR3JvdXBHdWFyZCh0
aGlzLCBSZWN1cnNpb25Hcm91cEluZm9ybWF0aW9uIHsgdHJ1ZSwgbV9pbmZvLT50eXBlQ291bnQo
KSwgbV9pbmZvLT50eXBlQ291bnQoKSArIHR5cGVDb3VudCB9KTsKKworICAgIGZvciAodWludDMy
X3QgaSA9IDA7IGkgPCB0eXBlQ291bnQ7ICsraSkgeworICAgICAgICBpbnQ4X3QgdHlwZUtpbmQ7
CisgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIXBhcnNlSW50Nyh0eXBlS2luZCksICJjYW4n
dCBnZXQgcmVjdXJzaW9uIGdyb3VwJ3MgIiwgaSwgInRoIFR5cGUncyB0eXBlIik7CisgICAgICAg
IFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gc2lnbmF0dXJlOworICAgICAgICBzd2l0Y2ggKHN0YXRp
Y19jYXN0PFR5cGVLaW5kPih0eXBlS2luZCkpIHsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVu
YzogeworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hFTFBFUl9GQUlMUyhwYXJzZUZ1bmN0aW9u
VHlwZShpLCBzaWduYXR1cmUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDogeworICAgICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyhwYXJzZVN0cnVjdFR5cGUoaSwgc2lnbmF0dXJlKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
aWwoaSwgInRoIFR5cGUgaXMgbm9uLUZ1bmMgIiwgdHlwZUtpbmQpOworICAgICAgICB9CisKKyAg
ICAgICAgV0FTTV9QQVJTRVJfRkFJTF9JRighc2lnbmF0dXJlLCAiY2FuJ3QgYWxsb2NhdGUgZW5v
dWdoIG1lbW9yeSBmb3IgcmVjdXJzaW9uIGdyb3VwJ3MgIiwgaSwgInRoIHNpZ25hdHVyZSIpOwor
ICAgICAgICB0eXBlcy51bmNoZWNrZWRBcHBlbmQoc2lnbmF0dXJlLT5pbmRleCgpKTsKKyAgICB9
CisKKyAgICByZWN1cnNpb25Hcm91cCA9IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURlZmluaXRpb25G
b3JSZWN1cnNpb25Hcm91cCh0eXBlcyk7CisKKyAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFtX2lu
Zm8tPnR5cGVTaWduYXR1cmVzLnRyeVJlc2VydmVDYXBhY2l0eShtX2luZm8tPnR5cGVTaWduYXR1
cmVzLmNhcGFjaXR5KCkgKyB0eXBlQ291bnQgLSAxKSwgImNhbid0IGFsbG9jYXRlIGVub3VnaCBt
ZW1vcnkgZm9yIHJlY3Vyc2lvbiBncm91cCdzICIsIHR5cGVDb3VudCwgIiB0eXBlIGluZGljZXMi
KTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgdHlwZUNvdW50OyArK2kpIHsKKyAgICAg
ICAgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBwcm9qZWN0aW9uID0gVHlwZUluZm9ybWF0aW9uOjp0
eXBlRGVmaW5pdGlvbkZvclByb2plY3Rpb24ocmVjdXJzaW9uR3JvdXAtPmluZGV4KCksIGkpOwor
ICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lGKCFwcm9qZWN0aW9uLCAiY2FuJ3QgYWxsb2NhdGUg
ZW5vdWdoIG1lbW9yeSBmb3IgcmVjdXJzaW9uIGdyb3VwJ3MgIiwgaSwgInRoIHByb2plY3Rpb24i
KTsKKyAgICAgICAgbV9pbmZvLT50eXBlU2lnbmF0dXJlcy51bmNoZWNrZWRBcHBlbmQocHJvamVj
dGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCiBh
dXRvIFNlY3Rpb25QYXJzZXI6OnBhcnNlSTMySW5pdEV4cHJGb3JFbGVtZW50U2VjdGlvbihzdGQ6
Om9wdGlvbmFsPEkzMkluaXRFeHByPiYgaW5pdEV4cHIpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAg
ICByZXR1cm4gcGFyc2VJMzJJbml0RXhwcihpbml0RXhwciwgIkVsZW1lbnQgaW5pdF9leHByIG11
c3QgcHJvZHVjZSBhbiBpMzIiX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21TZWN0aW9uUGFyc2VyLmgKaW5kZXggOTU2YTUwMjg3Y2I5MjYzZDI5OGVmOTE2YjYzZWRkZDg4
YmQ1Y2RmNC4uNWMzODA0OThhNzU4MjRhZGYzM2NiMmY3NmE0MDdhYmFjNjE1MDllZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNlY3Rpb25QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2VjdGlvblBhcnNlci5oCkBAIC03MSw2
ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBwYXJzZUZ1bmN0aW9uVHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0
aW9uPiYpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlU3RydWN0
VHlwZSh1aW50MzJfdCBwb3NpdGlvbiwgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiYpOworICAgIFBh
cnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIHBhcnNlUmVjdXJzaW9uR3JvdXAodWludDMy
X3QgcG9zaXRpb24sIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4mKTsKIAogICAgIFBhcnRpYWxSZXN1
bHQgV0FSTl9VTlVTRURfUkVUVVJOIHZhbGlkYXRlRWxlbWVudFRhYmxlSWR4KHVpbnQzMl90KTsK
ICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBwYXJzZUkzMkluaXRFeHByRm9y
RWxlbWVudFNlY3Rpb24oc3RkOjpvcHRpb25hbDxJMzJJbml0RXhwcj4mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAKaW5kZXggNjQxN2Y4MGIzNWE3YTMy
OWVhM2YwNGJlOTEzZGUyOTFkNjBlMWViOS4uMTBlNTJlYmM0NjllYThjOTkwM2MwMzMwNjY2NDdk
MmM5MzgyMjE2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRo
cy5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGRvV2Fz
bUNhbGxJbmRpcmVjdChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgV2FzbTo6SW5zdGFuYwogICAgICAg
ICBXQVNNX1RIUk9XKFdhc206OkV4Y2VwdGlvblR5cGU6Ok51bGxUYWJsZUVudHJ5KTsKIAogICAg
IGNvbnN0IGF1dG8mIGNhbGxTaWduYXR1cmUgPSBDQUxMRUUoKS0+c2lnbmF0dXJlKHR5cGVJbmRl
eCk7Ci0gICAgaWYgKGNhbGxTaWduYXR1cmUgIT0gV2FzbTo6VHlwZUluZm9ybWF0aW9uOjpnZXRG
dW5jdGlvblNpZ25hdHVyZShmdW5jdGlvbi50eXBlSW5kZXgpKQorICAgIGlmIChjYWxsU2lnbmF0
dXJlLmluZGV4KCkgIT0gZnVuY3Rpb24udHlwZUluZGV4KQogICAgICAgICBXQVNNX1RIUk9XKFdh
c206OkV4Y2VwdGlvblR5cGU6OkJhZFNpZ25hdHVyZSk7CiAKICAgICBpZiAodGFyZ2V0SW5zdGFu
Y2UgIT0gaW5zdGFuY2UpCkBAIC01NDcsNyArNTQ3LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSBkb1dhc21DYWxsUmVmKENhbGxGcmFtZSogY2FsbEZyYW1lLCBXYXNtOjpJbnN0YW5jZSog
Y2EKICAgICBpZiAoY2FsbGVlSW5zdGFuY2UgIT0gY2FsbGVySW5zdGFuY2UpCiAgICAgICAgIGNh
bGxlZUluc3RhbmNlLT5zZXRDYWNoZWRTdGFja0xpbWl0KGNhbGxlckluc3RhbmNlLT5jYWNoZWRT
dGFja0xpbWl0KCkpOwogCi0gICAgQVNTRVJUKFdhc206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0RnVu
Y3Rpb25TaWduYXR1cmUoZnVuY3Rpb24udHlwZUluZGV4KSA9PSBDQUxMRUUoKS0+c2lnbmF0dXJl
KHR5cGVJbmRleCkpOworICAgIEFTU0VSVChmdW5jdGlvbi50eXBlSW5kZXggPT0gQ0FMTEVFKCkt
PnNpZ25hdHVyZSh0eXBlSW5kZXgpLmluZGV4KCkpOwogICAgIFVOVVNFRF9QQVJBTSh0eXBlSW5k
ZXgpOwogICAgIFdBU01fQ0FMTF9SRVRVUk4oY2FsbGVlSW5zdGFuY2UsIGZ1bmN0aW9uLmVudHJ5
cG9pbnRMb2FkTG9jYXRpb24tPmV4ZWN1dGFibGVBZGRyZXNzKCksIFdhc21FbnRyeVB0clRhZyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmlu
aXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9u
LmNwcAppbmRleCBiNDQ4OTFjYzMxZjdkNTFmOWQ1YjJkNTkxNWIzMDBjMzA0MzFiNGJiLi4yNDAz
MjA1MmE3ZjViMDk3NDFjYTAxMzg5YTFlMThiMGI0YTM3OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVmaW5pdGlvbi5jcHAKQEAgLTQ1LDggKzQ1LDE0
IEBAIHZvaWQgVHlwZURlZmluaXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAg
ICBpZiAoaXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpCiAgICAgICAgIHJldHVybiBhczxGdW5jdGlv
blNpZ25hdHVyZT4oKS0+ZHVtcChvdXQpOwogCi0gICAgQVNTRVJUKGlzPFN0cnVjdFR5cGU+KCkp
OwotICAgIHJldHVybiBhczxTdHJ1Y3RUeXBlPigpLT5kdW1wKG91dCk7CisgICAgaWYgKGlzPFN0
cnVjdFR5cGU+KCkpCisgICAgICAgIHJldHVybiBhczxTdHJ1Y3RUeXBlPigpLT5kdW1wKG91dCk7
CisKKyAgICBpZiAoaXM8UmVjdXJzaW9uR3JvdXA+KCkpCisgICAgICAgIHJldHVybiBhczxSZWN1
cnNpb25Hcm91cD4oKS0+ZHVtcChvdXQpOworCisgICAgQVNTRVJUKGlzPFByb2plY3Rpb24+KCkp
OworICAgIHJldHVybiBhczxQcm9qZWN0aW9uPigpLT5kdW1wKG91dCk7CiB9CiAKIFN0cmluZyBG
dW5jdGlvblNpZ25hdHVyZTo6dG9TdHJpbmcoKSBjb25zdApAQCAtODksNiArOTUsMzYgQEAgdm9p
ZCBTdHJ1Y3RUeXBlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgb3V0LnByaW50
KCIpIik7CiB9CiAKK1N0cmluZyBSZWN1cnNpb25Hcm91cDo6dG9TdHJpbmcoKSBjb25zdAorewor
ICAgIHJldHVybiBXVEY6OnRvU3RyaW5nKCp0aGlzKTsKK30KKwordm9pZCBSZWN1cnNpb25Hcm91
cDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOwor
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICBmb3IgKFJlY3Vyc2lvbkdyb3VwQ291bnQgdHlw
ZUluZGV4ID0gMDsgdHlwZUluZGV4IDwgdHlwZUNvdW50KCk7ICsrdHlwZUluZGV4KSB7CisgICAg
ICAgIG91dC5wcmludChjb21tYSk7CisgICAgICAgIFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHR5cGUo
dHlwZUluZGV4KSkuZHVtcChvdXQpOworICAgIH0KKyAgICBvdXQucHJpbnQoIikiKTsKK30KKwor
U3RyaW5nIFByb2plY3Rpb246OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RGOjp0
b1N0cmluZygqdGhpcyk7Cit9CisKK3ZvaWQgUHJvamVjdGlvbjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAoreworICAgIG91dC5wcmludCgiKCIpOworICAgIENvbW1hUHJpbnRlciBjb21t
YTsKKyAgICBUeXBlSW5mb3JtYXRpb246OmdldChyZWN1cnNpb25Hcm91cCgpKS5kdW1wKG91dCk7
CisgICAgb3V0LnByaW50KCIuIiwgaW5kZXgoKSk7CisgICAgb3V0LnByaW50KCIpIik7Cit9CisK
IHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlU2lnbmF0dXJlSGFzaChzaXplX3QgcmV0dXJuQ291bnQs
IGNvbnN0IFR5cGUqIHJldHVyblR5cGVzLCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgVHlw
ZSogYXJndW1lbnRUeXBlcykKIHsKICAgICB1bnNpZ25lZCBhY2N1bXVsYXRvciA9IDB4YTFiY2Vk
ZDh1OwpAQCAtMTE3LDYgKzE1MywyMiBAQCBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZVN0cnVjdFR5
cGVIYXNoKHNpemVfdCBmaWVsZENvdW50LCBjb25zdCBTdHJ1Y3RGaWVsZCogZmllbAogICAgIHJl
dHVybiBhY2N1bXVsYXRvcjsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVSZWN1cnNpb25H
cm91cEhhc2goc2l6ZV90IHR5cGVDb3VudCwgY29uc3QgVHlwZUluZGV4KiB0eXBlcykKK3sKKyAg
ICB1bnNpZ25lZCBhY2N1bXVsYXRvciA9IDB4OWNmYjg5YmI7CisgICAgZm9yICh1aW50MzJfdCBp
ID0gMDsgaSA8IHR5cGVDb3VudDsgKytpKQorICAgICAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFp
ckludEhhc2goYWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDxUeXBlSW5kZXg+OjpoYXNoKHN0YXRp
Y19jYXN0PFR5cGVJbmRleD4odHlwZXNbaV0pKSk7CisgICAgcmV0dXJuIGFjY3VtdWxhdG9yOwor
fQorCitzdGF0aWMgdW5zaWduZWQgY29tcHV0ZVByb2plY3Rpb25IYXNoKFR5cGVJbmRleCByZWN1
cnNpb25Hcm91cCwgUHJvamVjdGlvbkluZGV4IGluZGV4KQoreworICAgIHVuc2lnbmVkIGFjY3Vt
dWxhdG9yID0gMHhiZWFlNmQ0ZTsKKyAgICBhY2N1bXVsYXRvciA9IFdURjo6cGFpckludEhhc2go
YWNjdW11bGF0b3IsIFdURjo6SW50SGFzaDxUeXBlSW5kZXg+OjpoYXNoKHN0YXRpY19jYXN0PFR5
cGVJbmRleD4ocmVjdXJzaW9uR3JvdXApKSk7CisgICAgYWNjdW11bGF0b3IgPSBXVEY6OnBhaXJJ
bnRIYXNoKGFjY3VtdWxhdG9yLCBXVEY6OkludEhhc2g8dWludDMyX3Q+OjpoYXNoKHN0YXRpY19j
YXN0PHVpbnQzMl90PihpbmRleCkpKTsKKyAgICByZXR1cm4gYWNjdW11bGF0b3I7Cit9CisKIHVu
c2lnbmVkIFR5cGVEZWZpbml0aW9uOjpoYXNoKCkgY29uc3QKIHsKICAgICBpZiAoaXM8RnVuY3Rp
b25TaWduYXR1cmU+KCkpIHsKQEAgLTEyNCw5ICsxNzYsMTkgQEAgdW5zaWduZWQgVHlwZURlZmlu
aXRpb246Omhhc2goKSBjb25zdAogICAgICAgICByZXR1cm4gY29tcHV0ZVNpZ25hdHVyZUhhc2go
c2lnbmF0dXJlLT5yZXR1cm5Db3VudCgpLCBzaWduYXR1cmUtPnN0b3JhZ2UoMCksIHNpZ25hdHVy
ZS0+YXJndW1lbnRDb3VudCgpLCBzaWduYXR1cmUtPnN0b3JhZ2Uoc2lnbmF0dXJlLT5yZXR1cm5D
b3VudCgpKSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGlzPFN0cnVjdFR5cGU+KCkpOwotICAgIGNv
bnN0IFN0cnVjdFR5cGUqIHN0cnVjdFR5cGUgPSBhczxTdHJ1Y3RUeXBlPigpOwotICAgIHJldHVy
biBjb21wdXRlU3RydWN0VHlwZUhhc2goc3RydWN0VHlwZS0+ZmllbGRDb3VudCgpLCBzdHJ1Y3RU
eXBlLT5zdG9yYWdlKDApKTsKKyAgICBpZiAoaXM8U3RydWN0VHlwZT4oKSkgeworICAgICAgICBj
b25zdCBTdHJ1Y3RUeXBlKiBzdHJ1Y3RUeXBlID0gYXM8U3RydWN0VHlwZT4oKTsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVTdHJ1Y3RUeXBlSGFzaChzdHJ1Y3RUeXBlLT5maWVsZENvdW50KCksIHN0
cnVjdFR5cGUtPnN0b3JhZ2UoMCkpOworICAgIH0KKworICAgIGlmIChpczxSZWN1cnNpb25Hcm91
cD4oKSkgeworICAgICAgICBjb25zdCBSZWN1cnNpb25Hcm91cCogcmVjdXJzaW9uR3JvdXAgPSBh
czxSZWN1cnNpb25Hcm91cD4oKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVSZWN1cnNpb25Hcm91
cEhhc2gocmVjdXJzaW9uR3JvdXAtPnR5cGVDb3VudCgpLCByZWN1cnNpb25Hcm91cC0+c3RvcmFn
ZSgwKSk7CisgICAgfQorCisgICAgQVNTRVJUKGlzPFByb2plY3Rpb24+KCkpOworICAgIGNvbnN0
IFByb2plY3Rpb24qIHByb2plY3Rpb24gPSBhczxQcm9qZWN0aW9uPigpOworICAgIHJldHVybiBj
b21wdXRlUHJvamVjdGlvbkhhc2gocHJvamVjdGlvbi0+cmVjdXJzaW9uR3JvdXAoKSwgcHJvamVj
dGlvbi0+aW5kZXgoKSk7CiB9CiAKIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZURlZmluaXRp
b246OnRyeUNyZWF0ZUZ1bmN0aW9uU2lnbmF0dXJlKEZ1bmN0aW9uQXJnQ291bnQgcmV0dXJuQ291
bnQsIEZ1bmN0aW9uQXJnQ291bnQgYXJndW1lbnRDb3VudCkKQEAgLTEzNiw3ICsxOTgsNyBAQCBS
ZWZQdHI8VHlwZURlZmluaXRpb24+IFR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVGdW5jdGlvblNp
Z25hdHVyZShGdW5jdGlvbkFyZ0NvdQogICAgIHZvaWQqIG1lbW9yeSA9IG51bGxwdHI7CiAgICAg
aWYgKCFyZXN1bHQuZ2V0VmFsdWUobWVtb3J5KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgVHlwZURlZmluaXRpb24qIHNpZ25hdHVyZSA9IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBUeXBl
RGVmaW5pdGlvbihyZXR1cm5Db3VudCwgYXJndW1lbnRDb3VudCk7CisgICAgVHlwZURlZmluaXRp
b24qIHNpZ25hdHVyZSA9IG5ldyAoTm90TnVsbCwgbWVtb3J5KSBUeXBlRGVmaW5pdGlvbihUeXBl
RGVmaW5pdGlvbktpbmQ6OkZ1bmN0aW9uU2lnbmF0dXJlLCByZXR1cm5Db3VudCwgYXJndW1lbnRD
b3VudCk7CiAgICAgcmV0dXJuIGFkb3B0UmVmKHNpZ25hdHVyZSk7CiB9CiAKQEAgLTE0NywxMCAr
MjA5LDc2IEBAIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gVHlwZURlZmluaXRpb246OnRyeUNyZWF0
ZVN0cnVjdFR5cGUoU3RydWN0RmllbGRDb3VudCBmaWVsCiAgICAgdm9pZCogbWVtb3J5ID0gbnVs
bHB0cjsKICAgICBpZiAoIXJlc3VsdC5nZXRWYWx1ZShtZW1vcnkpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3IChOb3ROdWxsLCBt
ZW1vcnkpIFR5cGVEZWZpbml0aW9uKGZpZWxkQ291bnQpOworICAgIFR5cGVEZWZpbml0aW9uKiBz
aWduYXR1cmUgPSBuZXcgKE5vdE51bGwsIG1lbW9yeSkgVHlwZURlZmluaXRpb24oVHlwZURlZmlu
aXRpb25LaW5kOjpTdHJ1Y3RUeXBlLCBmaWVsZENvdW50KTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
c2lnbmF0dXJlKTsKK30KKworUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBUeXBlRGVmaW5pdGlvbjo6
dHJ5Q3JlYXRlUmVjdXJzaW9uR3JvdXAoUmVjdXJzaW9uR3JvdXBDb3VudCB0eXBlQ291bnQpCit7
CisgICAgLy8gV2UgdXNlIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEIGZvciB0aGlzIGNsYXNzLgor
ICAgIGF1dG8gcmVzdWx0ID0gdHJ5RmFzdE1hbGxvYyhhbGxvY2F0ZWRSZWN1cnNpb25Hcm91cFNp
emUodHlwZUNvdW50KSk7CisgICAgdm9pZCogbWVtb3J5ID0gbnVsbHB0cjsKKyAgICBpZiAoIXJl
c3VsdC5nZXRWYWx1ZShtZW1vcnkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBUeXBl
RGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3IChOb3ROdWxsLCBtZW1vcnkpIFR5cGVEZWZpbml0
aW9uKFR5cGVEZWZpbml0aW9uS2luZDo6UmVjdXJzaW9uR3JvdXAsIHR5cGVDb3VudCk7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKHNpZ25hdHVyZSk7CiB9CiAKK1JlZlB0cjxUeXBlRGVmaW5pdGlvbj4g
VHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVByb2plY3Rpb24oKQoreworICAgIC8vIFdlIHVzZSBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRCBmb3IgdGhpcyBjbGFzcy4KKyAgICBhdXRvIHJlc3VsdCA9
IHRyeUZhc3RNYWxsb2MoYWxsb2NhdGVkUHJvamVjdGlvblNpemUoKSk7CisgICAgdm9pZCogbWVt
b3J5ID0gbnVsbHB0cjsKKyAgICBpZiAoIXJlc3VsdC5nZXRWYWx1ZShtZW1vcnkpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICBUeXBlRGVmaW5pdGlvbiogc2lnbmF0dXJlID0gbmV3IChO
b3ROdWxsLCBtZW1vcnkpIFR5cGVEZWZpbml0aW9uKFR5cGVEZWZpbml0aW9uS2luZDo6UHJvamVj
dGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKHNpZ25hdHVyZSk7Cit9CisKK1R5cGUgVHlwZURl
ZmluaXRpb246OnN1YnN0aXR1dGUoVHlwZSB0eXBlLCBUeXBlSW5kZXggcHJvamVjdGVlKQorewor
ICAgIGlmICh0eXBlLmtpbmQgPT0gVHlwZUtpbmQ6OlJlYykgeworICAgICAgICBSZWZQdHI8VHlw
ZURlZmluaXRpb24+IHByb2plY3Rpb24gPSBUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9u
Rm9yUHJvamVjdGlvbihwcm9qZWN0ZWUsIHN0YXRpY19jYXN0PFByb2plY3Rpb25JbmRleD4odHlw
ZS5pbmRleCkpOworICAgICAgICBUeXBlS2luZCBraW5kID0gdHlwZS5pc051bGxhYmxlKCkgPyBU
eXBlS2luZDo6UmVmTnVsbCA6IFR5cGVLaW5kOjpSZWY7CisgICAgICAgIHJldHVybiBUeXBlIHsg
a2luZCwgdHlwZS5udWxsYWJsZSwgcHJvamVjdGlvbi0+aW5kZXgoKSB9OworICAgIH0KKworICAg
IHJldHVybiB0eXBlOworfQorCitjb25zdCBUeXBlRGVmaW5pdGlvbiYgVHlwZURlZmluaXRpb246
OnVucm9sbChUeXBlSW5kZXggcHJvamVjdGVlKSBjb25zdAoreworICAgIGlmIChpczxGdW5jdGlv
blNpZ25hdHVyZT4oKSkgeworICAgICAgICBjb25zdCBGdW5jdGlvblNpZ25hdHVyZSogZnVuYyA9
IGFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOworICAgICAgICBWZWN0b3I8VHlwZT4gbmV3QXJndW1l
bnRzOworICAgICAgICBWZWN0b3I8VHlwZSwgMT4gbmV3UmV0dXJuczsKKyAgICAgICAgbmV3QXJn
dW1lbnRzLnRyeVJlc2VydmVDYXBhY2l0eShmdW5jLT5hcmd1bWVudENvdW50KCkpOworICAgICAg
ICBuZXdSZXR1cm5zLnRyeVJlc2VydmVDYXBhY2l0eShmdW5jLT5yZXR1cm5Db3VudCgpKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZ1bmMtPmFyZ3VtZW50Q291bnQoKTsgKytp
KQorICAgICAgICAgICAgbmV3QXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZChzdWJzdGl0dXRlKGZ1
bmMtPmFyZ3VtZW50VHlwZShpKSwgcHJvamVjdGVlKSk7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBmdW5jLT5yZXR1cm5Db3VudCgpOyArK2kpCisgICAgICAgICAgICBuZXdSZXR1
cm5zLnVuY2hlY2tlZEFwcGVuZChzdWJzdGl0dXRlKGZ1bmMtPnJldHVyblR5cGUoaSksIHByb2pl
Y3RlZSkpOworCisgICAgICAgIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gZGVmID0gVHlwZUluZm9y
bWF0aW9uOjp0eXBlRGVmaW5pdGlvbkZvckZ1bmN0aW9uKG5ld1JldHVybnMsIG5ld0FyZ3VtZW50
cyk7CisgICAgICAgIHJldHVybiAqZGVmOworICAgIH0KKworICAgIHJldHVybiAqdGhpczsKK30K
KworY29uc3QgVHlwZURlZmluaXRpb24mIFR5cGVEZWZpbml0aW9uOjpleHBhbmQoKSBjb25zdAor
eworICAgIGlmIChpczxQcm9qZWN0aW9uPigpKSB7CisgICAgICAgIGNvbnN0IFByb2plY3Rpb24m
IHByb2plY3Rpb24gPSAqYXM8UHJvamVjdGlvbj4oKTsKKyAgICAgICAgY29uc3QgVHlwZURlZmlu
aXRpb24mIHByb2plY3RlZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHByb2plY3Rpb24ucmVjdXJz
aW9uR3JvdXAoKSk7CisgICAgICAgIGNvbnN0IFJlY3Vyc2lvbkdyb3VwJiByZWN1cnNpb25Hcm91
cCA9ICpwcm9qZWN0ZWUuYXM8UmVjdXJzaW9uR3JvdXA+KCk7CisgICAgICAgIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiB1bmRlcmx5aW5nVHlwZSA9IFR5cGVJbmZvcm1hdGlvbjo6Z2V0KHJlY3Vyc2lv
bkdyb3VwLnR5cGUocHJvamVjdGlvbi5pbmRleCgpKSk7CisgICAgICAgIHJldHVybiB1bmRlcmx5
aW5nVHlwZS51bnJvbGwocHJvamVjdGVlLmluZGV4KCkpOworICAgIH0KKworICAgIHJldHVybiAq
dGhpczsKK30KKwogVHlwZUluZm9ybWF0aW9uOjpUeXBlSW5mb3JtYXRpb24oKQogewogI2RlZmlu
ZSBNQUtFX1RIVU5LX1NJR05BVFVSRSh0eXBlLCBlbmMsIHN0ciwgdmFsLCBfKSBcCkBAIC0xODYs
NyArMzE0LDcgQEAgc3RydWN0IEZ1bmN0aW9uUGFyYW1ldGVyVHlwZXMgewogCiAgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgVHlwZUhhc2gmIHNpZywgY29uc3QgRnVuY3Rpb25QYXJhbWV0ZXJU
eXBlcyYgcGFyYW1zKQogICAgIHsKLSAgICAgICAgaWYgKHNpZy5rZXktPmlzPFN0cnVjdFR5cGU+
KCkpCisgICAgICAgIGlmICghc2lnLmtleS0+aXM8RnVuY3Rpb25TaWduYXR1cmU+KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgY29uc3QgRnVuY3Rpb25TaWduYXR1cmUq
IHNpZ25hdHVyZSA9IHNpZy5rZXktPmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOwpAQCAtMjMyLDcg
KzM2MCw3IEBAIHN0cnVjdCBTdHJ1Y3RQYXJhbWV0ZXJUeXBlcyB7CiAKICAgICBzdGF0aWMgYm9v
bCBlcXVhbChjb25zdCBUeXBlSGFzaCYgc2lnLCBjb25zdCBTdHJ1Y3RQYXJhbWV0ZXJUeXBlcyYg
cGFyYW1zKQogICAgIHsKLSAgICAgICAgaWYgKHNpZy5rZXktPmlzPEZ1bmN0aW9uU2lnbmF0dXJl
PigpKQorICAgICAgICBpZiAoIXNpZy5rZXktPmlzPFN0cnVjdFR5cGU+KCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgY29uc3QgU3RydWN0VHlwZSogc3RydWN0VHlwZSA9
IHNpZy5rZXktPmFzPFN0cnVjdFR5cGU+KCk7CkBAIC0yNjAsNiArMzg4LDc4IEBAIHN0cnVjdCBT
dHJ1Y3RQYXJhbWV0ZXJUeXBlcyB7CiAgICAgfQogfTsKIAorc3RydWN0IFJlY3Vyc2lvbkdyb3Vw
UGFyYW1ldGVyVHlwZXMgeworICAgIGNvbnN0IFZlY3RvcjxUeXBlSW5kZXg+JiB0eXBlczsKKwor
ICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFJlY3Vyc2lvbkdyb3VwUGFyYW1ldGVyVHlw
ZXMmIHBhcmFtcykKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlUmVjdXJzaW9uR3JvdXBI
YXNoKHBhcmFtcy50eXBlcy5zaXplKCksIHBhcmFtcy50eXBlcy5kYXRhKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFR5cGVIYXNoJiBzaWcsIGNvbnN0IFJlY3Vyc2lv
bkdyb3VwUGFyYW1ldGVyVHlwZXMmIHBhcmFtcykKKyAgICB7CisgICAgICAgIGlmICghc2lnLmtl
eS0+aXM8UmVjdXJzaW9uR3JvdXA+KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgY29uc3QgUmVjdXJzaW9uR3JvdXAqIHJlY3Vyc2lvbkdyb3VwID0gc2lnLmtleS0+YXM8
UmVjdXJzaW9uR3JvdXA+KCk7CisgICAgICAgIGlmIChyZWN1cnNpb25Hcm91cC0+dHlwZUNvdW50
KCkgIT0gcGFyYW1zLnR5cGVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdXJzaW9uR3JvdXAtPnR5cGVDb3Vu
dCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChyZWN1cnNpb25Hcm91cC0+dHlwZShpKSAhPSBw
YXJhbXMudHlwZXNbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdHJhbnNs
YXRlKFR5cGVIYXNoJiBlbnRyeSwgY29uc3QgUmVjdXJzaW9uR3JvdXBQYXJhbWV0ZXJUeXBlcyYg
cGFyYW1zLCB1bnNpZ25lZCkKKyAgICB7CisgICAgICAgIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4g
c2lnbmF0dXJlID0gVHlwZURlZmluaXRpb246OnRyeUNyZWF0ZVJlY3Vyc2lvbkdyb3VwKHBhcmFt
cy50eXBlcy5zaXplKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChzaWduYXR1cmUpOworCisg
ICAgICAgIFJlY3Vyc2lvbkdyb3VwKiByZWN1cnNpb25Hcm91cCA9IHNpZ25hdHVyZS0+YXM8UmVj
dXJzaW9uR3JvdXA+KCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXJhbXMu
dHlwZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICByZWN1cnNpb25Hcm91cC0+Z2V0VHlwZShp
KSA9IHBhcmFtcy50eXBlc1tpXTsKKworICAgICAgICBlbnRyeS5rZXkgPSBXVEZNb3ZlKHNpZ25h
dHVyZSk7CisgICAgfQorfTsKKworc3RydWN0IFByb2plY3Rpb25QYXJhbWV0ZXJUeXBlcyB7Cisg
ICAgY29uc3QgVHlwZUluZGV4IHJlY3Vyc2lvbkdyb3VwOworICAgIGNvbnN0IFByb2plY3Rpb25J
bmRleCBpbmRleDsKKworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFByb2plY3Rpb25Q
YXJhbWV0ZXJUeXBlcyYgcGFyYW1zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVQcm9q
ZWN0aW9uSGFzaChwYXJhbXMucmVjdXJzaW9uR3JvdXAsIHBhcmFtcy5pbmRleCk7CisgICAgfQor
CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgVHlwZUhhc2gmIHNpZywgY29uc3QgUHJvamVj
dGlvblBhcmFtZXRlclR5cGVzJiBwYXJhbXMpCisgICAgeworICAgICAgICBpZiAoIXNpZy5rZXkt
PmlzPFByb2plY3Rpb24+KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
Y29uc3QgUHJvamVjdGlvbiogcHJvamVjdGlvbiA9IHNpZy5rZXktPmFzPFByb2plY3Rpb24+KCk7
CisgICAgICAgIGlmIChwcm9qZWN0aW9uLT5yZWN1cnNpb25Hcm91cCgpICE9IHBhcmFtcy5yZWN1
cnNpb25Hcm91cCB8fCBwcm9qZWN0aW9uLT5pbmRleCgpICE9IHBhcmFtcy5pbmRleCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVHlwZUhhc2gmIGVudHJ5LCBjb25zdCBQcm9qZWN0aW9u
UGFyYW1ldGVyVHlwZXMmIHBhcmFtcywgdW5zaWduZWQpCisgICAgeworICAgICAgICBSZWZQdHI8
VHlwZURlZmluaXRpb24+IHNpZ25hdHVyZSA9IFR5cGVEZWZpbml0aW9uOjp0cnlDcmVhdGVQcm9q
ZWN0aW9uKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNpZ25hdHVyZSk7CisKKyAgICAgICAg
UHJvamVjdGlvbiogcHJvamVjdGlvbiA9IHNpZ25hdHVyZS0+YXM8UHJvamVjdGlvbj4oKTsKKyAg
ICAgICAgcHJvamVjdGlvbi0+Z2V0UmVjdXJzaW9uR3JvdXAoKSA9IHBhcmFtcy5yZWN1cnNpb25H
cm91cDsKKyAgICAgICAgcHJvamVjdGlvbi0+Z2V0SW5kZXgoKSA9IHBhcmFtcy5pbmRleDsKKwor
ICAgICAgICBlbnRyeS5rZXkgPSBXVEZNb3ZlKHNpZ25hdHVyZSk7CisgICAgfQorfTsKKwogUmVm
UHRyPFR5cGVEZWZpbml0aW9uPiBUeXBlSW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yRnVu
Y3Rpb24oY29uc3QgVmVjdG9yPFR5cGUsIDE+JiByZXN1bHRzLCBjb25zdCBWZWN0b3I8VHlwZT4m
IGFyZ3MpCiB7CiAgICAgaWYgY29uc3RleHByIChBU1NFUlRfRU5BQkxFRCkgewpAQCAtMjgyLDYg
KzQ4MiwyNCBAQCBSZWZQdHI8VHlwZURlZmluaXRpb24+IFR5cGVJbmZvcm1hdGlvbjo6dHlwZURl
ZmluaXRpb25Gb3JTdHJ1Y3QoY29uc3QgVmVjdG9yPFN0cgogICAgIHJldHVybiBhZGRSZXN1bHQu
aXRlcmF0b3ItPmtleTsKIH0KIAorUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBUeXBlSW5mb3JtYXRp
b246OnR5cGVEZWZpbml0aW9uRm9yUmVjdXJzaW9uR3JvdXAoY29uc3QgVmVjdG9yPFR5cGVJbmRl
eD4mIHR5cGVzKQoreworICAgIFR5cGVJbmZvcm1hdGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBpbmZvLm1fbG9jayB9OworCisgICAgYXV0byBhZGRSZXN1bHQg
PSBpbmZvLm1fdHlwZVNldC50ZW1wbGF0ZSBhZGQ8UmVjdXJzaW9uR3JvdXBQYXJhbWV0ZXJUeXBl
cz4oUmVjdXJzaW9uR3JvdXBQYXJhbWV0ZXJUeXBlcyB7IHR5cGVzIH0pOworICAgIHJldHVybiBh
ZGRSZXN1bHQuaXRlcmF0b3ItPmtleTsKK30KKworUmVmUHRyPFR5cGVEZWZpbml0aW9uPiBUeXBl
SW5mb3JtYXRpb246OnR5cGVEZWZpbml0aW9uRm9yUHJvamVjdGlvbihUeXBlSW5kZXggcmVjdXJz
aW9uR3JvdXAsIFByb2plY3Rpb25JbmRleCBpbmRleCkKK3sKKyAgICBUeXBlSW5mb3JtYXRpb24m
IGluZm8gPSBzaW5nbGV0b24oKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgaW5mby5tX2xvY2sgfTsK
KworICAgIGF1dG8gYWRkUmVzdWx0ID0gaW5mby5tX3R5cGVTZXQudGVtcGxhdGUgYWRkPFByb2pl
Y3Rpb25QYXJhbWV0ZXJUeXBlcz4oUHJvamVjdGlvblBhcmFtZXRlclR5cGVzIHsgcmVjdXJzaW9u
R3JvdXAsIGluZGV4IH0pOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPmtleTsKK30K
Kwogdm9pZCBUeXBlSW5mb3JtYXRpb246OnRyeUNsZWFudXAoKQogewogICAgIFR5cGVJbmZvcm1h
dGlvbiYgaW5mbyA9IHNpbmdsZXRvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtVHlwZURlZmluaXRpb24uaAppbmRleCA4Njk2YWNmMGYzNjc1OWRiZDY1YzRiZWVmYjRk
MTBlMDkzMGNlMTM4Li41MGJjZmJmN2FkMjI0ODZlZDExMmMxMDUyMzJjZmVjMGQ5ZWU3NDNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb24uaApA
QCAtNDQsNiArNDQsOCBAQCBuYW1lc3BhY2UgV2FzbSB7CiAKIHVzaW5nIEZ1bmN0aW9uQXJnQ291
bnQgPSB1aW50MzJfdDsKIHVzaW5nIFN0cnVjdEZpZWxkQ291bnQgPSB1aW50MzJfdDsKK3VzaW5n
IFJlY3Vyc2lvbkdyb3VwQ291bnQgPSB1aW50MzJfdDsKK3VzaW5nIFByb2plY3Rpb25JbmRleCA9
IHVpbnQzMl90OwogCiBjbGFzcyBGdW5jdGlvblNpZ25hdHVyZSB7CiBwdWJsaWM6CkBAIC0xMjMs
MjAgKzEyNSw4NCBAQCBwcml2YXRlOgogICAgIFN0cnVjdEZpZWxkQ291bnQgbV9maWVsZENvdW50
OwogfTsKIAorY2xhc3MgUmVjdXJzaW9uR3JvdXAgeworcHVibGljOgorICAgIFJlY3Vyc2lvbkdy
b3VwKFR5cGVJbmRleCogcGF5bG9hZCwgUmVjdXJzaW9uR3JvdXBDb3VudCB0eXBlQ291bnQpCisg
ICAgICAgIDogbV9wYXlsb2FkKHBheWxvYWQpCisgICAgICAgICwgbV90eXBlQ291bnQodHlwZUNv
dW50KQorICAgIHsKKyAgICB9CisKKyAgICBSZWN1cnNpb25Hcm91cENvdW50IHR5cGVDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZUNvdW50OyB9CisgICAgVHlwZUluZGV4IHR5cGUoUmVjdXJz
aW9uR3JvdXBDb3VudCBpKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFJlY3Vyc2lvbkdyb3Vw
Kj4odGhpcyktPmdldFR5cGUoaSk7IH0KKworICAgIFdURjo6U3RyaW5nIHRvU3RyaW5nKCkgY29u
c3Q7CisgICAgdm9pZCBkdW1wKFdURjo6UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisKKyAgICBU
eXBlSW5kZXgmIGdldFR5cGUoUmVjdXJzaW9uR3JvdXBDb3VudCBpKSB7IEFTU0VSVChpIDwgdHlw
ZUNvdW50KCkpOzsgcmV0dXJuICpzdG9yYWdlKGkpOyB9CisgICAgVHlwZUluZGV4KiBzdG9yYWdl
KFJlY3Vyc2lvbkdyb3VwQ291bnQgaSkgeyByZXR1cm4gaSArIG1fcGF5bG9hZDsgfQorICAgIFR5
cGVJbmRleCogc3RvcmFnZShSZWN1cnNpb25Hcm91cENvdW50IGkpIGNvbnN0IHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8UmVjdXJzaW9uR3JvdXAqPih0aGlzKS0+c3RvcmFnZShpKTsgfQorCitwcml2YXRl
OgorICAgIFR5cGVJbmRleCogbV9wYXlsb2FkOworICAgIFJlY3Vyc2lvbkdyb3VwQ291bnQgbV90
eXBlQ291bnQ7Cit9OworCitjbGFzcyBQcm9qZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBQcm9qZWN0
aW9uKFR5cGVJbmRleCogcGF5bG9hZCkKKyAgICAgICAgOiBtX3BheWxvYWQocGF5bG9hZCkKKyAg
ICB7CisgICAgfQorCisgICAgVHlwZUluZGV4IHJlY3Vyc2lvbkdyb3VwKCkgY29uc3QgeyByZXR1
cm4gY29uc3RfY2FzdDxQcm9qZWN0aW9uKj4odGhpcyktPmdldFJlY3Vyc2lvbkdyb3VwKCk7IH0K
KyAgICBQcm9qZWN0aW9uSW5kZXggaW5kZXgoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PFBy
b2plY3Rpb24qPih0aGlzKS0+Z2V0SW5kZXgoKTsgfQorCisgICAgV1RGOjpTdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKKyAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYgb3V0KSBjb25zdDsK
KworICAgIFR5cGVJbmRleCYgZ2V0UmVjdXJzaW9uR3JvdXAoKSB7IHJldHVybiAqc3RvcmFnZSgw
KTsgfQorICAgIFByb2plY3Rpb25JbmRleCYgZ2V0SW5kZXgoKSB7IHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDxQcm9qZWN0aW9uSW5kZXgqPihzdG9yYWdlKDEpKTsgfQorICAgIFR5cGVJbmRleCog
c3RvcmFnZSh1aW50MzJfdCBpKSB7IEFTU0VSVChpIDw9IDEpOyByZXR1cm4gaSArIG1fcGF5bG9h
ZDsgfQorICAgIFR5cGVJbmRleCogc3RvcmFnZSh1aW50MzJfdCBpKSBjb25zdCB7IHJldHVybiBj
b25zdF9jYXN0PFByb2plY3Rpb24qPih0aGlzKS0+c3RvcmFnZShpKTsgfQorCitwcml2YXRlOgor
ICAgIFR5cGVJbmRleCogbV9wYXlsb2FkOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFByb2pl
Y3Rpb25JbmRleCkgPD0gc2l6ZW9mKFR5cGVJbmRleCkpOworCitlbnVtIGNsYXNzIFR5cGVEZWZp
bml0aW9uS2luZCA6IHVpbnQ4X3QgeworICAgIEZ1bmN0aW9uU2lnbmF0dXJlLAorICAgIFN0cnVj
dFR5cGUsCisgICAgUmVjdXJzaW9uR3JvdXAsCisgICAgUHJvamVjdGlvbgorfTsKKwogY2xhc3Mg
VHlwZURlZmluaXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8VHlwZURlZmluaXRp
b24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIAogICAgIFR5cGVEZWZpbml0aW9u
KCkgPSBkZWxldGU7CiAgICAgVHlwZURlZmluaXRpb24oY29uc3QgVHlwZURlZmluaXRpb24mKSA9
IGRlbGV0ZTsKIAotICAgIFR5cGVEZWZpbml0aW9uKEZ1bmN0aW9uQXJnQ291bnQgcmV0Q291bnQs
IEZ1bmN0aW9uQXJnQ291bnQgYXJnQ291bnQpCisgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmlu
aXRpb25LaW5kIGtpbmQsIEZ1bmN0aW9uQXJnQ291bnQgcmV0Q291bnQsIEZ1bmN0aW9uQXJnQ291
bnQgYXJnQ291bnQpCiAgICAgICAgIDogbV90eXBlSGVhZGVyIHsgRnVuY3Rpb25TaWduYXR1cmUg
eyBzdGF0aWNfY2FzdDxUeXBlKj4ocGF5bG9hZCgpKSwgYXJnQ291bnQsIHJldENvdW50IH0gfQog
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBUeXBlRGVmaW5pdGlvbktpbmQ6
OkZ1bmN0aW9uU2lnbmF0dXJlKTsKKyAgICB9CisKKyAgICBUeXBlRGVmaW5pdGlvbihUeXBlRGVm
aW5pdGlvbktpbmQga2luZCwgdWludDMyX3QgZmllbGRDb3VudCkKKyAgICAgICAgOiBtX3R5cGVI
ZWFkZXIgeyBTdHJ1Y3RUeXBlIHsgc3RhdGljX2Nhc3Q8U3RydWN0RmllbGQqPihwYXlsb2FkKCkp
LCBzdGF0aWNfY2FzdDxTdHJ1Y3RGaWVsZENvdW50PihmaWVsZENvdW50KSB9IH0KKyAgICB7Cisg
ICAgICAgIGlmIChraW5kID09IFR5cGVEZWZpbml0aW9uS2luZDo6UmVjdXJzaW9uR3JvdXApCisg
ICAgICAgICAgICBtX3R5cGVIZWFkZXIgPSB7IFJlY3Vyc2lvbkdyb3VwIHsgc3RhdGljX2Nhc3Q8
VHlwZUluZGV4Kj4ocGF5bG9hZCgpKSwgc3RhdGljX2Nhc3Q8UmVjdXJzaW9uR3JvdXBDb3VudD4o
ZmllbGRDb3VudCkgfSB9OworICAgICAgICBlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChraW5kID09IFR5cGVEZWZpbml0aW9uS2luZDo6U3RydWN0VHlwZSk7CiAgICAgfQogCi0gICAg
VHlwZURlZmluaXRpb24oU3RydWN0RmllbGRDb3VudCBmaWVsZENvdW50KQotICAgICAgICA6IG1f
dHlwZUhlYWRlciB7IFN0cnVjdFR5cGUgeyBzdGF0aWNfY2FzdDxTdHJ1Y3RGaWVsZCo+KHBheWxv
YWQoKSksIGZpZWxkQ291bnQgfSB9CisgICAgVHlwZURlZmluaXRpb24oVHlwZURlZmluaXRpb25L
aW5kIGtpbmQpCisgICAgICAgIDogbV90eXBlSGVhZGVyIHsgUHJvamVjdGlvbiB7IHN0YXRpY19j
YXN0PFR5cGVJbmRleCo+KHBheWxvYWQoKSkgfSB9CiAgICAgeworICAgICAgICBSRUxFQVNFX0FT
U0VSVChraW5kID09IFR5cGVEZWZpbml0aW9uS2luZDo6UHJvamVjdGlvbik7CiAgICAgfQogCiAg
ICAgLy8gUGF5bG9hZCBzdGFydHMgcGFzdCBlbmQgb2YgdGhpcyBvYmplY3QuCkBAIC0xNDQsNiAr
MjEwLDggQEAgY2xhc3MgVHlwZURlZmluaXRpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8VHlwZURlZmluaXRpb24+IHsKIAogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGVkRnVuY3Rp
b25TaXplKENoZWNrZWQ8RnVuY3Rpb25BcmdDb3VudD4gcmV0Q291bnQsIENoZWNrZWQ8RnVuY3Rp
b25BcmdDb3VudD4gYXJnQ291bnQpIHsgcmV0dXJuIHNpemVvZihUeXBlRGVmaW5pdGlvbikgKyAo
cmV0Q291bnQgKyBhcmdDb3VudCkgKiBzaXplb2YoVHlwZSk7IH0KICAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRlZFN0cnVjdFNpemUoQ2hlY2tlZDxTdHJ1Y3RGaWVsZENvdW50PiBmaWVsZENvdW50
KSB7IHJldHVybiBzaXplb2YoVHlwZURlZmluaXRpb24pICsgZmllbGRDb3VudCAqIHNpemVvZihT
dHJ1Y3RGaWVsZCk7IH0KKyAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRlZFJlY3Vyc2lvbkdyb3Vw
U2l6ZShDaGVja2VkPFJlY3Vyc2lvbkdyb3VwQ291bnQ+IHR5cGVDb3VudCkgeyByZXR1cm4gc2l6
ZW9mKFR5cGVEZWZpbml0aW9uKSArIHR5cGVDb3VudCAqIHNpemVvZihUeXBlSW5kZXgpOyB9Cisg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0ZWRQcm9qZWN0aW9uU2l6ZSgpIHsgcmV0dXJuIHNpemVv
ZihUeXBlRGVmaW5pdGlvbikgKyAyICogc2l6ZW9mKFR5cGVJbmRleCk7IH0KIAogcHVibGljOgog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTYyLDYgKzIzMCw5IEBAIHB1YmxpYzoKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZURlZmluaXRpb24mIHJocykgY29uc3QgeyByZXR1
cm4gdGhpcyA9PSAmcmhzOyB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCisgICAgY29u
c3QgVHlwZURlZmluaXRpb24mIHVucm9sbChUeXBlSW5kZXgpIGNvbnN0OworICAgIGNvbnN0IFR5
cGVEZWZpbml0aW9uJiBleHBhbmQoKSBjb25zdDsKKwogICAgIC8vIFR5cGUgZGVmaW5pdGlvbnMg
YXJlIHVuaXF1ZWQgYW5kLCBmb3IgY2FsbF9pbmRpcmVjdCwgdmFsaWRhdGVkIGF0IHJ1bnRpbWUu
IFRhYmxlcyBjYW4gY3JlYXRlIGludmFsaWQgVHlwZUluZGV4IHZhbHVlcyB3aGljaCBjYXVzZSBj
YWxsX2luZGlyZWN0IHRvIGZhaWwuIFdlIHVzZSAwIGFzIHRoZSBpbnZhbGlkSW5kZXggc28gdGhh
dCB0aGUgY29kZWdlbiBjYW4gZWFzaWx5IHRlc3QgZm9yIGl0IGFuZCB0cmFwLCBhbmQgd2UgYWRk
IGEgdG9rZW4gaW52YWxpZCBlbnRyeSBpbiBUeXBlSW5mb3JtYXRpb24uCiAgICAgc3RhdGljIGNv
bnN0IGNvbnN0ZXhwciBUeXBlSW5kZXggaW52YWxpZEluZGV4ID0gMDsKIApAQCAtMTY5LDExICsy
NDAsMTcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHlwZUluZm9ybWF0aW9uOwogICAg
IGZyaWVuZCBzdHJ1Y3QgRnVuY3Rpb25QYXJhbWV0ZXJUeXBlczsKICAgICBmcmllbmQgc3RydWN0
IFN0cnVjdFBhcmFtZXRlclR5cGVzOworICAgIGZyaWVuZCBzdHJ1Y3QgUmVjdXJzaW9uR3JvdXBQ
YXJhbWV0ZXJUeXBlczsKKyAgICBmcmllbmQgc3RydWN0IFByb2plY3Rpb25QYXJhbWV0ZXJUeXBl
czsKIAogICAgIHN0YXRpYyBSZWZQdHI8VHlwZURlZmluaXRpb24+IHRyeUNyZWF0ZUZ1bmN0aW9u
U2lnbmF0dXJlKEZ1bmN0aW9uQXJnQ291bnQgcmV0dXJuQ291bnQsIEZ1bmN0aW9uQXJnQ291bnQg
YXJndW1lbnRDb3VudCk7CiAgICAgc3RhdGljIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHJ5Q3Jl
YXRlU3RydWN0VHlwZShTdHJ1Y3RGaWVsZENvdW50KTsKKyAgICBzdGF0aWMgUmVmUHRyPFR5cGVE
ZWZpbml0aW9uPiB0cnlDcmVhdGVSZWN1cnNpb25Hcm91cChSZWN1cnNpb25Hcm91cENvdW50KTsK
KyAgICBzdGF0aWMgUmVmUHRyPFR5cGVEZWZpbml0aW9uPiB0cnlDcmVhdGVQcm9qZWN0aW9uKCk7
CisKKyAgICBzdGF0aWMgVHlwZSBzdWJzdGl0dXRlKFR5cGUsIFR5cGVJbmRleCk7CiAKLSAgICBz
dGQ6OnZhcmlhbnQ8RnVuY3Rpb25TaWduYXR1cmUsIFN0cnVjdFR5cGU+IG1fdHlwZUhlYWRlcjsK
KyAgICBzdGQ6OnZhcmlhbnQ8RnVuY3Rpb25TaWduYXR1cmUsIFN0cnVjdFR5cGUsIFJlY3Vyc2lv
bkdyb3VwLCBQcm9qZWN0aW9uPiBtX3R5cGVIZWFkZXI7CiAgICAgLy8gUGF5bG9hZCBpcyBzdG9y
ZWQgaGVyZS4KIH07CiAKQEAgLTIyMyw2ICszMDAsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
UmVmUHRyPFR5cGVEZWZpbml0aW9uPiB0eXBlRGVmaW5pdGlvbkZvckZ1bmN0aW9uKGNvbnN0IFZl
Y3RvcjxUeXBlLCAxPiYgcmV0dXJuVHlwZXMsIGNvbnN0IFZlY3RvcjxUeXBlPiYgYXJndW1lbnRU
eXBlcyk7CiAgICAgc3RhdGljIFJlZlB0cjxUeXBlRGVmaW5pdGlvbj4gdHlwZURlZmluaXRpb25G
b3JTdHJ1Y3QoY29uc3QgVmVjdG9yPFN0cnVjdEZpZWxkPiYgZmllbGRzKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFR5cGVEZWZpbml0aW9uPiB0eXBlRGVmaW5pdGlvbkZvclJlY3Vyc2lvbkdyb3VwKGNv
bnN0IFZlY3RvcjxUeXBlSW5kZXg+JiB0eXBlcyk7CisgICAgc3RhdGljIFJlZlB0cjxUeXBlRGVm
aW5pdGlvbj4gdHlwZURlZmluaXRpb25Gb3JQcm9qZWN0aW9uKFR5cGVJbmRleCwgUHJvamVjdGlv
bkluZGV4KTsKICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IFR5cGVEZWZpbml0aW9uKiB0aHVua0Zv
cihUeXBlIHR5cGUpIGNvbnN0IHsgcmV0dXJuIHRodW5rVHlwZXNbbGluZWFyaXplVHlwZSh0eXBl
LmtpbmQpXTsgfQogCiAgICAgc3RhdGljIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBnZXQoVHlwZUlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVm
aW5pdGlvbklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21UeXBlRGVm
aW5pdGlvbklubGluZXMuaAppbmRleCBhMzU2MzY5ZDQwNmI4YzdiMWEyYzQ4MzFmMTUwOGUwMDU2
NTliZGI3Li40NzM4ZDRkMTg2OGI0MTNhYzVmOGE0NTIzYzlmNGYyOWEyOTUwYWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVHlwZURlZmluaXRpb25JbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVR5cGVEZWZpbml0aW9uSW5s
aW5lcy5oCkBAIC01MSw3ICs1MSwxNCBAQCBpbmxpbmUgY29uc3QgVHlwZURlZmluaXRpb24mIFR5
cGVJbmZvcm1hdGlvbjo6Z2V0KFR5cGVJbmRleCBpbmRleCkKIAogaW5saW5lIGNvbnN0IEZ1bmN0
aW9uU2lnbmF0dXJlJiBUeXBlSW5mb3JtYXRpb246OmdldEZ1bmN0aW9uU2lnbmF0dXJlKFR5cGVJ
bmRleCBpbmRleCkKIHsKLSAgICByZXR1cm4gKmdldChpbmRleCkuYXM8RnVuY3Rpb25TaWduYXR1
cmU+KCk7CisgICAgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSA9IGdldChpbmRleCk7
CisgICAgaWYgKHNpZ25hdHVyZS5pczxQcm9qZWN0aW9uPigpKSB7CisgICAgICAgIGNvbnN0IFR5
cGVEZWZpbml0aW9uJiBleHBhbmRlZCA9IHNpZ25hdHVyZS5leHBhbmQoKTsKKyAgICAgICAgQVNT
RVJUKGV4cGFuZGVkLmlzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKTsKKyAgICAgICAgcmV0dXJuICpl
eHBhbmRlZC5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKKyAgICB9CisgICAgQVNTRVJUKHNpZ25h
dHVyZS5pczxGdW5jdGlvblNpZ25hdHVyZT4oKSk7CisgICAgcmV0dXJuICpzaWduYXR1cmUuYXM8
RnVuY3Rpb25TaWduYXR1cmU+KCk7CiB9CiAKIGlubGluZSBUeXBlSW5kZXggVHlwZUluZm9ybWF0
aW9uOjpnZXQoY29uc3QgVHlwZURlZmluaXRpb24mIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKaW5kZXggODBhMWVkZjFiYWYxMTY5YjNiYzRmMGQ3NTNl
ZmU1MDE4NDJkNTliMy4uMGE3YzZmNjk3NjgxMDRjODdmYWRkODMyZThjZDQ4NjQyOTJjYWMxNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcApAQCAtNTcsNyAr
NTcsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5UHRyVGFnPiwg
QmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgIC8vIEl0J2QgYmUgc3VwZXIgZWFz
eSB0byBkbyBzbzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQw
MQogICAgIGNvbnN0IGF1dG8mIHdhc21DQyA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOwogICAg
IGNvbnN0IGF1dG8mIGpzQ0MgPSBqc0NhbGxpbmdDb252ZW50aW9uKCk7Ci0gICAgY29uc3QgVHlw
ZURlZmluaXRpb24mIHR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQodHlwZUlu
ZGV4KTsKKyAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgdHlwZURlZmluaXRpb24gPSBUeXBlSW5m
b3JtYXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFuZCgpOwogICAgIGNvbnN0IGF1dG8mIHNpZ25h
dHVyZSA9ICp0eXBlRGVmaW5pdGlvbi5hczxGdW5jdGlvblNpZ25hdHVyZT4oKTsKICAgICB1bnNp
Z25lZCBhcmdDb3VudCA9IHNpZ25hdHVyZS5hcmd1bWVudENvdW50KCk7CiAgICAgSklUIGppdDsK
QEAgLTEwNiw2ICsxMDYsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVu
dHJ5UHRyVGFnPiwgQmluZGluZ0ZhaWx1cmU+IHdhc21Ub0pTKFZNJiB2bQogICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6Vm9pZDoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CiAg
ICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdHJ1Y3Q6CisgICAgICAgICAgICBjYXNlIFR5cGVL
aW5kOjpSZWM6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWZOdWxsOgogICAgICAgICAg
ICAgY2FzZSBUeXBlS2luZDo6UmVmOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6UnR0OgpA
QCAtMTgyLDYgKzE4Myw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50
cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvSlMoVk0mIHZtCiAgICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpWb2lkOgogICAgICAgICAgICAgY2FzZSBUeXBlS2luZDo6RnVuYzoKICAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKKyAgICAgICAgICAgIGNhc2UgVHlwZUtp
bmQ6OlJlYzoKICAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CiAgICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpSZWY6CiAgICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSdHQ6CkBA
IC0zNzksNyArMzgxLDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRy
eVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9KUyhWTSYgdm0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6ICB7Ci0gICAgICAgICAgICBpZiAoV2Fz
bTo6aXNGdW5jcmVmKHJldHVyblR5cGUpIHx8IFdhc206OmlzRXh0ZXJucmVmKHJldHVyblR5cGUp
KQorICAgICAgICAgICAgaWYgKFdhc206OmlzUmVmVHlwZShyZXR1cm5UeXBlKSkKICAgICAgICAg
ICAgICAgICBqaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgd2FzbUNhbGxJbmZvLnJl
c3VsdHNbMF0uZ3ByKCkpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIC8vIEZv
ciB0aGUgSmF2YVNjcmlwdCBlbWJlZGRpbmcsIGltcG9ydHMgd2l0aCB0aGVzZSB0eXBlcyBpbiB0
aGVpciB0eXBlIGRlZmluaXRpb24gcmV0dXJuIGFyZSBhIFdlYkFzc2VtYmx5Lk1vZHVsZSB2YWxp
ZGF0aW9uIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IGJjOWNiMDY4ZDhhMzU3NGYwNmYx
MTMzNTU0Y2VlZWU3MmIwM2ZiNTQuLmYzNWVlMjEzOTUyYzk5Y2JmNjU3NDQzZTFhNDJkNmViMjEx
MWY0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjppbml0aWFsaXplRXhwb3J0cyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogCiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbW9kdWxl
SW5mb3JtYXRpb24uaW50ZXJuYWxFeGNlcHRpb25UeXBlSW5kaWNlcy5zaXplKCk7ICsraW5kZXgp
IHsKICAgICAgICAgV2FzbTo6VHlwZUluZGV4IHR5cGVJbmRleCA9IG1vZHVsZUluZm9ybWF0aW9u
LmludGVybmFsRXhjZXB0aW9uVHlwZUluZGljZXNbaW5kZXhdOwotICAgICAgICBtX2luc3RhbmNl
LT5pbnN0YW5jZSgpLnNldFRhZyhtb2R1bGVJbmZvcm1hdGlvbi5pbXBvcnRFeGNlcHRpb25Db3Vu
dCgpICsgaW5kZXgsIFdhc206OlRhZzo6Y3JlYXRlKFdhc206OlR5cGVJbmZvcm1hdGlvbjo6Z2V0
KHR5cGVJbmRleCkpKTsKKyAgICAgICAgbV9pbnN0YW5jZS0+aW5zdGFuY2UoKS5zZXRUYWcobW9k
dWxlSW5mb3JtYXRpb24uaW1wb3J0RXhjZXB0aW9uQ291bnQoKSArIGluZGV4LCBXYXNtOjpUYWc6
OmNyZWF0ZShXYXNtOjpUeXBlSW5mb3JtYXRpb246OmdldCh0eXBlSW5kZXgpLmV4cGFuZCgpKSk7
CiAgICAgfQogCiAgICAgdW5zaWduZWQgZnVuY3Rpb25JbXBvcnRDb3VudCA9IGNhbGxlZUdyb3Vw
LT5mdW5jdGlvbkltcG9ydENvdW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS93YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24K
aW5kZXggMWZhODZmOTBhYzAwZjJlMDYzYzhmY2M0Mjc1M2MzOTBmZDQxYTVmYi4uMTEwYWE4MTE1
ZmRjNjUyOWIyMjcyYzE3MzdlY2Y4NGM2ODdiMDJlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vd2FzbS5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L3dhc20uanNvbgpAQCAtMTgsNiArMTgsNyBAQAogICAgICAgICAiZnVuYyI6ICAgICAgeyAidHlw
ZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0zMiwgImIzdHlwZSI6ICJCMzo6Vm9pZCIgfSwKICAg
ICAgICAgInN0cnVjdCI6ICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzMsICJi
M3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJydHQiOiAgICAgICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgLTI0LCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAorICAgICAgICAi
cmVjIjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC00OSwgImIzdHlwZSI6
ICJCMzo6Vm9pZCIgfSwKICAgICAgICAgInZvaWQiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtNjQsICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0KICAgICB9LAogICAgICJ2YWx1
ZV90eXBlIjogWyJpMzIiLCAiaTY0IiwgImYzMiIsICJmNjQiLCAiZXh0ZXJucmVmIiwgImZ1bmNy
ZWYiXSwKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggOGRjOTYwY2U5ZWU2MTk2OWY3ODQ4NGZiNjZmYzJjMjlmNWM1ZTg2MC4uMDY3NTAwZGJj
ODU1OTE1ZjkzNDg1MWQyZTM4Y2Q5NzUxZWYxNTYyNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wNS0w
NCAgQXN1bXUgVGFraWthd2EgIDxhc3VtdUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXYXNtLUdD
XSBBZGQgc3VwcG9ydCBmb3IgV2ViQXNzZW1ibHkgR0MgcmVjdXJzaW9uIGdyb3VwcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NjY2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9y
IFdhc20gR0MgcmVjdXJzaW9uIGdyb3Vwcy4KKworICAgICAgICAqIHdhc20vZ2MvcmVjLmpzOiBB
ZGRlZC4KKyAgICAgICAgKG1vZHVsZSk6CisgICAgICAgICh0ZXN0UmVjRGVjbGFyYXRpb24pOgor
ICAgICAgICAqIHdhc20vd2FzbS5qc29uOgorCiAyMDIyLTA1LTA0ICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1heSAyMDIyIHRlc3QyNjIgdXBkYXRl
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vZ2MvcmVjLmpzIGIvSlNUZXN0cy93YXNtL2djL3Jl
Yy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMmQ2NjU5MzBiNGE1NDIyMGNkNWJkNTllZGQ1YWE0NTYyNDVhNGNh
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy93YXNtL2djL3JlYy5qcwpAQCAtMCwwICsxLDIz
MSBAQAorLy9AIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1ibHlUeXBlZEZ1bmN0
aW9uUmVmZXJlbmNlcz10cnVlIiwgIi0tdXNlV2ViQXNzZW1ibHlHQz10cnVlIikKKworaW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gIi4uL2Fzc2VydC5qcyI7CitpbXBvcnQgeyBpbnN0YW50aWF0ZSB9
IGZyb20gIi4uL3dhYnQtd3JhcHBlci5qcyI7CisKK2Z1bmN0aW9uIG1vZHVsZShieXRlcywgdmFs
aWQgPSB0cnVlKSB7CisgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3Ro
KTsKKyAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICBmb3IgKGxldCBpID0g
MDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7CisgICAgdmlld1tpXSA9IGJ5dGVzLmNoYXJDb2Rl
QXQoaSk7CisgIH0KKyAgcmV0dXJuIG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYnVmZmVyKTsKK30K
KworZnVuY3Rpb24gdGVzdFJlY0RlY2xhcmF0aW9uKCkgeworICAvKgorICAgKiAobW9kdWxlCisg
ICAqICAgKHJlYyAodHlwZSAoZnVuYykpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogKQorICAgKi8K
KyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4
MDBceDVmXHgwMCIpKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAodHlwZSAo
ZnVuYykpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAoZnVuYyAodHlwZSAwKSkKKyAgICogKQor
ICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYw
XHgwMFx4MDBceDVmXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwYVx4ODhc
eDgwXHg4MFx4ODBceDAwXHgwMVx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKSk7CisKKyAg
LyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKHN0cnVjdCkpICh0eXBlIChmdW5j
KSkpCisgICAqICAgKGZ1bmMgKHR5cGUgMCkpCisgICAqICkKKyAgICovCisgIGFzc2VydC50aHJv
d3MoCisgICAgKCkgPT4gbW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDFceDRmXHgwMlx4NWZceDAwXHg2MFx4MDBceDAwXHgw
M1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4OFx4ODBceDgwXHg4MFx4MDBceDAx
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpLAorICAgIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvciwKKyAgICAidHlwZSBzaWduYXR1cmUgd2FzIG5vdCBhIGZ1bmN0aW9uIHNpZ25hdHVyZSIK
KyAgKQorCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjCisgICAqICAgICAodHlwZSAo
ZnVuYyAocmVzdWx0IChyZWYgMSkpKSkKKyAgICogICAgICh0eXBlIChmdW5jIChyZXN1bHQgKHJl
ZiAwKSkpKSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVs
ZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4
MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDFceDZiXHgwMVx4NjBceDAwXHgwMVx4NmJceDAwIikp
OworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjCisgICAqICAgICAodHlwZSAoZnVu
YykpCisgICAqICAgICAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMCkpKSkpCisgICAqICkKKyAg
ICovCisgIG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4OGJceDgwXHg4MFx4ODBceDAwXHgwMVx4NGZceDAyXHg2MFx4
MDBceDAwXHg2MFx4MDBceDAxXHg2Ylx4MDAiKSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAg
KiAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKHJlYyAodHlw
ZSAoZnVuYykpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAoZWxlbSBkZWNsYXJlIGZ1bmNyZWYg
KHJlZi5mdW5jIDApKQorICAgKiAgIChmdW5jICh0eXBlIDApKQorICAgKiAgIChmdW5jIChyZXN1
bHQgKHJlZiAyKSkgKHJlZi5mdW5jIDApKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eDk0XHg4MFx4ODBceDgwXHgwMFx4MDNceDRmXHgwMlx4NjBceDAwXHgwMFx4NWZceDAwXHg0Zlx4
MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4NjBceDAwXHgwMVx4NmJceDAyXHgwM1x4ODNceDgwXHg4
MFx4ODBceDAwXHgwMlx4MDBceDA0XHgwOVx4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDdceDcw
XHgwMVx4ZDJceDAwXHgwYlx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDgyXHg4MFx4ODBc
eDgwXHgwMFx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHhkMlx4MDBceDBiIikpOwor
CisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChmdW5jKSkgKHR5cGUgKHN0
cnVjdCkpKQorICAgKiAgIChmdW5jIChleHBvcnQgImYiKSAodHlwZSAwKSkKKyAgICogKQorICAg
KgorICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAodHlwZSAoZnVuYykpICh0eXBlIChzdHJ1Y3Qp
KSkKKyAgICogICAoZnVuYyAoaW1wb3J0ICJtIiAiZiIpICh0eXBlIDApKQorICAgKiAgIChzdGFy
dCAwKQorICAgKiApCisgICAqLworICB7CisgICAgbGV0IG0xID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4
ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4MDNceDgyXHg4
MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODVceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDY2
XHgwMFx4MDBceDBhXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg4Mlx4ODBceDgwXHg4MFx4MDBc
eDAwXHgwYiIpKTsKKyAgICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDFceDRm
XHgwMlx4NjBceDAwXHgwMFx4NWZceDAwXHgwMlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFc
eDZkXHgwMVx4NjZceDAwXHgwMFx4MDhceDgxXHg4MFx4ODBceDgwXHgwMFx4MDAiKSwgeyBtOiB7
IGY6IG0xLmV4cG9ydHMuZiB9IH0pOworICB9CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAg
IChyZWMgKHR5cGUgKGZ1bmMpKSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKGZ1bmMgKGV4cG9y
dCAiZiIpICh0eXBlIDApKQorICAgKiApCisgICAqCisgICAqIChtb2R1bGUKKyAgICogICAocmVj
ICh0eXBlIChzdHJ1Y3QpKSAodHlwZSAoZnVuYykpKQorICAgKiAgIChmdW5jIChpbXBvcnQgIm0i
ICJmIikgKHR5cGUgMSkpCisgICAqICAgKHN0YXJ0IDApCisgICAqICkKKyAgICovCisgIHsKKyAg
ICBsZXQgbTEgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDFceDRmXHgwMlx4
NjBceDAwXHgwMFx4NWZceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
NVx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4NjZceDAwXHgwMFx4MGFceDg4XHg4MFx4ODBceDgw
XHgwMFx4MDFceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIikpOworICAgIGFzc2VydC50aHJv
d3MoCisgICAgICAoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgwMFx4MDFceDRm
XHgwMlx4NWZceDAwXHg2MFx4MDBceDAwXHgwMlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFc
eDZkXHgwMVx4NjZceDAwXHgwMVx4MDhceDgxXHg4MFx4ODBceDgwXHgwMFx4MDAiKSwgeyBtOiB7
IGY6IG0xLmV4cG9ydHMuZiB9IH0pLAorICAgICAgV2ViQXNzZW1ibHkuTGlua0Vycm9yLAorICAg
ICAgImltcG9ydGVkIGZ1bmN0aW9uIG06ZiBzaWduYXR1cmUgZG9lc24ndCBtYXRjaCB0aGUgcHJv
dmlkZWQgV2ViQXNzZW1ibHkgZnVuY3Rpb24ncyBzaWduYXR1cmUiCisgICAgKTsKKyAgfQorCisg
IC8qCisgICAqIChtb2R1bGUgJG0KKyAgICogICAocmVjICh0eXBlIChmdW5jIChyZXN1bHQgKHJl
ZiAwKSkpKSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChy
ZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAoZXhwb3J0ICJmIikgKHR5cGUgMCkgKHJlZi5mdW5j
IDApKQorICAgKiApCisgICAqCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChzdHJ1
Y3QpKSAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMSkpKSkpCisgICAqICAgKGVsZW0gZGVjbGFy
ZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAoaW1wb3J0ICJtIiAiZiIpICh0
eXBlIDEpKQorICAgKiApCisgICAqLworICB7CisgICAgbGV0IG0xID0gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4
YVx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDFceDZiXHgwMFx4NWZceDAw
XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4NVx4ODBceDgwXHg4MFx4MDBc
eDAxXHgwMVx4NjZceDAwXHgwMFx4MDlceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDA3XHg3MFx4
MDFceGQyXHgwMFx4MGJceDBhXHg4YVx4ODBceDgwXHg4MFx4MDBceDAxXHg4NFx4ODBceDgwXHg4
MFx4MDBceDAwXHhkMlx4MDBceDBiIikpOworICAgIGFzc2VydC50aHJvd3MoCisgICAgICAoKSA9
PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceDhhXHg4MFx4ODBceDgwXHgwMFx4MDFceDRmXHgwMlx4NWZceDAwXHg2
MFx4MDBceDAxXHg2Ylx4MDFceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4NmRceDAx
XHg2Nlx4MDBceDAxXHgwOVx4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDdceDcwXHgwMVx4ZDJc
eDAwXHgwYiIpLCB7IG06IHsgZjogbTEuZXhwb3J0cy5mIH0gfSksCisgICAgICBXZWJBc3NlbWJs
eS5MaW5rRXJyb3IsCisgICAgICAiaW1wb3J0ZWQgZnVuY3Rpb24gbTpmIHNpZ25hdHVyZSBkb2Vz
bid0IG1hdGNoIHRoZSBwcm92aWRlZCBXZWJBc3NlbWJseSBmdW5jdGlvbidzIHNpZ25hdHVyZSIK
KyAgICApOworICB9CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1
bmMpKSAodHlwZSAoc3RydWN0KSkpCisgICAqICAgKHJlYyAodHlwZSAoc3RydWN0KSkgKHR5cGUg
KGZ1bmMpKSkKKyAgICogICAoZ2xvYmFsIChyZWYgMCkgKHJlZi5mdW5jIDApKQorICAgKiAgIChm
dW5jICh0eXBlIDMpKQorICAgKiApCisgICAqLworICBhc3NlcnQudGhyb3dzKAorICAgICgpID0+
IG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4Zlx4ODBceDgw
XHg4MFx4MDBceDAyXHg0Zlx4MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4NGZceDAyXHg1Zlx4MDBc
eDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4MDZceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDZiXHgwMFx4MDBceGQyXHgwMFx4MGJceDBhXHg4OFx4ODBceDgwXHg4
MFx4MDBceDAxXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpLAorICAgIFdlYkFzc2VtYmx5
LkNvbXBpbGVFcnJvciwKKyAgICAiR2xvYmFsIGluaXRfZXhwciBvcGNvZGUgb2YgdHlwZSBSZWYg
ZG9lc24ndCBtYXRjaCBnbG9iYWwncyB0eXBlIFJlZiIKKyAgKTsKKworICAvKgorICAgKiAobW9k
dWxlCisgICAqICAgKHJlYyAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMSkpKSkKKyAgICogICAg
ICAgICh0eXBlIChmdW5jIChyZXN1bHQgKHJlZiAwKSkpKSkKKyAgICogICAoZWxlbSBkZWNsYXJl
IGZ1bmNyZWYgKHJlZi5mdW5jIDApKQorICAgKiAgIChlbGVtIGRlY2xhcmUgZnVuY3JlZiAocmVm
LmZ1bmMgMSkpCisgICAqICAgKGZ1bmMgKHR5cGUgMCkgKHJlZi5mdW5jIDEpKQorICAgKiAgIChm
dW5jICh0eXBlIDEpIChyZWYuZnVuYyAwKSkKKyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDFceDZiXHgwMVx4NjBc
eDAwXHgwMVx4NmJceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwOVx4
OGRceDgwXHg4MFx4ODBceDAwXHgwMlx4MDdceDcwXHgwMVx4ZDJceDAwXHgwYlx4MDdceDcwXHgw
MVx4ZDJceDAxXHgwYlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgw
XHgwMFx4MDBceGQyXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQyXHgwMFx4MGIi
KSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMgKHJlc3Vs
dCAocmVmIDEpKSkpCisgICAqICAgICAgICAodHlwZSAoZnVuYyAocmVzdWx0IChyZWYgMCkpKSkp
CisgICAqICAgKGVsZW0gZGVjbGFyZSBmdW5jcmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAoZWxl
bSBkZWNsYXJlIGZ1bmNyZWYgKHJlZi5mdW5jIDEpKQorICAgKiAgIChmdW5jICh0eXBlIDApIChy
ZWYuZnVuYyAxKSkKKyAgICogICAoZnVuYyAodHlwZSAxKSAocmVmLmZ1bmMgMSkpCisgICAqICkK
KyAgICovCisgIGFzc2VydC50aHJvd3MoCisgICAgKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3Rh
bmNlKG1vZHVsZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4ZFx4ODBc
eDgwXHg4MFx4MDBceDAxXHg0Zlx4MDJceDYwXHgwMFx4MDFceDZiXHgwMVx4NjBceDAwXHgwMVx4
NmJceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAxXHgwOVx4OGRceDgwXHg4
MFx4ODBceDAwXHgwMlx4MDdceDcwXHgwMVx4ZDJceDAwXHgwYlx4MDdceDcwXHgwMVx4ZDJceDAx
XHgwYlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBc
eGQyXHgwMVx4MGJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceGQyXHgwMVx4MGIiKSksCisgICAg
V2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLAorICAgICJjb250cm9sIGZsb3cgcmV0dXJucyB3aXRo
IHVuZXhwZWN0ZWQgdHlwZS4gUmVmIGlzIG5vdCBhIFJlZiwgaW4gZnVuY3Rpb24gYXQgaW5kZXgg
MSIKKyAgKTsKKworICAvKgorICAgKiAobW9kdWxlCisgICAqICAgKHJlYyAodHlwZSAoZnVuYyAo
cGFyYW0gaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAoZWxlbSBkZWNsYXJlIGZ1bmNy
ZWYgKHJlZi5mdW5jIDApKQorICAgKiAgIChmdW5jICh0eXBlIDApKQorICAgKiAgIChmdW5jIChj
YWxsX3JlZiAoaTMyLmNvbnN0IDQyKSAocmVmLmZ1bmMgMCkpKQorICAgKiAgIChzdGFydCAxKQor
ICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDhjXHg4MFx4ODBceDgwXHgwMFx4MDJceDRm
XHgwMlx4NjBceDAxXHg3Zlx4MDBceDVmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBc
eDgwXHgwMFx4MDJceDAwXHgwMlx4MDhceDgxXHg4MFx4ODBceDgwXHgwMFx4MDFceDA5XHg4N1x4
ODBceDgwXHg4MFx4MDBceDAxXHgwN1x4NzBceDAxXHhkMlx4MDBceDBiXHgwYVx4OTRceDgwXHg4
MFx4ODBceDAwXHgwMlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGJceDg3XHg4MFx4ODBceDgw
XHgwMFx4MDBceDQxXHgyYVx4ZDJceDAwXHgxNFx4MGIiKSk7CisKKyAgLyoKKyAgICogKG1vZHVs
ZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMgKHJlc3VsdCBpMzIpKSkgKHR5cGUgKHN0cnVjdCkp
KQorICAgKiAgIChyZWMgKHR5cGUgKHN0cnVjdCkpICh0eXBlIChmdW5jIChyZXN1bHQgaTMyKSkp
KQorICAgKiAgIChmdW5jICh0eXBlIDApCisgICAqICAgICAoYmxvY2sgKHR5cGUgMykKKyAgICog
ICAgICAgKGkzMi5jb25zdCA0MikpKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDkx
XHg4MFx4ODBceDgwXHgwMFx4MDJceDRmXHgwMlx4NjBceDAwXHgwMVx4N2ZceDVmXHgwMFx4NGZc
eDAyXHg1Zlx4MDBceDYwXHgwMFx4MDFceDdmXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHgw
Mlx4MDNceDQxXHgyYVx4MGJceDBiIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAo
cmVjICh0eXBlIChmdW5jIChyZXN1bHQgaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAo
cmVjICh0eXBlIChzdHJ1Y3QpKSAodHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSkKKyAgICogICAo
ZnVuYyAodHlwZSAwKQorICAgKiAgICAgKGxvb3AgKHR5cGUgMykKKyAgICogICAgICAgKGkzMi5j
b25zdCA0MikpKQorICAgKiApCisgICAqLworICBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDkxXHg4MFx4ODBceDgw
XHgwMFx4MDJceDRmXHgwMlx4NjBceDAwXHgwMVx4N2ZceDVmXHgwMFx4NGZceDAyXHg1Zlx4MDBc
eDYwXHgwMFx4MDFceDdmXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4ZFx4
ODBceDgwXHg4MFx4MDBceDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHgwM1x4MDNceDQxXHgy
YVx4MGJceDBiIikpOworCisgIC8qCisgICAqIChtb2R1bGUKKyAgICogICAocmVjICh0eXBlIChm
dW5jIChyZXN1bHQgaTMyKSkpICh0eXBlIChzdHJ1Y3QpKSkKKyAgICogICAocmVjICh0eXBlIChz
dHJ1Y3QpKSAodHlwZSAoZnVuYyAocmVzdWx0IGkzMikpKSkKKyAgICogICAoZnVuYyAodHlwZSAw
KQorICAgKiAgICAgKGkzMi5jb25zdCAxKQorICAgKiAgICAgKGlmICh0eXBlIDMpICh0aGVuIChp
MzIuY29uc3QgNDIpKSAoZWxzZSAoaTMyLmNvbnN0IDQzKSkpKQorICAgKiApCisgICAqLworICBu
ZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBc
eDAwXHgwMFx4MDFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDRmXHgwMlx4NjBceDAwXHgwMVx4
N2ZceDVmXHgwMFx4NGZceDAyXHg1Zlx4MDBceDYwXHgwMFx4MDFceDdmXHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDBhXHg5Mlx4ODBceDgwXHg4MFx4MDBceDAxXHg4Y1x4ODBceDgw
XHg4MFx4MDBceDAwXHg0MVx4MDFceDA0XHgwM1x4NDFceDJhXHgwNVx4NDFceDJiXHgwYlx4MGIi
KSk7CisKKyAgLyoKKyAgICogKG1vZHVsZQorICAgKiAgIChyZWMgKHR5cGUgKGZ1bmMpKSAodHlw
ZSAoc3RydWN0KSkpCisgICAqICAgKHRhYmxlIDUgZnVuY3JlZikKKyAgICogICAoZWxlbSBmdW5j
cmVmIChyZWYuZnVuYyAwKSkKKyAgICogICAoZnVuYyAodHlwZSAwKSkKKyAgICogICAoZnVuYyAo
Y2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkKKyAgICogICAoc3RhcnQgMSkK
KyAgICogKQorICAgKi8KKyAgbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSgiXHgwMFx4
NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAxXHg0
Zlx4MDJceDYwXHgwMFx4MDBceDVmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAw
XHgwMFx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDVceDA4XHg4MVx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwOVx4OGJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDZceDAwXHg0MVx4
MDBceDBiXHg3MFx4MDFceGQyXHgwMFx4MGJceDBhXHg5NFx4ODBceDgwXHg4MFx4MDBceDAyXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAw
XHgxMVx4MDBceDAwXHgwYiIpKTsKK30KKwordGVzdFJlY0RlY2xhcmF0aW9uKCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3dhc20vd2FzbS5qc29uIGIvSlNUZXN0cy93YXNtL3dhc20uanNvbgppbmRl
eCA2YTM2ODFkYjk5MzFkNzJiNjI2NDFlNzllMjE1NTk4ZTA4YjYzOTRjLi40Mzc0OTBiNWZkYTc4
ZTVmZGZmMzYwNWQ2NzdkMDU5MWQ1NWY5MjBiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vd2Fz
bS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTE4LDYgKzE4LDcgQEAKICAg
ICAgICAgImZ1bmMiOiAgICAgIHsgInR5cGUiOiAidmFyaW50NyIsICJ2YWx1ZSI6ICAtMzIsICJi
M3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJzdHJ1Y3QiOiAgICB7ICJ0eXBlIjogInZh
cmludDciLCAidmFsdWUiOiAgLTMzLCAiYjN0eXBlIjogIkIzOjpWb2lkIiB9LAogICAgICAgICAi
cnR0IjogICAgICAgeyAidHlwZSI6ICJ2YXJpbnQ3IiwgInZhbHVlIjogIC0yNCwgImIzdHlwZSI6
ICJCMzo6Vm9pZCIgfSwKKyAgICAgICAgInJlYyI6ICAgICAgIHsgInR5cGUiOiAidmFyaW50NyIs
ICJ2YWx1ZSI6ICAtNDksICJiM3R5cGUiOiAiQjM6OlZvaWQiIH0sCiAgICAgICAgICJ2b2lkIjog
ICAgICB7ICJ0eXBlIjogInZhcmludDciLCAidmFsdWUiOiAgLTY0LCAiYjN0eXBlIjogIkIzOjpW
b2lkIiB9CiAgICAgfSwKICAgICAidmFsdWVfdHlwZSI6IFsiaTMyIiwgImk2NCIsICJmMzIiLCAi
ZjY0IiwgImV4dGVybnJlZiIsICJmdW5jcmVmIl0sCg==
</data>
<flag name="review"
          id="487865"
          type_id="1"
          status="?"
          setter="asumu"
    />
    <flag name="commit-queue"
          id="488034"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>