<?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>170909</bug_id>
          
          <creation_ts>2017-04-17 11:25:08 -0700</creation_ts>
          <short_desc>WebAssembly: fast memory cleanups</short_desc>
          <delta_ts>2017-04-19 15:05:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>170628</dependson>
          <blocked>159775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1297952</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-17 11:25:08 -0700</bug_when>
    <thetext>Address a few follow-up comments from Saam in https://bugs.webkit.org/show_bug.cgi?id=170628</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297958</commentid>
    <comment_count>1</comment_count>
      <attachid>307285</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-17 11:30:58 -0700</bug_when>
    <thetext>Created attachment 307285
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297959</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-17 11:33:35 -0700</bug_when>
    <thetext>Attachment 307285 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmMemory.cpp:327:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1297962</commentid>
    <comment_count>3</comment_count>
      <attachid>307285</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-17 11:42:12 -0700</bug_when>
    <thetext>Comment on attachment 307285
patch

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

&gt; Source/JavaScriptCore/b3/B3WasmBoundsCheckValue.h:63
&gt; +    JS_EXPORT_PRIVATE WasmBoundsCheckValue(Origin, Value* ptr, GPRReg pinnedGPR, unsigned offset, size_t maximum = std::numeric_limits&lt;uint32_t&gt;::max());

IMO, this logic for the maximum does not belong in B3. B3 should not know about the semantics of Wasm memory ops. I think you should provide the UINT_MAX from WasmB3IRGenerator. If anything, you could create two constructors to this node, one where the register is pinned, and one where it&apos;s not. Then WasmB3IRGenerator should pass in UINT_MAX. Also, I think your comments that describes the semantics in B3LowerToAir should go into WasmB3IRGenerator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298752</commentid>
    <comment_count>4</comment_count>
      <attachid>307493</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-19 11:29:02 -0700</bug_when>
    <thetext>Created attachment 307493
patch

Address Saam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298754</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-19 11:31:19 -0700</bug_when>
    <thetext>Attachment 307493 did not pass style-queue:


ERROR: Source/JavaScriptCore/wasm/WasmMemory.cpp:327:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298782</commentid>
    <comment_count>6</comment_count>
      <attachid>307493</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-19 12:44:32 -0700</bug_when>
    <thetext>Comment on attachment 307493
patch

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

r=me

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:3173
&gt; +                ASSERT(value-&gt;bounds().maximum &lt;= value-&gt;redzoneLimit());

Nit: It seems weird that B3/Air are asserting this, and that this is a function. I would just assert this when making the node.

&gt; Source/JavaScriptCore/b3/B3Validate.cpp:478
&gt; +                    VALIDATE(value-&gt;as&lt;WasmBoundsCheckValue&gt;()-&gt;bounds().maximum &lt;= value-&gt;as&lt;WasmBoundsCheckValue&gt;()-&gt;redzoneLimit(), (&quot;At &quot;, *value));

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298809</commentid>
    <comment_count>7</comment_count>
      <attachid>307506</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-19 13:58:41 -0700</bug_when>
    <thetext>Created attachment 307506
patch

Address Saam&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298845</commentid>
    <comment_count>8</comment_count>
      <attachid>307506</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-19 15:05:54 -0700</bug_when>
    <thetext>Comment on attachment 307506
patch

Clearing flags on attachment: 307506

Committed r215533: &lt;http://trac.webkit.org/changeset/215533&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298846</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-19 15:05:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307285</attachid>
            <date>2017-04-17 11:30:58 -0700</date>
            <delta_ts>2017-04-19 11:29:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-memory-follow-up.patch</filename>
            <type>text/plain</type>
            <size>15784</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBlMGNkZmZlOTg1ZTIxYzE3YzMyNTZlMzdkOTZjYWRhNTRmNWNhMWE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE3IEFwciAyMDE3IDExOjI5OjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gbWVtb3J5
LWZvbGxvdy11cAoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICB8IDI2ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwICAgICAgICAgIHwgMTAgKysrLS0tLS0KIC4uLi9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcCAgIHwgIDYgKystLS0KIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggIHwgMTQgKysrLS0t
LS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgICAgICAgICAgICAgICAg
fCAgMyArLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cCAgIHwgMTkgKysrKysrKy0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuY3BwICAgICAgICAgIHwgMzAgKysrKysrKysrKysrKy0tLS0tLS0tLQogNyBmaWxlcyBj
aGFuZ2VkLCA2NSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA4MTU4YzA0Li5hOTFiYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOSBAQAorMjAxNy0wNC0xNyAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IGZhc3QgbWVtb3J5IGNsZWFudXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA5MDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb2xsb3ctdXAgdG8g
YWRkcmVzcyBjb21tZW50cyBvbiBteSBwcmV2aW91cyBmYXN0IG1lbW9yeSBwYXRjaC4KKworICAg
ICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6IGNvcnJlY3QgY29tbWVudCwgYW5kIG1ha2Ugd2Fz
bS1pbmRlcGVuZGVudAorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6
CisgICAgICAgICogYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHA6IGhhdmUgdGhlIGNyZWF0
b3IgcGFzcyBpbiBhCisgICAgICAgIG1heGltdW0sIHNvIHdlIGRvbid0IGhhdmUgdG8ga25vdyBz
byBtdWNoIGFib3V0IHdhc20gaGVyZQorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNr
VmFsdWU6Oldhc21Cb3VuZHNDaGVja1ZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6Oldhc21Cb3Vu
ZHNDaGVja1ZhbHVlOjpkdW1wTWV0YSk6CisgICAgICAgICogYjMvQjNXYXNtQm91bmRzQ2hlY2tW
YWx1ZS5oOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6Om1heGltdW0p
OgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0V2FzbUJv
dW5kc0NoZWNrKToKKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIp
OgorICAgICAgICAoSlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOiByZW1vdmUgZGVh
ZCBjb2RlCisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5LmNwcDogZG9uJ3QgR0MgaWYgbm8gbWVt
b3J5IGNvdWxkIHBvc3NpYmx5IGJlIGZyZWUnZAorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6
OmluaXRpYWxpemVQcmVhbGxvY2F0aW9ucyk6IHZlcmJvc2Utb25seSBjb2RlLAorICAgICAgICBh
bmQgY29weS1wYXN0YSBidWcKKwogMjAxNy0wNC0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDT25seV0gRml4IGJ1aWxkIGZhaWx1cmVzIGlu
IG1hY09TCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDUw
NjcwN2QuLjhlMTc2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCkBAIC0zMTQ2LDcgKzMxNDYsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBCMzo6V2FzbUJvdW5kc0NoZWNrOiB7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+YXM8V2FzbUJv
dW5kc0NoZWNrVmFsdWU+KCk7CiAKICAgICAgICAgICAgIFZhbHVlKiBwdHIgPSB2YWx1ZS0+Y2hp
bGQoMCk7CkBAIC0zMTcyLDEwICszMTcxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
Ly8KICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBnb3QgaGVyZSBpdCdzIGJlY2F1c2UgYSBtZW1v
cnkgYWNjZXNzIGhhZCBhIHZlcnkgbGFyZ2Ugb2Zmc2V0LiBXZSBjb3VsZCBjaGVjayB0aGF0IGl0
IGRvZXNuJ3QgZXhjZWVkIDRHaUIrcmVkem9uZSBzaW5jZSB0aGF0J3MKICAgICAgICAgICAgICAg
ICAvLyB0ZWNobmljYWxseSB0aGUgbGltaXQgd2UgbmVlZCB0byBhdm9pZCBvdmVyZmxvd2luZywg
YnV0IGl0J3MgYmV0dGVyIGlmIHdlIHVzZSBhIHNtYWxsZXIgaW1tZWRpYXRlIHdoaWNoIGNvZGVn
ZW5zIG1vcmUgZWFzaWx5LgotICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCBhbnl0aGlu
ZyBhYm92ZSB0aGUgZGVjbGFyZWQgJ21heGltdW0nIHdpbGwgdHJhcCwgc28gd2UgY2FuIGNvbXBh
cmUgYWdhaW5zdCB0aGF0IG51bWJlci4gSWYgdGhlcmUgd2FzIG5vIGRlY2xhcmVkCi0gICAgICAg
ICAgICAgICAgLy8gJ21heGltdW0nIHRoZW4gd2Ugc3RpbGwga25vdyB0aGF0IGFueSBhY2Nlc3Mg
YWJvdmUgNEdpQiB3aWxsIHRyYXAsIG5vIG5lZWQgdG8gYWRkIHRoZSByZWR6b25lLgorICAgICAg
ICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCBhbnl0aGluZyBlcXVhbCB0byBvciBncmVhdGVyIHRo
YW4gdGhlIGRlY2xhcmVkICdtYXhpbXVtJyB3aWxsIHRyYXAsIHNvIHdlIGNhbiBjb21wYXJlIGFn
YWluc3QgdGhhdCBudW1iZXIuIElmIHRoZXJlIHdhcworICAgICAgICAgICAgICAgIC8vIG5vIGRl
Y2xhcmVkICdtYXhpbXVtJyB0aGVuIHdlIHN0aWxsIGtub3cgdGhhdCBhbnkgYWNjZXNzIGVxdWFs
IHRvIG9yIGdyZWF0ZXIgdGhhbiA0R2lCIHdpbGwgdHJhcCwgbm8gbmVlZCB0byBhZGQgdGhlIHJl
ZHpvbmUuCiAgICAgICAgICAgICAgICAgbGltaXQgPSBtX2NvZGUubmV3VG1wKEdQKTsKLSAgICAg
ICAgICAgICAgICBzaXplX3QgbGltaXRWYWx1ZSA9IHZhbHVlLT5tYXhpbXVtKCkgPyB2YWx1ZS0+
bWF4aW11bSgpLmJ5dGVzKCkgOiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7
CisgICAgICAgICAgICAgICAgc2l6ZV90IGxpbWl0VmFsdWUgPSB2YWx1ZS0+bWF4aW11bSgpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChsaW1pdFZhbHVlIDw9IHZhbHVlLT5yZWR6b25lTGltaXQo
KSk7CiAgICAgICAgICAgICAgICAgaWYgKGltbShsaW1pdFZhbHVlKSkKICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kKE1vdmUsIGltbShsaW1pdFZhbHVlKSwgbGltaXQpOwpAQCAtMzE4Myw5ICsz
MTgyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIEFyZzo6
YmlnSW1tKGxpbWl0VmFsdWUpLCBsaW1pdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBh
cHBlbmQoSW5zdChBaXI6Oldhc21Cb3VuZHNDaGVjaywgdmFsdWUsIHB0clBsdXNJbW0sIGxpbWl0
KSk7Ci0jZWxzZQotICAgICAgICAgICAgYXBwZW5kKEFpcjo6T29wcyk7Ci0jZW5kaWYgLy8gRU5B
QkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcApp
bmRleCA4YWVjYzFkLi4wNDhiNGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlOjp+V2FzbUJvdW5kc0NoZWNrVmFsdWUoKQogewogfQogCi1XYXNtQm91bmRz
Q2hlY2tWYWx1ZTo6V2FzbUJvdW5kc0NoZWNrVmFsdWUoT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHB0
ciwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgb2Zmc2V0LCBQYWdlQ291bnQgbWF4aW11bSkK
K1dhc21Cb3VuZHNDaGVja1ZhbHVlOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZShPcmlnaW4gb3JpZ2lu
LCBWYWx1ZSogcHRyLCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBt
YXhpbXVtKQogICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBvcmln
aW4sIHB0cikKICAgICAsIG1fcGlubmVkR1BSKHBpbm5lZEdQUikKICAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKQEAgLTYxLDkgKzYxLDkgQEAgc2l6ZV90IFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpyZWR6
b25lTGltaXQoKSBjb25zdAogdm9pZCBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6ZHVtcE1ldGEoQ29t
bWFQcmludGVyJiBjb21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBpZiAobV9w
aW5uZWRHUFIgPT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmVk
em9uZUxpbWl0ID0gIiwgcmVkem9uZUxpbWl0KCksICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0KTsK
KyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmVkem9uZUxpbWl0ID0gIiwgcmVkem9uZUxpbWl0
KCksICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBtYXhpbXVtID0gIiwgbV9tYXhpbXVtKTsK
ICAgICBlbHNlCi0gICAgICAgIG91dC5wcmludChjb21tYSwgInNpemVSZWdpc3RlciA9ICIsIG1f
cGlubmVkR1BSLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCk7CisgICAgICAgIG91dC5wcmludChj
b21tYSwgInNpemVSZWdpc3RlciA9ICIsIG1fcGlubmVkR1BSLCAiLCBvZmZzZXQgPSAiLCBtX29m
ZnNldCwgIiwgbWF4aW11bSA9ICIsIG1fbWF4aW11bSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5k
c0NoZWNrVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmgKaW5kZXggMTEwZTcxOC4uMTNlNWZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJCM1ZhbHVlLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCi0jaW5jbHVk
ZSAiV2FzbVBhZ2VDb3VudC5oIgorI2luY2x1ZGUgPGxpbWl0cz4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiAKQEAgLTQ3LDE2ICs0NywxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
fldhc21Cb3VuZHNDaGVja1ZhbHVlKCk7CiAKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAg
dHlwZWRlZiBXYXNtOjpQYWdlQ291bnQgUGFnZUNvdW50OwotI2Vsc2UKLSAgICB0eXBlZGVmIGNo
YXIgUGFnZUNvdW50OwotI2VuZGlmCi0KICAgICBHUFJSZWcgcGlubmVkR1BSKCkgY29uc3QgeyBy
ZXR1cm4gbV9waW5uZWRHUFI7IH0KICAgICB1bnNpZ25lZCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIHNpemVfdCByZWR6b25lTGltaXQoKSBjb25zdDsKLSAgICBQYWdl
Q291bnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4aW11bTsgfQorICAgIHNpemVfdCBt
YXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CkBAIC02NiwxMSArNjAsMTEgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUHJvY2VkdXJlOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgV2FzbUJvdW5kc0NoZWNrVmFs
dWUoT3JpZ2luLCBWYWx1ZSogcHRyLCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25lZCBvZmZzZXQs
IFBhZ2VDb3VudCBtYXhpbXVtKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBXYXNtQm91bmRzQ2hl
Y2tWYWx1ZShPcmlnaW4sIFZhbHVlKiBwdHIsIEdQUlJlZyBwaW5uZWRHUFIsIHVuc2lnbmVkIG9m
ZnNldCwgc2l6ZV90IG1heGltdW0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkpOwogCiAgICAgR1BSUmVnIG1fcGlubmVkR1BSOwogICAgIHVuc2lnbmVkIG1fb2Zmc2V0Owot
ICAgIFBhZ2VDb3VudCBtX21heGltdW07CisgICAgc2l6ZV90IG1fbWF4aW11bTsKIH07CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL3Rlc3RiMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRl
eCA2NjFhOTk1Li4zOGQ1MzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
dGVzdGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAt
MTUxODUsOCArMTUxODUsNyBAQCB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zm
c2V0KQogICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGlmIChwb2ludGVy
VHlwZSgpICE9IEludDMyKQogICAgICAgICBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBUcnVuYywgT3JpZ2luKCksIGxlZnQpOwotICAgIFdhc206OlBhZ2VDb3VudCBtYXhpbXVt
OwotICAgIHJvb3QtPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGxlZnQsIHBpbm5lZCwgb2Zmc2V0LCBtYXhpbXVtKTsKKyAgICByb290LT5hcHBlbmROZXc8
V2FzbUJvdW5kc0NoZWNrVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0LCBwaW5uZWQsIG9mZnNl
dCk7CiAgICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCAweDQyKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDFmMTdjYTMuLjBjODg2YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAK
QEAgLTU1NCwxMiArNTU0LDE5IEBAIGlubGluZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdENo
ZWNrQW5kUHJlcGFyZVBvaW50ZXIoRXhwcmVzc2lvblR5cGUgcG9pbnRlciwKICAgICAgICAgLy8g
V2UncmUgbm90IHVzaW5nIHNpZ25hbCBoYW5kbGluZyBhdCBhbGwsIHdlIG11c3QgdGhlcmVmb3Jl
IGNoZWNrIHRoYXQgbm8gbWVtb3J5IGFjY2VzcyBleGNlZWRzIHRoZSBjdXJyZW50IG1lbW9yeSBz
aXplLgogICAgICAgICBBU1NFUlQobV9tZW1vcnlTaXplR1BSKTsKICAgICAgICAgQVNTRVJUKHNp
emVPZk9wZXJhdGlvbiArIG9mZnNldCA+IG9mZnNldCk7Ci0gICAgICAgIG1fY3VycmVudEJsb2Nr
LT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIHBvaW50
ZXIsIG1fbWVtb3J5U2l6ZUdQUiwgc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0IC0gMSwgbV9pbmZv
Lm1lbW9yeS5tYXhpbXVtKCkpOworICAgICAgICBpZiAobV9pbmZvLm1lbW9yeS5tYXhpbXVtKCkp
CisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1Zh
bHVlPihtX3Byb2MsIG9yaWdpbigpLCBwb2ludGVyLCBtX21lbW9yeVNpemVHUFIsIHNpemVPZk9w
ZXJhdGlvbiArIG9mZnNldCAtIDEsIG1faW5mby5tZW1vcnkubWF4aW11bSgpLmJ5dGVzKCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3PFdhc21C
b3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBwb2ludGVyLCBtX21lbW9yeVNpemVH
UFIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKICAgICAgICAgLy8gV2UndmUgdmlydHVhbGx5IG1h
cHBlZCA0R2lCK3JlZHpvbmUgZm9yIHRoaXMgbWVtb3J5LiBPbmx5IHRoZSB1c2VyLWFsbG9jYXRl
ZCBwYWdlcyBhcmUgYWRkcmVzc2FibGUsIGNvbnRpZ3VvdXNseSBpbiByYW5nZSBbMCwgY3VycmVu
dF0sIGFuZCBldmVyeXRoaW5nIGFib3ZlIGlzIG1hcHBlZCBQUk9UX05PTkUuIFdlIGRvbid0IG5l
ZWQgdG8gcGVyZm9ybSBhbnkgZXhwbGljaXQgYm91bmRzIGNoZWNrIGluIHRoZSA0R2lCIHJhbmdl
IGJlY2F1c2UgV2ViQXNzZW1ibHkgcmVnaXN0ZXIgbWVtb3J5IGFjY2Vzc2VzIGFyZSAzMi1iaXQu
IEhvd2V2ZXIgV2ViQXNzZW1ibHkgcmVnaXN0ZXIraW1tZWRpYXRlIGFjY2Vzc2VzIHBlcmZvcm0g
dGhlIGFkZGl0aW9uIGluIDY0LWJpdCB3aGljaCBjYW4gcHVzaCBhbiBhY2Nlc3MgYWJvdmUgdGhl
IDMyLWJpdCBsaW1pdC4gVGhlIHJlZHpvbmUgd2lsbCBjYXRjaCBtb3N0IHNtYWxsIGltbWVkaWF0
ZXMsIGFuZCB3ZSdsbCBleHBsaWNpdGx5IGJvdW5kcyBjaGVjayBhbnkgcmVnaXN0ZXIgKyBsYXJn
ZSBpbW1lZGlhdGUgYWNjZXNzLgotICAgICAgICBpZiAob2Zmc2V0ID49IE1lbW9yeTo6ZmFzdE1h
cHBlZFJlZHpvbmVCeXRlcygpKQotICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5l
dzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcG9pbnRlciwgSW52YWxp
ZEdQUlJlZywgc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0IC0gMSwgbV9pbmZvLm1lbW9yeS5tYXhp
bXVtKCkpOworICAgICAgICBpZiAob2Zmc2V0ID49IE1lbW9yeTo6ZmFzdE1hcHBlZFJlZHpvbmVC
eXRlcygpKSB7CisgICAgICAgICAgICBpZiAobV9pbmZvLm1lbW9yeS5tYXhpbXVtKCkpCisgICAg
ICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1
ZT4obV9wcm9jLCBvcmlnaW4oKSwgcG9pbnRlciwgSW52YWxpZEdQUlJlZywgc2l6ZU9mT3BlcmF0
aW9uICsgb2Zmc2V0IC0gMSwgbV9pbmZvLm1lbW9yeS5tYXhpbXVtKCkuYnl0ZXMoKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxX
YXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcG9pbnRlciwgSW52YWxpZEdQ
UlJlZywgc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0IC0gMSk7CisgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNZW1vcnlNb2RlOjpOdW1iZXJPZk1lbW9yeU1vZGVzOgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTMwMCwxMiArMTMwNyw2IEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBp
bGF0aW9uQ29udGV4dCwgV2FzbUluCiAKICAgICBjb21waWxhdGlvbkNvbnRleHQuanNFbnRyeXBv
aW50VG9XYXNtRW50cnlwb2ludENhbGwgPSBqaXQuY2FsbCgpOwogCi0gICAgaWYgKCEhaW5mby5t
ZW1vcnkpIHsKLSAgICAgICAgLy8gUmVzZXR0aW5nIHRoZSByZWdpc3RlciBwcmV2ZW50cyB0aGUg
R0MgZnJvbSBtaXN0YWtlbmx5IHRoaW5raW5nIHRoYXQgdGhlIGNvbnRleHQgaXMgc3RpbGwgbGl2
ZS4KLSAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2lu
dGVyOwotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgYmFz
ZU1lbW9yeSk7Ci0gICAgfQotCiAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiByZWdB
dE9mZnNldCA6IHJlZ2lzdGVyc1RvU3BpbGwpIHsKICAgICAgICAgR1BSUmVnIHJlZyA9IHJlZ0F0
T2Zmc2V0LnJlZygpLmdwcigpOwogICAgICAgICBBU1NFUlQocmVnICE9IEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5k
ZXggOWU4ZDZlMC4uMGFiNjQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIHsKIGNvbnN0ZXhwciBib29sIHZl
cmJvc2UgPSBmYWxzZTsKIAogTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCB3ZWJBc3NlbWJseUNvdWxkbnRHZXRGYXN0TWVtb3J5KCkgeyBDUkFTSCgpOyB9Ci1ORVZFUl9J
TkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHdlYkFzc2VtYmx5Q291bGRudFVubWFw
TWVtb3J5Qnl0ZXMoKSB7IENSQVNIKCk7IH0KK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHZvaWQgd2ViQXNzZW1ibHlDb3VsZG50VW5tYXBNZW1vcnkoKSB7IENSQVNIKCk7IH0K
IE5FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgd2ViQXNzZW1ibHlDb3Vs
ZG50VW5wcm90ZWN0TWVtb3J5KCkgeyBDUkFTSCgpOyB9CiAKIHZvaWQqIG1tYXBCeXRlcyhzaXpl
X3QgYnl0ZXMpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQqIG1tYXBCeXRlcyhzaXplX3QgYnl0ZXMp
CiB2b2lkIG11bm1hcEJ5dGVzKHZvaWQqIG1lbW9yeSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYg
KFVOTElLRUxZKG11bm1hcChtZW1vcnksIHNpemUpKSkKLSAgICAgICAgd2ViQXNzZW1ibHlDb3Vs
ZG50VW5tYXBNZW1vcnlCeXRlcygpOworICAgICAgICB3ZWJBc3NlbWJseUNvdWxkbnRVbm1hcE1l
bW9yeSgpOwogfQogCiB2b2lkIHplcm9BbmRVbnByb3RlY3RCeXRlcyh2b2lkKiBzdGFydCwgc2l6
ZV90IGJ5dGVzKQpAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQqIHRyeUdldEZhc3RNZW1vcnkoVk0m
IHZtKQogICAgICAgICBtZW1vcnkgPSB0cnlHZXRDYWNoZWRGYXN0TWVtb3J5KCk7CiAgICAgICAg
IGlmIChtZW1vcnkpCiAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAidHJ5R2V0RmFz
dE1lbW9yeSByZS11c2luZyAiLCBSYXdQb2ludGVyKG1lbW9yeSkpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIC8vIE5vIG1lbW9yeSB3YXMgYXZhaWxhYmxlIGluIHRoZSBjYWNoZS4gTWF5
YmUgd2FpdGluZyBvbiBHQyB3aWxsIGZpbmQgYSBmcmVlIG9uZS4KKyAgICAgICAgZWxzZSBpZiAo
Y3VycmVudGx5QWxsb2NhdGVkRmFzdE1lbW9yaWVzLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNx
dWlyZSkgPj0gMSkgeworICAgICAgICAgICAgLy8gTm8gbWVtb3J5IHdhcyBhdmFpbGFibGUgaW4g
dGhlIGNhY2hlLCBidXQgd2Uga25vdyB0aGVyZSdzIGF0IGxlYXN0IG9uZSBjdXJyZW50bHkgbGl2
ZS4gTWF5YmUgR0Mgd2lsbCBmaW5kIGEgZnJlZSBvbmUuCiAgICAgICAgICAgICAvLyBGSVhNRSBj
b2xsZWN0U3luYyhGdWxsKSBhbmQgY3VzdG9tIGVhZ2VyIGRlc3RydWN0aW9uIG9mIHdhc20gbWVt
b3JpZXMgY291bGQgYmUgYmV0dGVyLiBGb3Igbm93IHVzZSBjb2xsZWN0QWxsR2FyYmFnZS4gQWxz
bywgbm90aGluZyB0ZWxscyB1cyB0aGUgY3VycmVudCBWTSBpcyBob2xkaW5nIG9udG8gZmFzdCBt
ZW1vcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDc0OAog
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInRyeUdldEZhc3RNZW1vcnkgd2FpdGlu
ZyBvbiBHQyBhbmQgcmV0cnlpbmciKTsKICAgICAgICAgICAgIHZtLmhlYXAuY29sbGVjdEFsbEdh
cmJhZ2UoKTsKQEAgLTI3MywxNCArMjczLDE3IEBAIHZvaWQgTWVtb3J5Ojppbml0aWFsaXplUHJl
YWxsb2NhdGlvbnMoKQogCiAgICAgLy8gUmFjZXMgY2Fubm90IG9jY3VyIGluIHRoaXMgZnVuY3Rp
b246IGl0IGlzIG9ubHkgY2FsbGVkIGF0IHByb2dyYW0gaW5pdGlhbGl6YXRpb24sIGJlZm9yZSBX
ZWJBc3NlbWJseSBjYW4gYmUgaW52b2tlZC4KIAotICAgIGNvbnN0IGF1dG8gc3RhcnRUaW1lID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWU7CisgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwor
CiAgICAgY29uc3Qgc2l6ZV90IGRlc2lyZWRGYXN0TWVtb3JpZXMgPSBzdGQ6Om1pbjxzaXplX3Q+
KE9wdGlvbnM6OndlYkFzc2VtYmx5RmFzdE1lbW9yeVByZWFsbG9jYXRlQ291bnQoKSwgZmFzdE1l
bW9yeUNhY2hlSGFyZExpbWl0KTsKIAogICAgIC8vIFN0YXJ0IG9mZiB0cnlpbmcgdG8gYWxsb2Nh
dGUgZmFzdCBtZW1vcmllcyBjb250aWd1b3VzbHkgc28gdGhleSBkb24ndCBmcmFnbWVudCBlYWNo
IG90aGVyLiBUaGlzIGNhbiBmYWlsIGlmIHRoZSBhZGRyZXNzIHNwYWNlIGlzIG90aGVyd2lzZSBm
cmFnbWVudGVkLiBJbiB0aGF0IGNhc2UsIGdvIGZvciBzbWFsbGVyIGNvbnRpZ3VvdXMgYWxsb2Nh
dGlvbnMuIFdlJ2xsIGV2ZW50dWFsbHkgZ2V0IGluZGl2aWR1YWwgbm9uLWNvbnRpZ3VvdXMgZmFz
dCBtZW1vcmllcyBhbGxvY2F0ZWQsIG9yIHdlJ2xsIGp1c3QgYmUgdW5hYmxlIHRvIGZpdCBhIHNp
bmdsZSBvbmUgYXQgd2hpY2ggcG9pbnQgd2UgZ2l2ZSB1cC4KICAgICBhdXRvIGFsbG9jYXRlQ29u
dGlndW91c0Zhc3RNZW1vcmllcyA9IFsmXSAoc2l6ZV90IG51bUNvbnRpZ3VvdXMpIC0+IGJvb2wg
ewogICAgICAgICBpZiAodm9pZCAqbWVtb3J5ID0gbW1hcEJ5dGVzKE1lbW9yeTo6ZmFzdE1hcHBl
ZEJ5dGVzKCkgKiBudW1Db250aWd1b3VzKSkgewogICAgICAgICAgICAgZm9yIChzaXplX3Qgc3Vi
TWVtb3J5ID0gMDsgc3ViTWVtb3J5IDwgbnVtQ29udGlndW91czsgKytzdWJNZW1vcnkpIHsKLSAg
ICAgICAgICAgICAgICB2b2lkKiBzdGFydEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNoYXIq
PihtZW1vcnkpICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAqIHN1Yk1lbW9yeSArIHN1Yk1l
bW9yeTsKKyAgICAgICAgICAgICAgICB2b2lkKiBzdGFydEFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPihtZW1vcnkpICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAqIHN1Yk1lbW9y
eTsKICAgICAgICAgICAgICAgICBib29sIGluc2VydGVkID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgY2FjaGVFbnRyeSA9IDA7IGNhY2hlRW50cnkgPCBmYXN0TWVtb3J5Q2Fj
aGVIYXJkTGltaXQ7ICsrY2FjaGVFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZmFz
dE1lbW9yeUNhY2hlW2NhY2hlRW50cnldLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkg
PT0gbnVsbHB0cikgewpAQCAtMzEyLDE0ICszMTUsMTcgQEAgdm9pZCBNZW1vcnk6OmluaXRpYWxp
emVQcmVhbGxvY2F0aW9ucygpCiAgICAgY3VycmVudGx5QWxsb2NhdGVkRmFzdE1lbW9yaWVzLnN0
b3JlKGZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNvdW50LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KTsKICAgICBvYnNlcnZlZE1heGltdW1GYXN0TWVtb3J5LnN0b3JlKGZhc3RNZW1vcnlQcmVhbGxv
Y2F0ZUNvdW50LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKIAotICAgIGNvbnN0IGF1dG8g
ZW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgIE1vbm90b25pY1RpbWUgZW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworCisgICAg
ICAgIGZvciAoc2l6ZV90IGNhY2hlRW50cnkgPSAwOyBjYWNoZUVudHJ5IDwgZmFzdE1lbW9yeVBy
ZWFsbG9jYXRlQ291bnQ7ICsrY2FjaGVFbnRyeSkgeworICAgICAgICAgICAgdm9pZCogc3RhcnRB
ZGRyZXNzID0gZmFzdE1lbW9yeUNhY2hlW2NhY2hlRW50cnldLmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7CisgICAgICAgICAgICBBU1NFUlQoc3RhcnRBZGRyZXNzKTsKKyAgICAgICAg
ICAgIGRhdGFMb2dMbigiUHJlLWFsbG9jYXRpb24gb2YgV2ViQXNzZW1ibHkgZmFzdCBtZW1vcnkg
YXQgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MpKTsKKyAgICAgICAgfQogCi0gICAgZm9yIChz
aXplX3QgY2FjaGVFbnRyeSA9IDA7IGNhY2hlRW50cnkgPCBmYXN0TWVtb3J5UHJlYWxsb2NhdGVD
b3VudDsgKytjYWNoZUVudHJ5KSB7Ci0gICAgICAgIHZvaWQqIHN0YXJ0QWRkcmVzcyA9IGZhc3RN
ZW1vcnlDYWNoZVtjYWNoZUVudHJ5XS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwot
ICAgICAgICBBU1NFUlQoc3RhcnRBZGRyZXNzKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9z
ZSwgIlByZS1hbGxvY2F0aW9uIG9mIFdlYkFzc2VtYmx5IGZhc3QgbWVtb3J5IGF0ICIsIFJhd1Bv
aW50ZXIoc3RhcnRBZGRyZXNzKSk7CisgICAgICAgIGRhdGFMb2dMbigiUHJlLWFsbG9jYXRlZCAi
LCBmYXN0TWVtb3J5UHJlYWxsb2NhdGVDb3VudCwgIiBXZWJBc3NlbWJseSBmYXN0IG1lbW9yaWVz
IGluICIsIGZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNvdW50ID09IDAgPyAwIDogZnJhZ21lbnRzLCBm
cmFnbWVudHMgPT0gMSA/ICIgZnJhZ21lbnQsIHRvb2sgIiA6ICIgZnJhZ21lbnRzLCB0b29rICIs
IGVuZFRpbWUgLSBzdGFydFRpbWUpOwogICAgIH0KLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAi
UHJlLWFsbG9jYXRlZCAiLCBmYXN0TWVtb3J5UHJlYWxsb2NhdGVDb3VudCwgIiBXZWJBc3NlbWJs
eSBmYXN0IG1lbW9yaWVzIGluICIsIGZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNvdW50ID09IDAgPyAw
IDogZnJhZ21lbnRzLCBmcmFnbWVudHMgPT0gMSA/ICIgZnJhZ21lbnQsIHRvb2sgIiA6ICIgZnJh
Z21lbnRzLCB0b29rICIsIGVuZFRpbWUgLSBzdGFydFRpbWUpOwogfQogCiBNZW1vcnk6Ok1lbW9y
eShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0pCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307493</attachid>
            <date>2017-04-19 11:29:02 -0700</date>
            <delta_ts>2017-04-19 13:58:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-memory-follow-up.patch</filename>
            <type>text/plain</type>
            <size>24641</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA3YzU3OTgyMmZhMDM5NmRiZDY4Nzk3NjQwYTY3ZGVjZTBmODc4MTY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE3IEFwciAyMDE3IDExOjI5OjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gbWVtb3J5
LWZvbGxvdy11cAoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICB8IDI2ICsrKysrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTG93ZXJUb0Fpci5jcHAgICAgICAgICAgfCAzMSArKysrKysrKystLS0tLS0tLS0tLS0t
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaCAgICAgICAgICAgICB8ICAy
ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgICAgICAgICAgICB8
IDEwICsrKysrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCAgICAgICAg
ICAgICAgIHwgIDcgKysrKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVj
a1ZhbHVlLmNwcCAgIHwgMjggKysrKysrKysrKysrKy0tLS0tLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaCAgfCAyNiArKysrKysrKysrLS0tLS0tLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oICAgICAgICAgICAgIHwgIDIg
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9tLmggICAgICAgICAgIHwg
MTAgKysrKysrLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAgICAgICAgICAg
ICAgICAgfCAgNiArKy0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwICAgfCAzMSArKysrKysrKysrKysrKy0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCAgICAgICAgICB8IDMwICsrKysrKysrKysrKy0tLS0t
LS0tLQogMTIgZmlsZXMgY2hhbmdlZCwgMTM4IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNhNDdjMDIuLmQ0YjY1Y2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA0LTE3ICBKRiBCYXN0aWVu
ICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogZmFzdCBtZW1v
cnkgY2xlYW51cHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDkwOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZvbGxvdy11cCB0byBhZGRyZXNzIGNvbW1lbnRzIG9uIG15IHByZXZpb3VzIGZhc3QgbWVt
b3J5IHBhdGNoLgorCisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDogY29ycmVjdCBjb21t
ZW50LCBhbmQgbWFrZSB3YXNtLWluZGVwZW5kZW50CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxv
d2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNw
cDogaGF2ZSB0aGUgY3JlYXRvciBwYXNzIGluIGEKKyAgICAgICAgbWF4aW11bSwgc28gd2UgZG9u
J3QgaGF2ZSB0byBrbm93IHNvIG11Y2ggYWJvdXQgd2FzbSBoZXJlCisgICAgICAgIChKU0M6OkIz
OjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6V2FzbUJvdW5kc0NoZWNrVmFsdWUpOgorICAgICAgICAo
SlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6OmR1bXBNZXRhKToKKyAgICAgICAgKiBiMy9C
M1dhc21Cb3VuZHNDaGVja1ZhbHVlLmg6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hl
Y2tWYWx1ZTo6bWF4aW11bSk6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RXYXNtQm91bmRzQ2hlY2spOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjplbWl0Q2hlY2tB
bmRQcmVwYXJlUG9pbnRlcik6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9XYXNtV3Jh
cHBlcik6IHJlbW92ZSBkZWFkIGNvZGUKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnkuY3BwOiBk
b24ndCBHQyBpZiBubyBtZW1vcnkgY291bGQgcG9zc2libHkgYmUgZnJlZSdkCisgICAgICAgIChK
U0M6Oldhc206Ok1lbW9yeTo6aW5pdGlhbGl6ZVByZWFsbG9jYXRpb25zKTogdmVyYm9zZS1vbmx5
IGNvZGUsCisgICAgICAgIGFuZCBjb3B5LXBhc3RhIGJ1ZworCiAyMDE3LTA0LTE5ICBBbmR5IFZh
bldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CiAKICAgICAgICAgW0lOVExdIElt
cGxlbWVudCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDUwNjcwN2QuLjEzNTQz
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0zMTQ2
LDcgKzMxNDYsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBCMzo6V2Fz
bUJvdW5kc0NoZWNrOiB7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICAgICAgV2Fz
bUJvdW5kc0NoZWNrVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFs
dWU+KCk7CiAKICAgICAgICAgICAgIFZhbHVlKiBwdHIgPSB2YWx1ZS0+Y2hpbGQoMCk7CkBAIC0z
MTY0LDI4ICszMTYzLDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IEFyZyBsaW1pdDsKLSAgICAgICAgICAgIGlmICh2YWx1ZS0+cGlubmVkR1BSKCkgIT0gSW52YWxp
ZEdQUlJlZykKLSAgICAgICAgICAgICAgICBsaW1pdCA9IEFyZyh2YWx1ZS0+cGlubmVkR1BSKCkp
OwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gU2lnbmFsaW5nIG1lbW9y
aWVzIGRvbid0IHBpbiBhIHJlZ2lzdGVyIGJlY2F1c2Ugb25seSB0aGUgYWNjZXNzZXMgd2hvc2Ug
cmVnK2ltbSBjb3VsZCBldmVyIG92ZXJmbG93IDRHaUIrcmVkem9uZSBuZWVkIHRvIGJlIGNoZWNr
ZWQsCi0gICAgICAgICAgICAgICAgLy8gYW5kIHdlIGRvbid0IHRoaW5rIHRoZXNlIHdpbGwgYmUg
ZnJlcXVlbnQuIEFsbCBvdGhlciBhY2Nlc3NlcyB3aWxsIHRyYXAgZHVlIHRvIFBST1RfTk9ORSBw
YWdlcy4KLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIElmIHdlIGdvdCBo
ZXJlIGl0J3MgYmVjYXVzZSBhIG1lbW9yeSBhY2Nlc3MgaGFkIGEgdmVyeSBsYXJnZSBvZmZzZXQu
IFdlIGNvdWxkIGNoZWNrIHRoYXQgaXQgZG9lc24ndCBleGNlZWQgNEdpQityZWR6b25lIHNpbmNl
IHRoYXQncwotICAgICAgICAgICAgICAgIC8vIHRlY2huaWNhbGx5IHRoZSBsaW1pdCB3ZSBuZWVk
IHRvIGF2b2lkIG92ZXJmbG93aW5nLCBidXQgaXQncyBiZXR0ZXIgaWYgd2UgdXNlIGEgc21hbGxl
ciBpbW1lZGlhdGUgd2hpY2ggY29kZWdlbnMgbW9yZSBlYXNpbHkuCi0gICAgICAgICAgICAgICAg
Ly8gV2Uga25vdyB0aGF0IGFueXRoaW5nIGFib3ZlIHRoZSBkZWNsYXJlZCAnbWF4aW11bScgd2ls
bCB0cmFwLCBzbyB3ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IHRoYXQgbnVtYmVyLiBJZiB0aGVyZSB3
YXMgbm8gZGVjbGFyZWQKLSAgICAgICAgICAgICAgICAvLyAnbWF4aW11bScgdGhlbiB3ZSBzdGls
bCBrbm93IHRoYXQgYW55IGFjY2VzcyBhYm92ZSA0R2lCIHdpbGwgdHJhcCwgbm8gbmVlZCB0byBh
ZGQgdGhlIHJlZHpvbmUuCisgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlLT5ib3VuZHNUeXBlKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrVmFsdWU6OlR5cGU6OlBpbm5lZDoK
KyAgICAgICAgICAgICAgICBsaW1pdCA9IEFyZyh2YWx1ZS0+Ym91bmRzKCkucGlubmVkKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2tW
YWx1ZTo6VHlwZTo6TWF4aW11bToKICAgICAgICAgICAgICAgICBsaW1pdCA9IG1fY29kZS5uZXdU
bXAoR1ApOwotICAgICAgICAgICAgICAgIHNpemVfdCBsaW1pdFZhbHVlID0gdmFsdWUtPm1heGlt
dW0oKSA/IHZhbHVlLT5tYXhpbXVtKCkuYnl0ZXMoKSA6IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDMyX3Q+OjptYXgoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobGltaXRWYWx1ZSA8PSB2YWx1
ZS0+cmVkem9uZUxpbWl0KCkpOwotICAgICAgICAgICAgICAgIGlmIChpbW0obGltaXRWYWx1ZSkp
Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBpbW0obGltaXRWYWx1ZSksIGxpbWl0
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQodmFsdWUtPmJvdW5kcygpLm1heGltdW0gPD0gdmFs
dWUtPnJlZHpvbmVMaW1pdCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW1tKHZhbHVlLT5ib3Vu
ZHMoKS5tYXhpbXVtKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIGltbSh2YWx1
ZS0+Ym91bmRzKCkubWF4aW11bSksIGxpbWl0KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShsaW1pdFZhbHVlKSwgbGlt
aXQpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUt
PmJvdW5kcygpLm1heGltdW0pLCBsaW1pdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGFwcGVuZChJbnN0KEFpcjo6V2FzbUJvdW5kc0NoZWNr
LCB2YWx1ZSwgcHRyUGx1c0ltbSwgbGltaXQpKTsKLSNlbHNlCi0gICAgICAgICAgICBhcHBlbmQo
QWlyOjpPb3BzKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApp
bmRleCA0OGVkZTFiLi44YjZhM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBWYXJpYWJsZTsKIAogbmFtZXNwYWNlIEFpciB7
IGNsYXNzIENvZGU7IH0KIAotdHlwZWRlZiB2b2lkIFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1
bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZywgdW5zaWduZWQpOwordHlwZWRlZiB2b2lkIFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZyk7CiB0
eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdhc21C
b3VuZHNDaGVja0dlbmVyYXRvcjsKIAogLy8gVGhpcyByZXByZXNlbnRzIEIzJ3MgdmlldyBvZiBh
IHBpZWNlIG9mIGNvZGUuIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBtdXN0IGV4aXN0IGluIGEgMTox
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggY2MzYTU2Zi4uMjky
NTY2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApAQCAtNDcwLDgg
KzQ3MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJB
dCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmFzPFdhc21Cb3VuZHND
aGVja1ZhbHVlPigpLT5waW5uZWRHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5jb2RlKCkuaXNQaW5uZWQodmFsdWUtPmFzPFdh
c21Cb3VuZHNDaGVja1ZhbHVlPigpLT5waW5uZWRHUFIoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCkt
PmJvdW5kc1R5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrVmFs
dWU6OlR5cGU6OlBpbm5lZDoKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUobV9wcm9jZWR1
cmUuY29kZSgpLmlzUGlubmVkKHZhbHVlLT5hczxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4oKS0+Ym91
bmRzKCkucGlubmVkKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6VHlwZTo6TWF4
aW11bToKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmFzPFdhc21Cb3VuZHND
aGVja1ZhbHVlPigpLT5ib3VuZHMoKS5tYXhpbXVtIDw9IHZhbHVlLT5hczxXYXNtQm91bmRzQ2hl
Y2tWYWx1ZT4oKS0+cmVkem9uZUxpbWl0KCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBWQUxJ
REFURShtX3Byb2NlZHVyZS5jb2RlKCkud2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKCksICgiQXQg
IiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVw
c2lsb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKaW5kZXggNjViMTdlMy4uNWE5
MDE2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtNjY1LDggKzY2NSwx
MyBAQCBFZmZlY3RzIFZhbHVlOjplZmZlY3RzKCkgY29uc3QKICAgICAgICAgcmVzdWx0ID0gRWZm
ZWN0czo6Zm9yQ2hlY2soKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXYXNtQm91bmRzQ2hl
Y2s6Ci0gICAgICAgIGlmIChhczxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4oKS0+cGlubmVkR1BSKCkg
IT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgc3dpdGNoIChhczxXYXNtQm91bmRzQ2hlY2tWYWx1
ZT4oKS0+Ym91bmRzVHlwZSgpKSB7CisgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrVmFsdWU6
OlR5cGU6OlBpbm5lZDoKICAgICAgICAgICAgIHJlc3VsdC5yZWFkc1Bpbm5lZCA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6VHlw
ZTo6TWF4aW11bToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIHJlc3Vs
dC5leGl0c1NpZGV3YXlzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVcHNpbG9u
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNr
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFs
dWUuY3BwCmluZGV4IDhhZWNjMWQuLjMxZDdmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAKQEAgLTM1LDEyICszNSwyMCBA
QCBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6fldhc21Cb3VuZHNDaGVja1ZhbHVlKCkKIHsKIH0KIAot
V2FzbUJvdW5kc0NoZWNrVmFsdWU6Oldhc21Cb3VuZHNDaGVja1ZhbHVlKE9yaWdpbiBvcmlnaW4s
IFZhbHVlKiBwdHIsIEdQUlJlZyBwaW5uZWRHUFIsIHVuc2lnbmVkIG9mZnNldCwgUGFnZUNvdW50
IG1heGltdW0pCitXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6V2FzbUJvdW5kc0NoZWNrVmFsdWUoT3Jp
Z2luIG9yaWdpbiwgVmFsdWUqIHB0ciwgdW5zaWduZWQgb2Zmc2V0LCBHUFJSZWcgcGlubmVkR1BS
KQogICAgIDogVmFsdWUoQ2hlY2tlZE9wY29kZSwgV2FzbUJvdW5kc0NoZWNrLCBvcmlnaW4sIHB0
cikKLSAgICAsIG1fcGlubmVkR1BSKHBpbm5lZEdQUikKICAgICAsIG1fb2Zmc2V0KG9mZnNldCkK
LSAgICAsIG1fbWF4aW11bShtYXhpbXVtKQorICAgICwgbV9ib3VuZHNUeXBlKFR5cGU6OlBpbm5l
ZCkKIHsKKyAgICBtX2JvdW5kcy5waW5uZWQgPSBwaW5uZWRHUFI7Cit9CisKK1dhc21Cb3VuZHND
aGVja1ZhbHVlOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZShPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcHRy
LCB1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBtYXhpbXVtKQorICAgIDogVmFsdWUoQ2hlY2tlZE9w
Y29kZSwgV2FzbUJvdW5kc0NoZWNrLCBvcmlnaW4sIHB0cikKKyAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKKyAgICAsIG1fYm91bmRzVHlwZShUeXBlOjpNYXhpbXVtKQoreworICAgIG1fYm91bmRzLm1h
eGltdW0gPSBtYXhpbXVtOwogfQogCiBWYWx1ZSogV2FzbUJvdW5kc0NoZWNrVmFsdWU6OmNsb25l
SW1wbCgpIGNvbnN0CkBAIC01MCw4ICs1OCw4IEBAIFZhbHVlKiBXYXNtQm91bmRzQ2hlY2tWYWx1
ZTo6Y2xvbmVJbXBsKCkgY29uc3QKIAogc2l6ZV90IFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpyZWR6
b25lTGltaXQoKSBjb25zdAogewotICAgIEFTU0VSVChtX3Bpbm5lZEdQUiA9PSBJbnZhbGlkR1BS
UmVnKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgQVNTRVJUKG1fYm91bmRzVHlwZSA9
PSBUeXBlOjpNYXhpbXVtKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkgKyBXYXNtOjpNZW1vcnk6OmZhc3RNYXBw
ZWRSZWR6b25lQnl0ZXMoKTsKICNlbHNlCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTYwLDEwICs2OCwxNCBAQCBzaXplX3QgV2FzbUJvdW5kc0NoZWNrVmFsdWU6OnJlZHpv
bmVMaW1pdCgpIGNvbnN0CiAKIHZvaWQgV2FzbUJvdW5kc0NoZWNrVmFsdWU6OmR1bXBNZXRhKENv
bW1hUHJpbnRlciYgY29tbWEsIFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgaWYgKG1f
cGlubmVkR1BSID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgIG91dC5wcmludChjb21tYSwgInJl
ZHpvbmVMaW1pdCA9ICIsIHJlZHpvbmVMaW1pdCgpLCAiLCBvZmZzZXQgPSAiLCBtX29mZnNldCk7
Ci0gICAgZWxzZQotICAgICAgICBvdXQucHJpbnQoY29tbWEsICJzaXplUmVnaXN0ZXIgPSAiLCBt
X3Bpbm5lZEdQUiwgIiwgb2Zmc2V0ID0gIiwgbV9vZmZzZXQpOworICAgIHN3aXRjaCAobV9ib3Vu
ZHNUeXBlKSB7CisgICAgY2FzZSBUeXBlOjpQaW5uZWQ6CisgICAgICAgIG91dC5wcmludChjb21t
YSwgIm9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBwaW5uZWQgPSAiLCBtX2JvdW5kcy5waW5uZWQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGU6Ok1heGltdW06CisgICAgICAgIG91dC5w
cmludChjb21tYSwgIm9mZnNldCA9ICIsIG1fb2Zmc2V0LCAiLCBtYXhpbXVtID0gIiwgbV9ib3Vu
ZHMubWF4aW11bSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQm91
bmRzQ2hlY2tWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0No
ZWNrVmFsdWUuaAppbmRleCAxMTBlNzE4Li5hODJhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmgKQEAgLTI5LDcgKzI5LDYgQEAK
IAogI2luY2x1ZGUgIkIzVmFsdWUuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKLSNpbmNs
dWRlICJXYXNtUGFnZUNvdW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
CkBAIC00NywxNiArNDYsMjAgQEAgcHVibGljOgogICAgIAogICAgIH5XYXNtQm91bmRzQ2hlY2tW
YWx1ZSgpOwogCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHR5cGVkZWYgV2FzbTo6UGFn
ZUNvdW50IFBhZ2VDb3VudDsKLSNlbHNlCi0gICAgdHlwZWRlZiBjaGFyIFBhZ2VDb3VudDsKLSNl
bmRpZgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFBpbm5lZCwKKyAgICAgICAgTWF4
aW11bSwKKyAgICB9OworCisgICAgdW5pb24gQm91bmRzIHsKKyAgICAgICAgR1BSUmVnIHBpbm5l
ZDsKKyAgICAgICAgc2l6ZV90IG1heGltdW07CisgICAgfTsKIAotICAgIEdQUlJlZyBwaW5uZWRH
UFIoKSBjb25zdCB7IHJldHVybiBtX3Bpbm5lZEdQUjsgfQogICAgIHVuc2lnbmVkIG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAgVHlwZSBib3VuZHNUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZHNUeXBlOyB9CisgICAgQm91bmRzIGJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIG1fYm91bmRzOyB9CiAgICAgc2l6ZV90IHJlZHpvbmVMaW1pdCgpIGNvbnN0OwotICAgIFBh
Z2VDb3VudCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV9tYXhpbXVtOyB9CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIGR1bXBNZXRhKENvbW1hUHJpbnRlciYsIFByaW50U3RyZWFtJikgY29uc3Qg
b3ZlcnJpZGU7CkBAIC02NiwxMSArNjksMTIgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgUHJvY2VkdXJlOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgV2FzbUJvdW5k
c0NoZWNrVmFsdWUoT3JpZ2luLCBWYWx1ZSogcHRyLCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25l
ZCBvZmZzZXQsIFBhZ2VDb3VudCBtYXhpbXVtKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBXYXNt
Qm91bmRzQ2hlY2tWYWx1ZShPcmlnaW4sIFZhbHVlKiBwdHIsIHVuc2lnbmVkIG9mZnNldCwgR1BS
UmVnIHBpbm5lZEdQUik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgV2FzbUJvdW5kc0NoZWNrVmFs
dWUoT3JpZ2luLCBWYWx1ZSogcHRyLCB1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBtYXhpbXVtKTsK
IAotICAgIEdQUlJlZyBtX3Bpbm5lZEdQUjsKICAgICB1bnNpZ25lZCBtX29mZnNldDsKLSAgICBQ
YWdlQ291bnQgbV9tYXhpbXVtOworICAgIFR5cGUgbV9ib3VuZHNUeXBlOworICAgIEJvdW5kcyBt
X2JvdW5kczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCAwNjYxOTVjLi45NzUwNmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBDQ2FsbFNw
ZWNpYWw7CiBjbGFzcyBDRkc7CiBjbGFzcyBEaXNhc3NlbWJsZXI7CiAKLXR5cGVkZWYgdm9pZCBX
YXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5jdGlvbihDQ2FsbEhlbHBlcnMmLCBHUFJSZWcsIHVu
c2lnbmVkKTsKK3R5cGVkZWYgdm9pZCBXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3JGdW5jdGlvbihD
Q2FsbEhlbHBlcnMmLCBHUFJSZWcpOwogdHlwZWRlZiBTaGFyZWRUYXNrPFdhc21Cb3VuZHNDaGVj
a0dlbmVyYXRvckZ1bmN0aW9uPiBXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3I7CiAKIC8vIFRoaXMg
aXMgYW4gSVIgdGhhdCBpcyB2ZXJ5IGNsb3NlIHRvIHRoZSBiYXJlIG1ldGFsLiBJdCByZXF1aXJl
cyBhYm91dCA0MHggbW9yZSBieXRlcyB0aGFuIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ3VzdG9tLmgKaW5kZXggYTM3YjJkYi4uZjhmM2RmZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckN1c3RvbS5oCkBAIC0zMTQsNyArMzE0LDE1IEBAIHN0cnVjdCBXYXNt
Qm91bmRzQ2hlY2tDdXN0b20gOiBwdWJsaWMgQ29tbW9uQ3VzdG9tQmFzZTxXYXNtQm91bmRzQ2hl
Y2tDdXN0b20+IHsKICAgICAgICAgY29udGV4dC5sYXRlUGF0aHMuYXBwZW5kKGNyZWF0ZVNoYXJl
ZFRhc2s8R2VuZXJhdGlvbkNvbnRleHQ6OkxhdGVQYXRoRnVuY3Rpb24+KAogICAgICAgICAgICAg
W291dE9mQm91bmRzLCB2YWx1ZV0gKENDYWxsSGVscGVycyYgaml0LCBBaXI6OkdlbmVyYXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgb3V0T2ZCb3VuZHMubGluaygmaml0
KTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmNvZGUtPndhc21Cb3VuZHNDaGVja0dlbmVyYXRv
cigpLT5ydW4oaml0LCB2YWx1ZS0+cGlubmVkR1BSKCksIHZhbHVlLT5vZmZzZXQoKSk7CisgICAg
ICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+Ym91bmRzVHlwZSgpKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6VHlwZTo6UGlubmVkOgorICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmNvZGUtPndhc21Cb3VuZHNDaGVja0dlbmVyYXRvcigpLT5ydW4oaml0
LCB2YWx1ZS0+Ym91bmRzKCkucGlubmVkKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpUeXBlOjpNYXhpbXVt
OgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvZGUtPndhc21Cb3VuZHNDaGVja0dlbmVy
YXRvcigpLT5ydW4oaml0LCBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSkpOwogCiAgICAgICAgIC8vIFdl
IHNhaWQgd2Ugd2VyZSBub3QgYSB0ZXJtaW5hbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKaW5kZXggNjYxYTk5NS4uMjFmMWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKQEAgLTE1MTcwLDkgKzE1MTcwLDggQEAgdm9pZCB0ZXN0V2FzbUJvdW5kc0NoZWNrKHVuc2ln
bmVkIG9mZnNldCkKICAgICBHUFJSZWcgcGlubmVkID0gR1BSSW5mbzo6YXJndW1lbnRHUFIxOwog
ICAgIHByb2MucGluUmVnaXN0ZXIocGlubmVkKTsKIAotICAgIHByb2Muc2V0V2FzbUJvdW5kc0No
ZWNrR2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIsIHVu
c2lnbmVkIGFjdHVhbE9mZnNldCkgeworICAgIHByb2Muc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJh
dG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIpIHsKICAgICAgICAg
Q0hFQ0tfRVEocGlubmVkR1BSLCBwaW5uZWQpOwotICAgICAgICBDSEVDS19FUShhY3R1YWxPZmZz
ZXQsIG9mZnNldCk7CiAKICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVz
ZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQogICAgICAg
ICAvLyBzYXZlcy4KQEAgLTE1MTg1LDggKzE1MTg0LDcgQEAgdm9pZCB0ZXN0V2FzbUJvdW5kc0No
ZWNrKHVuc2lnbmVkIG9mZnNldCkKICAgICBWYWx1ZSogbGVmdCA9IHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
ICAgICBpZiAocG9pbnRlclR5cGUoKSAhPSBJbnQzMikKICAgICAgICAgbGVmdCA9IHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigpLCBsZWZ0KTsKLSAgICBXYXNtOjpQ
YWdlQ291bnQgbWF4aW11bTsKLSAgICByb290LT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0LCBwaW5uZWQsIG9mZnNldCwgbWF4aW11bSk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgbGVm
dCwgcGlubmVkLCBvZmZzZXQpOwogICAgIFZhbHVlKiByZXN1bHQgPSByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMHg0Mik7CiAgICAgcm9vdC0+YXBwZW5kTmV3
Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJlc3VsdCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAppbmRleCAxZjE3
Y2EzLi44N2VlZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
QjNJUkdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIz
SVJHZW5lcmF0b3IuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5o
IgogI2luY2x1ZGUgIldhc21PcGNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJXYXNtVGh1bmtzLmgi
CisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMzUyLDcgKzM1Myw3IEBAIEIzSVJHZW5lcmF0b3I6
OkIzSVJHZW5lcmF0b3IoY29uc3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYg
cHJvY2VkdXJlCiAgICAgfQogCiAgICAgaWYgKGluZm8ubWVtb3J5KSB7Ci0gICAgICAgIG1fcHJv
Yy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgR1BS
UmVnIHBpbm5lZEdQUiwgdW5zaWduZWQpIHsKKyAgICAgICAgbV9wcm9jLnNldFdhc21Cb3VuZHND
aGVja0dlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSKSB7
CiAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNo
KGppdCk7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzoKQEAgLTU0OSwxOCArNTUwLDMyIEBAIGF1dG8gQjNJ
UkdlbmVyYXRvcjo6c2V0R2xvYmFsKHVpbnQzMl90IGluZGV4LCBFeHByZXNzaW9uVHlwZSB2YWx1
ZSkgLT4gUGFydGlhbFJlCiBpbmxpbmUgVmFsdWUqIEIzSVJHZW5lcmF0b3I6OmVtaXRDaGVja0Fu
ZFByZXBhcmVQb2ludGVyKEV4cHJlc3Npb25UeXBlIHBvaW50ZXIsIHVpbnQzMl90IG9mZnNldCwg
dWludDMyX3Qgc2l6ZU9mT3BlcmF0aW9uKQogewogICAgIEFTU0VSVChtX21lbW9yeUJhc2VHUFIp
OworCiAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0No
ZWNraW5nOgogICAgICAgICAvLyBXZSdyZSBub3QgdXNpbmcgc2lnbmFsIGhhbmRsaW5nIGF0IGFs
bCwgd2UgbXVzdCB0aGVyZWZvcmUgY2hlY2sgdGhhdCBubyBtZW1vcnkgYWNjZXNzIGV4Y2VlZHMg
dGhlIGN1cnJlbnQgbWVtb3J5IHNpemUuCiAgICAgICAgIEFTU0VSVChtX21lbW9yeVNpemVHUFIp
OwogICAgICAgICBBU1NFUlQoc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0ID4gb2Zmc2V0KTsKLSAg
ICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9w
cm9jLCBvcmlnaW4oKSwgcG9pbnRlciwgbV9tZW1vcnlTaXplR1BSLCBzaXplT2ZPcGVyYXRpb24g
KyBvZmZzZXQgLSAxLCBtX2luZm8ubWVtb3J5Lm1heGltdW0oKSk7CisgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHBvaW50ZXIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEsIG1fbWVtb3J5U2l6ZUdQUik7
CiAgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBNZW1vcnlNb2RlOjpTaWduYWxpbmc6Ci0gICAg
ICAgIC8vIFdlJ3ZlIHZpcnR1YWxseSBtYXBwZWQgNEdpQityZWR6b25lIGZvciB0aGlzIG1lbW9y
eS4gT25seSB0aGUgdXNlci1hbGxvY2F0ZWQgcGFnZXMgYXJlIGFkZHJlc3NhYmxlLCBjb250aWd1
b3VzbHkgaW4gcmFuZ2UgWzAsIGN1cnJlbnRdLCBhbmQgZXZlcnl0aGluZyBhYm92ZSBpcyBtYXBw
ZWQgUFJPVF9OT05FLiBXZSBkb24ndCBuZWVkIHRvIHBlcmZvcm0gYW55IGV4cGxpY2l0IGJvdW5k
cyBjaGVjayBpbiB0aGUgNEdpQiByYW5nZSBiZWNhdXNlIFdlYkFzc2VtYmx5IHJlZ2lzdGVyIG1l
bW9yeSBhY2Nlc3NlcyBhcmUgMzItYml0LiBIb3dldmVyIFdlYkFzc2VtYmx5IHJlZ2lzdGVyK2lt
bWVkaWF0ZSBhY2Nlc3NlcyBwZXJmb3JtIHRoZSBhZGRpdGlvbiBpbiA2NC1iaXQgd2hpY2ggY2Fu
IHB1c2ggYW4gYWNjZXNzIGFib3ZlIHRoZSAzMi1iaXQgbGltaXQuIFRoZSByZWR6b25lIHdpbGwg
Y2F0Y2ggbW9zdCBzbWFsbCBpbW1lZGlhdGVzLCBhbmQgd2UnbGwgZXhwbGljaXRseSBib3VuZHMg
Y2hlY2sgYW55IHJlZ2lzdGVyICsgbGFyZ2UgaW1tZWRpYXRlIGFjY2Vzcy4KLSAgICAgICAgaWYg
KG9mZnNldCA+PSBNZW1vcnk6OmZhc3RNYXBwZWRSZWR6b25lQnl0ZXMoKSkKLSAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIHBvaW50ZXIsIEludmFsaWRHUFJSZWcsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNl
dCAtIDEsIG1faW5mby5tZW1vcnkubWF4aW11bSgpKTsKKyAgICAgICAgLy8gV2UndmUgdmlydHVh
bGx5IG1hcHBlZCA0R2lCK3JlZHpvbmUgZm9yIHRoaXMgbWVtb3J5LiBPbmx5IHRoZSB1c2VyLWFs
bG9jYXRlZCBwYWdlcyBhcmUgYWRkcmVzc2FibGUsIGNvbnRpZ3VvdXNseSBpbiByYW5nZSBbMCwg
Y3VycmVudF0sCisgICAgICAgIC8vIGFuZCBldmVyeXRoaW5nIGFib3ZlIGlzIG1hcHBlZCBQUk9U
X05PTkUuIFdlIGRvbid0IG5lZWQgdG8gcGVyZm9ybSBhbnkgZXhwbGljaXQgYm91bmRzIGNoZWNr
IGluIHRoZSA0R2lCIHJhbmdlIGJlY2F1c2UgV2ViQXNzZW1ibHkgcmVnaXN0ZXIKKyAgICAgICAg
Ly8gbWVtb3J5IGFjY2Vzc2VzIGFyZSAzMi1iaXQuIEhvd2V2ZXIgV2ViQXNzZW1ibHkgcmVnaXN0
ZXIgKyBvZmZzZXQgYWNjZXNzZXMgcGVyZm9ybSB0aGUgYWRkaXRpb24gaW4gNjQtYml0IHdoaWNo
IGNhbiBwdXNoIGFuIGFjY2VzcyBhYm92ZQorICAgICAgICAvLyB0aGUgMzItYml0IGxpbWl0ICh0
aGUgb2Zmc2V0IGlzIHVuc2lnbmVkIDMyLWJpdCkuIFRoZSByZWR6b25lIHdpbGwgY2F0Y2ggbW9z
dCBzbWFsbCBvZmZzZXRzLCBhbmQgd2UnbGwgZXhwbGljaXRseSBib3VuZHMgY2hlY2sgYW55Cisg
ICAgICAgIC8vIHJlZ2lzdGVyICsgbGFyZ2Ugb2Zmc2V0IGFjY2Vzcy4gV2UgZG9uJ3QgdGhpbmsg
dGhpcyB3aWxsIGJlIGdlbmVyYXRlZCBmcmVxdWVudGx5LgorICAgICAgICAvLworICAgICAgICAv
LyBXZSBjb3VsZCBjaGVjayB0aGF0IHJlZ2lzdGVyICsgbGFyZ2Ugb2Zmc2V0IGRvZXNuJ3QgZXhj
ZWVkIDRHaUIrcmVkem9uZSBzaW5jZSB0aGF0J3MgdGVjaG5pY2FsbHkgdGhlIGxpbWl0IHdlIG5l
ZWQgdG8gYXZvaWQgb3ZlcmZsb3dpbmcgdGhlCisgICAgICAgIC8vIFBST1RfTk9ORSByZWdpb24s
IGJ1dCBpdCdzIGJldHRlciBpZiB3ZSB1c2UgYSBzbWFsbGVyIGltbWVkaWF0ZSBiZWNhdXNlIGl0
IGNhbiBjb2RlZ2VucyBiZXR0ZXIuIFdlIGtub3cgdGhhdCBhbnl0aGluZyBlcXVhbCB0byBvciBn
cmVhdGVyCisgICAgICAgIC8vIHRoYW4gdGhlIGRlY2xhcmVkICdtYXhpbXVtJyB3aWxsIHRyYXAs
IHNvIHdlIGNhbiBjb21wYXJlIGFnYWluc3QgdGhhdCBudW1iZXIuIElmIHRoZXJlIHdhcyBubyBk
ZWNsYXJlZCAnbWF4aW11bScgdGhlbiB3ZSBzdGlsbCBrbm93IHRoYXQKKyAgICAgICAgLy8gYW55
IGFjY2VzcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gNEdpQiB3aWxsIHRyYXAsIG5vIG5lZWQg
dG8gYWRkIHRoZSByZWR6b25lLgorICAgICAgICBpZiAob2Zmc2V0ID49IE1lbW9yeTo6ZmFzdE1h
cHBlZFJlZHpvbmVCeXRlcygpKSB7CisgICAgICAgICAgICBzaXplX3QgbWF4aW11bSA9IG1faW5m
by5tZW1vcnkubWF4aW11bSgpID8gbV9pbmZvLm1lbW9yeS5tYXhpbXVtKCkuYnl0ZXMoKSA6IHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKKyAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrLT5hcHBlbmROZXc8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KG1fcHJvYywgb3JpZ2luKCks
IHBvaW50ZXIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEsIG1heGltdW0pOworICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBNZW1vcnlNb2RlOjpOdW1iZXJPZk1lbW9y
eU1vZGVzOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KQEAg
LTEzMDAsMTIgKzEzMTUsNiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29t
cGlsYXRpb25Db250ZXh0JiBjb21waWxhdGlvbkNvbnRleHQsIFdhc21JbgogCiAgICAgY29tcGls
YXRpb25Db250ZXh0LmpzRW50cnlwb2ludFRvV2FzbUVudHJ5cG9pbnRDYWxsID0gaml0LmNhbGwo
KTsKIAotICAgIGlmICghIWluZm8ubWVtb3J5KSB7Ci0gICAgICAgIC8vIFJlc2V0dGluZyB0aGUg
cmVnaXN0ZXIgcHJldmVudHMgdGhlIEdDIGZyb20gbWlzdGFrZW5seSB0aGlua2luZyB0aGF0IHRo
ZSBjb250ZXh0IGlzIHN0aWxsIGxpdmUuCi0gICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlu
bmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKLSAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIoMCksIGJhc2VNZW1vcnkpOwotICAgIH0KLQogICAgIGZvciAoY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldCYgcmVnQXRPZmZzZXQgOiByZWdpc3RlcnNUb1NwaWxsKSB7CiAgICAg
ICAgIEdQUlJlZyByZWcgPSByZWdBdE9mZnNldC5yZWcoKS5ncHIoKTsKICAgICAgICAgQVNTRVJU
KHJlZyAhPSBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21NZW1vcnkuY3BwCmluZGV4IDllOGQ2ZTAuLjBhYjY0NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFj
ZSB7CiBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKIE5FVkVSX0lOTElORSBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgd2ViQXNzZW1ibHlDb3VsZG50R2V0RmFzdE1lbW9yeSgp
IHsgQ1JBU0goKTsgfQotTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCB3
ZWJBc3NlbWJseUNvdWxkbnRVbm1hcE1lbW9yeUJ5dGVzKCkgeyBDUkFTSCgpOyB9CitORVZFUl9J
TkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHdlYkFzc2VtYmx5Q291bGRudFVubWFw
TWVtb3J5KCkgeyBDUkFTSCgpOyB9CiBORVZFUl9JTkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFT
SCB2b2lkIHdlYkFzc2VtYmx5Q291bGRudFVucHJvdGVjdE1lbW9yeSgpIHsgQ1JBU0goKTsgfQog
CiB2b2lkKiBtbWFwQnl0ZXMoc2l6ZV90IGJ5dGVzKQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkKiBt
bWFwQnl0ZXMoc2l6ZV90IGJ5dGVzKQogdm9pZCBtdW5tYXBCeXRlcyh2b2lkKiBtZW1vcnksIHNp
emVfdCBzaXplKQogewogICAgIGlmIChVTkxJS0VMWShtdW5tYXAobWVtb3J5LCBzaXplKSkpCi0g
ICAgICAgIHdlYkFzc2VtYmx5Q291bGRudFVubWFwTWVtb3J5Qnl0ZXMoKTsKKyAgICAgICAgd2Vi
QXNzZW1ibHlDb3VsZG50VW5tYXBNZW1vcnkoKTsKIH0KIAogdm9pZCB6ZXJvQW5kVW5wcm90ZWN0
Qnl0ZXModm9pZCogc3RhcnQsIHNpemVfdCBieXRlcykKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lk
KiB0cnlHZXRGYXN0TWVtb3J5KFZNJiB2bSkKICAgICAgICAgbWVtb3J5ID0gdHJ5R2V0Q2FjaGVk
RmFzdE1lbW9yeSgpOwogICAgICAgICBpZiAobWVtb3J5KQogICAgICAgICAgICAgZGF0YUxvZ0xu
SWYodmVyYm9zZSwgInRyeUdldEZhc3RNZW1vcnkgcmUtdXNpbmcgIiwgUmF3UG9pbnRlcihtZW1v
cnkpKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvLyBObyBtZW1vcnkgd2FzIGF2YWls
YWJsZSBpbiB0aGUgY2FjaGUuIE1heWJlIHdhaXRpbmcgb24gR0Mgd2lsbCBmaW5kIGEgZnJlZSBv
bmUuCisgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRseUFsbG9jYXRlZEZhc3RNZW1vcmllcy5sb2Fk
KHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpID49IDEpIHsKKyAgICAgICAgICAgIC8vIE5vIG1l
bW9yeSB3YXMgYXZhaWxhYmxlIGluIHRoZSBjYWNoZSwgYnV0IHdlIGtub3cgdGhlcmUncyBhdCBs
ZWFzdCBvbmUgY3VycmVudGx5IGxpdmUuIE1heWJlIEdDIHdpbGwgZmluZCBhIGZyZWUgb25lLgog
ICAgICAgICAgICAgLy8gRklYTUUgY29sbGVjdFN5bmMoRnVsbCkgYW5kIGN1c3RvbSBlYWdlciBk
ZXN0cnVjdGlvbiBvZiB3YXNtIG1lbW9yaWVzIGNvdWxkIGJlIGJldHRlci4gRm9yIG5vdyB1c2Ug
Y29sbGVjdEFsbEdhcmJhZ2UuIEFsc28sIG5vdGhpbmcgdGVsbHMgdXMgdGhlIGN1cnJlbnQgVk0g
aXMgaG9sZGluZyBvbnRvIGZhc3QgbWVtb3JpZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzA3NDgKICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJ0
cnlHZXRGYXN0TWVtb3J5IHdhaXRpbmcgb24gR0MgYW5kIHJldHJ5aW5nIik7CiAgICAgICAgICAg
ICB2bS5oZWFwLmNvbGxlY3RBbGxHYXJiYWdlKCk7CkBAIC0yNzMsMTQgKzI3MywxNyBAQCB2b2lk
IE1lbW9yeTo6aW5pdGlhbGl6ZVByZWFsbG9jYXRpb25zKCkKIAogICAgIC8vIFJhY2VzIGNhbm5v
dCBvY2N1ciBpbiB0aGlzIGZ1bmN0aW9uOiBpdCBpcyBvbmx5IGNhbGxlZCBhdCBwcm9ncmFtIGlu
aXRpYWxpemF0aW9uLCBiZWZvcmUgV2ViQXNzZW1ibHkgY2FuIGJlIGludm9rZWQuCiAKLSAgICBj
b25zdCBhdXRvIHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIE1vbm90b25p
Y1RpbWUgc3RhcnRUaW1lOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBzdGFydFRpbWUgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsKKwogICAgIGNvbnN0IHNpemVfdCBkZXNpcmVkRmFzdE1lbW9y
aWVzID0gc3RkOjptaW48c2l6ZV90PihPcHRpb25zOjp3ZWJBc3NlbWJseUZhc3RNZW1vcnlQcmVh
bGxvY2F0ZUNvdW50KCksIGZhc3RNZW1vcnlDYWNoZUhhcmRMaW1pdCk7CiAKICAgICAvLyBTdGFy
dCBvZmYgdHJ5aW5nIHRvIGFsbG9jYXRlIGZhc3QgbWVtb3JpZXMgY29udGlndW91c2x5IHNvIHRo
ZXkgZG9uJ3QgZnJhZ21lbnQgZWFjaCBvdGhlci4gVGhpcyBjYW4gZmFpbCBpZiB0aGUgYWRkcmVz
cyBzcGFjZSBpcyBvdGhlcndpc2UgZnJhZ21lbnRlZC4gSW4gdGhhdCBjYXNlLCBnbyBmb3Igc21h
bGxlciBjb250aWd1b3VzIGFsbG9jYXRpb25zLiBXZSdsbCBldmVudHVhbGx5IGdldCBpbmRpdmlk
dWFsIG5vbi1jb250aWd1b3VzIGZhc3QgbWVtb3JpZXMgYWxsb2NhdGVkLCBvciB3ZSdsbCBqdXN0
IGJlIHVuYWJsZSB0byBmaXQgYSBzaW5nbGUgb25lIGF0IHdoaWNoIHBvaW50IHdlIGdpdmUgdXAu
CiAgICAgYXV0byBhbGxvY2F0ZUNvbnRpZ3VvdXNGYXN0TWVtb3JpZXMgPSBbJl0gKHNpemVfdCBu
dW1Db250aWd1b3VzKSAtPiBib29sIHsKICAgICAgICAgaWYgKHZvaWQgKm1lbW9yeSA9IG1tYXBC
eXRlcyhNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpICogbnVtQ29udGlndW91cykpIHsKICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IHN1Yk1lbW9yeSA9IDA7IHN1Yk1lbW9yeSA8IG51bUNvbnRpZ3Vv
dXM7ICsrc3ViTWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogc3RhcnRBZGRyZXNzID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWVtb3J5KSArIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVz
KCkgKiBzdWJNZW1vcnkgKyBzdWJNZW1vcnk7CisgICAgICAgICAgICAgICAgdm9pZCogc3RhcnRB
ZGRyZXNzID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWVtb3J5KSArIE1lbW9yeTo6ZmFzdE1h
cHBlZEJ5dGVzKCkgKiBzdWJNZW1vcnk7CiAgICAgICAgICAgICAgICAgYm9vbCBpbnNlcnRlZCA9
IGZhbHNlOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGNhY2hlRW50cnkgPSAwOyBjYWNo
ZUVudHJ5IDwgZmFzdE1lbW9yeUNhY2hlSGFyZExpbWl0OyArK2NhY2hlRW50cnkpIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKGZhc3RNZW1vcnlDYWNoZVtjYWNoZUVudHJ5XS5sb2FkKHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGF4ZWQpID09IG51bGxwdHIpIHsKQEAgLTMxMiwxNCArMzE1LDE3IEBA
IHZvaWQgTWVtb3J5Ojppbml0aWFsaXplUHJlYWxsb2NhdGlvbnMoKQogICAgIGN1cnJlbnRseUFs
bG9jYXRlZEZhc3RNZW1vcmllcy5zdG9yZShmYXN0TWVtb3J5UHJlYWxsb2NhdGVDb3VudCwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CiAgICAgb2JzZXJ2ZWRNYXhpbXVtRmFzdE1lbW9yeS5z
dG9yZShmYXN0TWVtb3J5UHJlYWxsb2NhdGVDb3VudCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhl
ZCk7CiAKLSAgICBjb25zdCBhdXRvIGVuZFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKKyAg
ICBpZiAodmVyYm9zZSkgeworICAgICAgICBNb25vdG9uaWNUaW1lIGVuZFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKKworICAgICAgICBmb3IgKHNpemVfdCBjYWNoZUVudHJ5ID0gMDsgY2Fj
aGVFbnRyeSA8IGZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNvdW50OyArK2NhY2hlRW50cnkpIHsKKyAg
ICAgICAgICAgIHZvaWQqIHN0YXJ0QWRkcmVzcyA9IGZhc3RNZW1vcnlDYWNoZVtjYWNoZUVudHJ5
XS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgICAgICAgICAgQVNTRVJUKHN0
YXJ0QWRkcmVzcyk7CisgICAgICAgICAgICBkYXRhTG9nTG4oIlByZS1hbGxvY2F0aW9uIG9mIFdl
YkFzc2VtYmx5IGZhc3QgbWVtb3J5IGF0ICIsIFJhd1BvaW50ZXIoc3RhcnRBZGRyZXNzKSk7Cisg
ICAgICAgIH0KIAotICAgIGZvciAoc2l6ZV90IGNhY2hlRW50cnkgPSAwOyBjYWNoZUVudHJ5IDwg
ZmFzdE1lbW9yeVByZWFsbG9jYXRlQ291bnQ7ICsrY2FjaGVFbnRyeSkgewotICAgICAgICB2b2lk
KiBzdGFydEFkZHJlc3MgPSBmYXN0TWVtb3J5Q2FjaGVbY2FjaGVFbnRyeV0ubG9hZChzdGQ6Om1l
bW9yeV9vcmRlcl9yZWxheGVkKTsKLSAgICAgICAgQVNTRVJUKHN0YXJ0QWRkcmVzcyk7Ci0gICAg
ICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJQcmUtYWxsb2NhdGlvbiBvZiBXZWJBc3NlbWJseSBm
YXN0IG1lbW9yeSBhdCAiLCBSYXdQb2ludGVyKHN0YXJ0QWRkcmVzcykpOworICAgICAgICBkYXRh
TG9nTG4oIlByZS1hbGxvY2F0ZWQgIiwgZmFzdE1lbW9yeVByZWFsbG9jYXRlQ291bnQsICIgV2Vi
QXNzZW1ibHkgZmFzdCBtZW1vcmllcyBpbiAiLCBmYXN0TWVtb3J5UHJlYWxsb2NhdGVDb3VudCA9
PSAwID8gMCA6IGZyYWdtZW50cywgZnJhZ21lbnRzID09IDEgPyAiIGZyYWdtZW50LCB0b29rICIg
OiAiIGZyYWdtZW50cywgdG9vayAiLCBlbmRUaW1lIC0gc3RhcnRUaW1lKTsKICAgICB9Ci0gICAg
ZGF0YUxvZ0xuSWYodmVyYm9zZSwgIlByZS1hbGxvY2F0ZWQgIiwgZmFzdE1lbW9yeVByZWFsbG9j
YXRlQ291bnQsICIgV2ViQXNzZW1ibHkgZmFzdCBtZW1vcmllcyBpbiAiLCBmYXN0TWVtb3J5UHJl
YWxsb2NhdGVDb3VudCA9PSAwID8gMCA6IGZyYWdtZW50cywgZnJhZ21lbnRzID09IDEgPyAiIGZy
YWdtZW50LCB0b29rICIgOiAiIGZyYWdtZW50cywgdG9vayAiLCBlbmRUaW1lIC0gc3RhcnRUaW1l
KTsKIH0KIAogTWVtb3J5OjpNZW1vcnkoUGFnZUNvdW50IGluaXRpYWwsIFBhZ2VDb3VudCBtYXhp
bXVtKQotLSAKMi4xMC4xCgo=
</data>
<flag name="review"
          id="328773"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="328774"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307506</attachid>
            <date>2017-04-19 13:58:41 -0700</date>
            <delta_ts>2017-04-19 15:05:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-memory-follow-up.patch</filename>
            <type>text/plain</type>
            <size>24904</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiYTRlNDlkNjEyOTVmMmYxZWExOWIxZTljMTFjYmExNzczMTlmMjM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBNb24sIDE3IEFwciAyMDE3IDExOjI5OjUxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gbWVtb3J5
LWZvbGxvdy11cAoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwICAgICAgICAgIHwgMzAgKysrKysrKy0tLS0tLS0tLS0KIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oICAgICAgICAgICAgIHwgIDIgKy0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcCAgICAgICAgICAgIHwgIDkg
KysrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCAgICAgICAgICAgICAg
IHwgIDcgKysrLQogLi4uL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUu
Y3BwICAgfCAzOCArKysrKysrKysrKysrLS0tLS0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oICB8IDI3ICsrKysrKysrLS0tLS0tLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggICAgICAgICAgICAgfCAgMiArLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaCAgICAgICAgICAgfCAxMCArKysr
Ky0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwICAgICAgICAgICAgICAgIHwg
IDYgKystLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3Bw
ICAgfCAzMSArKysrKysrKysrKy0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnkuY3BwICAgICAgICAgIHwgMzAgKysrKysrKysrKy0tLS0tLS0KIDEyIGZpbGVzIGNo
YW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCA4MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBjYTQ3YzAyLi5mZGNlOWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNyBAQAorMjAxNy0wNC0xOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IGZhc3QgbWVtb3J5IGNsZWFudXBzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA5MDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fp
ci5jcHA6IGNvcnJlY3QgY29tbWVudCwgYW5kIG1ha2Ugd2FzbS1pbmRlcGVuZGVudAorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjpsb3dlcik6CisgICAgICAgICogYjMvQjNQcm9j
ZWR1cmUuaDoKKyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBiMy9CM1Zh
bHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAgICAgICAgKiBi
My9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcDogaGF2ZSB0aGUgY3JlYXRvciBwYXNzIGluIGEK
KyAgICAgICAgbWF4aW11bSwgc28gd2UgZG9uJ3QgaGF2ZSB0byBrbm93IHNvIG11Y2ggYWJvdXQg
d2FzbSBoZXJlCisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6V2FzbUJv
dW5kc0NoZWNrVmFsdWUpOgorICAgICAgICAoSlNDOjpCMzo6V2FzbUJvdW5kc0NoZWNrVmFsdWU6
OmNsb25lSW1wbCk6CisgICAgICAgIChKU0M6OkIzOjpXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6ZHVt
cE1ldGEpOgorICAgICAgICAqIGIzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuaDoKKyAgICAgICAg
KEpTQzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVlOjpib3VuZHNUeXBlKToKKyAgICAgICAgKEpT
Qzo6QjM6Oldhc21Cb3VuZHNDaGVja1ZhbHVlOjpib3VuZHMpOgorICAgICAgICAqIGIzL2Fpci9B
aXJDb2RlLmg6CisgICAgICAgICogYjMvYWlyL0FpckN1c3RvbS5oOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpXYXNtQm91bmRzQ2hlY2tDdXN0b206OmdlbmVyYXRlKToKKyAgICAgICAgKiBiMy90
ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFdhc21Cb3VuZHNDaGVjayk6CisgICAg
ICAgICogd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkIz
SVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2Vu
ZXJhdG9yOjplbWl0Q2hlY2tBbmRQcmVwYXJlUG9pbnRlcik6CisgICAgICAgIChKU0M6Oldhc206
OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6IHJlbW92ZSBkZWFkIGNvZGUKKyAgICAgICAgKiB3YXNt
L1dhc21NZW1vcnkuY3BwOiBkb24ndCBHQyBpZiBubyBtZW1vcnkgY291bGQgcG9zc2libHkgYmUg
ZnJlZSdkCisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6aW5pdGlhbGl6ZVByZWFsbG9jYXRp
b25zKTogdmVyYm9zZS1vbmx5IGNvZGUsCisgICAgICAgIGFuZCBjb3B5LXBhc3RhIGJ1ZworCiAy
MDE3LTA0LTE5ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CiAK
ICAgICAgICAgW0lOVExdIEltcGxlbWVudCBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmlu
ZGV4IDUwNjcwN2QuLjRhN2UwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCkBAIC0zMTQ2LDcgKzMxNDYsNiBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBCMzo6V2FzbUJvdW5kc0NoZWNrOiB7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZ
KQogICAgICAgICAgICAgV2FzbUJvdW5kc0NoZWNrVmFsdWUqIHZhbHVlID0gbV92YWx1ZS0+YXM8
V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCk7CiAKICAgICAgICAgICAgIFZhbHVlKiBwdHIgPSB2YWx1
ZS0+Y2hpbGQoMCk7CkBAIC0zMTY0LDI4ICszMTYzLDIxIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIEFyZyBsaW1pdDsKLSAgICAgICAgICAgIGlmICh2YWx1ZS0+cGlu
bmVkR1BSKCkgIT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgICAgICAgICBsaW1pdCA9IEFyZyh2
YWx1ZS0+cGlubmVkR1BSKCkpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
Ly8gU2lnbmFsaW5nIG1lbW9yaWVzIGRvbid0IHBpbiBhIHJlZ2lzdGVyIGJlY2F1c2Ugb25seSB0
aGUgYWNjZXNzZXMgd2hvc2UgcmVnK2ltbSBjb3VsZCBldmVyIG92ZXJmbG93IDRHaUIrcmVkem9u
ZSBuZWVkIHRvIGJlIGNoZWNrZWQsCi0gICAgICAgICAgICAgICAgLy8gYW5kIHdlIGRvbid0IHRo
aW5rIHRoZXNlIHdpbGwgYmUgZnJlcXVlbnQuIEFsbCBvdGhlciBhY2Nlc3NlcyB3aWxsIHRyYXAg
ZHVlIHRvIFBST1RfTk9ORSBwYWdlcy4KLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAg
ICAgIC8vIElmIHdlIGdvdCBoZXJlIGl0J3MgYmVjYXVzZSBhIG1lbW9yeSBhY2Nlc3MgaGFkIGEg
dmVyeSBsYXJnZSBvZmZzZXQuIFdlIGNvdWxkIGNoZWNrIHRoYXQgaXQgZG9lc24ndCBleGNlZWQg
NEdpQityZWR6b25lIHNpbmNlIHRoYXQncwotICAgICAgICAgICAgICAgIC8vIHRlY2huaWNhbGx5
IHRoZSBsaW1pdCB3ZSBuZWVkIHRvIGF2b2lkIG92ZXJmbG93aW5nLCBidXQgaXQncyBiZXR0ZXIg
aWYgd2UgdXNlIGEgc21hbGxlciBpbW1lZGlhdGUgd2hpY2ggY29kZWdlbnMgbW9yZSBlYXNpbHku
Ci0gICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0IGFueXRoaW5nIGFib3ZlIHRoZSBkZWNs
YXJlZCAnbWF4aW11bScgd2lsbCB0cmFwLCBzbyB3ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IHRoYXQg
bnVtYmVyLiBJZiB0aGVyZSB3YXMgbm8gZGVjbGFyZWQKLSAgICAgICAgICAgICAgICAvLyAnbWF4
aW11bScgdGhlbiB3ZSBzdGlsbCBrbm93IHRoYXQgYW55IGFjY2VzcyBhYm92ZSA0R2lCIHdpbGwg
dHJhcCwgbm8gbmVlZCB0byBhZGQgdGhlIHJlZHpvbmUuCisgICAgICAgICAgICBzd2l0Y2ggKHZh
bHVlLT5ib3VuZHNUeXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrVmFs
dWU6OlR5cGU6OlBpbm5lZDoKKyAgICAgICAgICAgICAgICBsaW1pdCA9IEFyZyh2YWx1ZS0+Ym91
bmRzKCkucGlubmVkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2Fz
ZSBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6VHlwZTo6TWF4aW11bToKICAgICAgICAgICAgICAgICBs
aW1pdCA9IG1fY29kZS5uZXdUbXAoR1ApOwotICAgICAgICAgICAgICAgIHNpemVfdCBsaW1pdFZh
bHVlID0gdmFsdWUtPm1heGltdW0oKSA/IHZhbHVlLT5tYXhpbXVtKCkuYnl0ZXMoKSA6IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
bGltaXRWYWx1ZSA8PSB2YWx1ZS0+cmVkem9uZUxpbWl0KCkpOwotICAgICAgICAgICAgICAgIGlm
IChpbW0obGltaXRWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBpbW0o
bGltaXRWYWx1ZSksIGxpbWl0KTsKKyAgICAgICAgICAgICAgICBpZiAoaW1tKHZhbHVlLT5ib3Vu
ZHMoKS5tYXhpbXVtKSkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kKE1vdmUsIGltbSh2YWx1
ZS0+Ym91bmRzKCkubWF4aW11bSksIGxpbWl0KTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmJpZ0ltbShsaW1pdFZhbHVlKSwgbGlt
aXQpOworICAgICAgICAgICAgICAgICAgICBhcHBlbmQoTW92ZSwgQXJnOjpiaWdJbW0odmFsdWUt
PmJvdW5kcygpLm1heGltdW0pLCBsaW1pdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisKICAgICAgICAgICAgIGFwcGVuZChJbnN0KEFpcjo6V2FzbUJvdW5kc0NoZWNr
LCB2YWx1ZSwgcHRyUGx1c0ltbSwgbGltaXQpKTsKLSNlbHNlCi0gICAgICAgICAgICBhcHBlbmQo
QWlyOjpPb3BzKTsKLSNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApp
bmRleCA0OGVkZTFiLi44YjZhM2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuaApAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBWYXJpYWJsZTsKIAogbmFtZXNwYWNlIEFpciB7
IGNsYXNzIENvZGU7IH0KIAotdHlwZWRlZiB2b2lkIFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1
bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZywgdW5zaWduZWQpOwordHlwZWRlZiB2b2lkIFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZyk7CiB0
eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdhc21C
b3VuZHNDaGVja0dlbmVyYXRvcjsKIAogLy8gVGhpcyByZXByZXNlbnRzIEIzJ3MgdmlldyBvZiBh
IHBpZWNlIG9mIGNvZGUuIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBtdXN0IGV4aXN0IGluIGEgMTox
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5jcHAKaW5kZXggY2MzYTU2Zi4uNjBi
MGIzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcApAQCAtNDcwLDgg
KzQ3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoIXZhbHVlLT5raW5k
KCkuaGFzRXh0cmFCaXRzKCksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUoKSA9PSBJbnQzMiwgKCJB
dCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmFzPFdhc21Cb3VuZHND
aGVja1ZhbHVlPigpLT5waW5uZWRHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAg
ICAgICAgICBWQUxJREFURShtX3Byb2NlZHVyZS5jb2RlKCkuaXNQaW5uZWQodmFsdWUtPmFzPFdh
c21Cb3VuZHNDaGVja1ZhbHVlPigpLT5waW5uZWRHUFIoKSksICgiQXQgIiwgKnZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoICh2YWx1ZS0+YXM8V2FzbUJvdW5kc0NoZWNrVmFsdWU+KCkt
PmJvdW5kc1R5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgV2FzbUJvdW5kc0NoZWNrVmFs
dWU6OlR5cGU6OlBpbm5lZDoKKyAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUobV9wcm9jZWR1
cmUuY29kZSgpLmlzUGlubmVkKHZhbHVlLT5hczxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4oKS0+Ym91
bmRzKCkucGlubmVkKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6VHlwZTo6TWF4
aW11bToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKG1fcHJvY2VkdXJlLmNvZGUoKS53YXNtQm91bmRzQ2hlY2tH
ZW5lcmF0b3IoKSwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgVXBzaWxvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApp
bmRleCA2NWIxN2UzLi41YTkwMTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
CkBAIC02NjUsOCArNjY1LDEzIEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAg
ICAgICByZXN1bHQgPSBFZmZlY3RzOjpmb3JDaGVjaygpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFdhc21Cb3VuZHNDaGVjazoKLSAgICAgICAgaWYgKGFzPFdhc21Cb3VuZHNDaGVja1ZhbHVl
PigpLT5waW5uZWRHUFIoKSAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBzd2l0Y2ggKGFzPFdh
c21Cb3VuZHNDaGVja1ZhbHVlPigpLT5ib3VuZHNUeXBlKCkpIHsKKyAgICAgICAgY2FzZSBXYXNt
Qm91bmRzQ2hlY2tWYWx1ZTo6VHlwZTo6UGlubmVkOgogICAgICAgICAgICAgcmVzdWx0LnJlYWRz
UGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdhc21Cb3Vu
ZHNDaGVja1ZhbHVlOjpUeXBlOjpNYXhpbXVtOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgcmVzdWx0LmV4aXRzU2lkZXdheXMgPSB0cnVlOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFVwc2lsb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNX
YXNtQm91bmRzQ2hlY2tWYWx1ZS5jcHAKaW5kZXggOGFlY2MxZC4uYzM0ODQ3OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJvdW5kc0NoZWNrVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmNwcApA
QCAtMzUsMzUgKzM1LDQxIEBAIFdhc21Cb3VuZHNDaGVja1ZhbHVlOjp+V2FzbUJvdW5kc0NoZWNr
VmFsdWUoKQogewogfQogCi1XYXNtQm91bmRzQ2hlY2tWYWx1ZTo6V2FzbUJvdW5kc0NoZWNrVmFs
dWUoT3JpZ2luIG9yaWdpbiwgVmFsdWUqIHB0ciwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQg
b2Zmc2V0LCBQYWdlQ291bnQgbWF4aW11bSkKK1dhc21Cb3VuZHNDaGVja1ZhbHVlOjpXYXNtQm91
bmRzQ2hlY2tWYWx1ZShPcmlnaW4gb3JpZ2luLCBWYWx1ZSogcHRyLCB1bnNpZ25lZCBvZmZzZXQs
IEdQUlJlZyBwaW5uZWRHUFIpCiAgICAgOiBWYWx1ZShDaGVja2VkT3Bjb2RlLCBXYXNtQm91bmRz
Q2hlY2ssIG9yaWdpbiwgcHRyKQotICAgICwgbV9waW5uZWRHUFIocGlubmVkR1BSKQogICAgICwg
bV9vZmZzZXQob2Zmc2V0KQotICAgICwgbV9tYXhpbXVtKG1heGltdW0pCisgICAgLCBtX2JvdW5k
c1R5cGUoVHlwZTo6UGlubmVkKQogeworICAgIG1fYm91bmRzLnBpbm5lZCA9IHBpbm5lZEdQUjsK
IH0KIAotVmFsdWUqIFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAorV2Fz
bUJvdW5kc0NoZWNrVmFsdWU6Oldhc21Cb3VuZHNDaGVja1ZhbHVlKE9yaWdpbiBvcmlnaW4sIFZh
bHVlKiBwdHIsIHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IG1heGltdW0pCisgICAgOiBWYWx1ZShD
aGVja2VkT3Bjb2RlLCBXYXNtQm91bmRzQ2hlY2ssIG9yaWdpbiwgcHRyKQorICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQorICAgICwgbV9ib3VuZHNUeXBlKFR5cGU6Ok1heGltdW0pCiB7Ci0gICAgcmV0
dXJuIG5ldyBXYXNtQm91bmRzQ2hlY2tWYWx1ZSgqdGhpcyk7CisjaWYgRU5BQkxFKFdFQkFTU0VN
QkxZKQorICAgIHNpemVfdCByZWR6b25lTGltaXQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSArIFdhc206Ok1lbW9yeTo6ZmFzdE1h
cHBlZFJlZHpvbmVCeXRlcygpOworICAgIEFTU0VSVF9VTlVTRUQocmVkem9uZUxpbWl0LCBtYXhp
bXVtIDw9IHJlZHpvbmVMaW1pdCk7CisjZW5kaWYKKyAgICBtX2JvdW5kcy5tYXhpbXVtID0gbWF4
aW11bTsKIH0KIAotc2l6ZV90IFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpyZWR6b25lTGltaXQoKSBj
b25zdAorVmFsdWUqIFdhc21Cb3VuZHNDaGVja1ZhbHVlOjpjbG9uZUltcGwoKSBjb25zdAogewot
ICAgIEFTU0VSVChtX3Bpbm5lZEdQUiA9PSBJbnZhbGlkR1BSUmVnKTsKLSNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PihzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpICsgV2FzbTo6TWVtb3J5OjpmYXN0TWFwcGVkUmVkem9u
ZUJ5dGVzKCk7Ci0jZWxzZQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5k
aWYKKyAgICByZXR1cm4gbmV3IFdhc21Cb3VuZHNDaGVja1ZhbHVlKCp0aGlzKTsKIH0KIAogdm9p
ZCBXYXNtQm91bmRzQ2hlY2tWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBjb21tYSwgUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBpZiAobV9waW5uZWRHUFIgPT0gSW52YWxpZEdQ
UlJlZykKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCAicmVkem9uZUxpbWl0ID0gIiwgcmVkem9u
ZUxpbWl0KCksICIsIG9mZnNldCA9ICIsIG1fb2Zmc2V0KTsKLSAgICBlbHNlCi0gICAgICAgIG91
dC5wcmludChjb21tYSwgInNpemVSZWdpc3RlciA9ICIsIG1fcGlubmVkR1BSLCAiLCBvZmZzZXQg
PSAiLCBtX29mZnNldCk7CisgICAgc3dpdGNoIChtX2JvdW5kc1R5cGUpIHsKKyAgICBjYXNlIFR5
cGU6OlBpbm5lZDoKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAib2Zmc2V0ID0gIiwgbV9vZmZz
ZXQsICIsIHBpbm5lZCA9ICIsIG1fYm91bmRzLnBpbm5lZCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgVHlwZTo6TWF4aW11bToKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAib2Zmc2V0ID0g
IiwgbV9vZmZzZXQsICIsIG1heGltdW0gPSAiLCBtX2JvdW5kcy5tYXhpbXVtKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNXYXNtQm91bmRzQ2hlY2tWYWx1ZS5oCmluZGV4IDExMGU3
MTguLjM3YjEyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1dhc21C
b3VuZHNDaGVja1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzV2FzbUJv
dW5kc0NoZWNrVmFsdWUuaApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiQjNWYWx1ZS5o
IgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgotI2luY2x1ZGUgIldhc21QYWdlQ291bnQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKQEAgLTQ3LDE2ICs0NiwxOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgfldhc21Cb3VuZHNDaGVja1ZhbHVlKCk7CiAKLSNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCi0gICAgdHlwZWRlZiBXYXNtOjpQYWdlQ291bnQgUGFnZUNvdW50OwotI2Vs
c2UKLSAgICB0eXBlZGVmIGNoYXIgUGFnZUNvdW50OwotI2VuZGlmCisgICAgZW51bSBjbGFzcyBU
eXBlIHsKKyAgICAgICAgUGlubmVkLAorICAgICAgICBNYXhpbXVtLAorICAgIH07CisKKyAgICB1
bmlvbiBCb3VuZHMgeworICAgICAgICBHUFJSZWcgcGlubmVkOworICAgICAgICBzaXplX3QgbWF4
aW11bTsKKyAgICB9OwogCi0gICAgR1BSUmVnIHBpbm5lZEdQUigpIGNvbnN0IHsgcmV0dXJuIG1f
cGlubmVkR1BSOyB9CiAgICAgdW5zaWduZWQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KLSAgICBzaXplX3QgcmVkem9uZUxpbWl0KCkgY29uc3Q7Ci0gICAgUGFnZUNvdW50IG1h
eGltdW0oKSBjb25zdCB7IHJldHVybiBtX21heGltdW07IH0KKyAgICBUeXBlIGJvdW5kc1R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2JvdW5kc1R5cGU7IH0KKyAgICBCb3VuZHMgYm91bmRzKCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZHVtcE1ldGEo
Q29tbWFQcmludGVyJiwgUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKQEAgLTY2LDExICs2
OCwxMiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQcm9jZWR1cmU7
CiAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBXYXNtQm91bmRzQ2hlY2tWYWx1ZShPcmlnaW4sIFZh
bHVlKiBwdHIsIEdQUlJlZyBwaW5uZWRHUFIsIHVuc2lnbmVkIG9mZnNldCwgUGFnZUNvdW50IG1h
eGltdW0pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIFdhc21Cb3VuZHNDaGVja1ZhbHVlKE9yaWdp
biwgVmFsdWUqIHB0ciwgdW5zaWduZWQgb2Zmc2V0LCBHUFJSZWcgcGlubmVkR1BSKTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBXYXNtQm91bmRzQ2hlY2tWYWx1ZShPcmlnaW4sIFZhbHVlKiBwdHIs
IHVuc2lnbmVkIG9mZnNldCwgc2l6ZV90IG1heGltdW0pOwogCi0gICAgR1BSUmVnIG1fcGlubmVk
R1BSOwogICAgIHVuc2lnbmVkIG1fb2Zmc2V0OwotICAgIFBhZ2VDb3VudCBtX21heGltdW07Cisg
ICAgVHlwZSBtX2JvdW5kc1R5cGU7CisgICAgQm91bmRzIG1fYm91bmRzOwogfTsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCmlu
ZGV4IDA2NjE5NWMuLjk3NTA2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29k
ZS5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIENDYWxsU3BlY2lhbDsKIGNsYXNzIENGRzsKIGNs
YXNzIERpc2Fzc2VtYmxlcjsKIAotdHlwZWRlZiB2b2lkIFdhc21Cb3VuZHNDaGVja0dlbmVyYXRv
ckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZywgdW5zaWduZWQpOwordHlwZWRlZiB2b2lk
IFdhc21Cb3VuZHNDaGVja0dlbmVyYXRvckZ1bmN0aW9uKENDYWxsSGVscGVycyYsIEdQUlJlZyk7
CiB0eXBlZGVmIFNoYXJlZFRhc2s8V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yRnVuY3Rpb24+IFdh
c21Cb3VuZHNDaGVja0dlbmVyYXRvcjsKIAogLy8gVGhpcyBpcyBhbiBJUiB0aGF0IGlzIHZlcnkg
Y2xvc2UgdG8gdGhlIGJhcmUgbWV0YWwuIEl0IHJlcXVpcmVzIGFib3V0IDQweCBtb3JlIGJ5dGVz
IHRoYW4gdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckN1
c3RvbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDdXN0b20uaAppbmRleCBh
MzdiMmRiLi5mOGYzZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckN1c3RvbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ3VzdG9t
LmgKQEAgLTMxNCw3ICszMTQsMTUgQEAgc3RydWN0IFdhc21Cb3VuZHNDaGVja0N1c3RvbSA6IHB1
YmxpYyBDb21tb25DdXN0b21CYXNlPFdhc21Cb3VuZHNDaGVja0N1c3RvbT4gewogICAgICAgICBj
b250ZXh0LmxhdGVQYXRocy5hcHBlbmQoY3JlYXRlU2hhcmVkVGFzazxHZW5lcmF0aW9uQ29udGV4
dDo6TGF0ZVBhdGhGdW5jdGlvbj4oCiAgICAgICAgICAgICBbb3V0T2ZCb3VuZHMsIHZhbHVlXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIEFpcjo6R2VuZXJhdGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgICAgICAgICBvdXRPZkJvdW5kcy5saW5rKCZqaXQpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQuY29kZS0+d2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKCktPnJ1bihqaXQsIHZhbHVlLT5w
aW5uZWRHUFIoKSwgdmFsdWUtPm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHZh
bHVlLT5ib3VuZHNUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFdhc21Cb3VuZHNDaGVj
a1ZhbHVlOjpUeXBlOjpQaW5uZWQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY29kZS0+
d2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKCktPnJ1bihqaXQsIHZhbHVlLT5ib3VuZHMoKS5waW5u
ZWQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2Ug
V2FzbUJvdW5kc0NoZWNrVmFsdWU6OlR5cGU6Ok1heGltdW06CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuY29kZS0+d2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKCktPnJ1bihqaXQsIEludmFs
aWRHUFJSZWcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9KSk7CiAKICAgICAgICAgLy8gV2Ugc2FpZCB3ZSB3ZXJlIG5vdCBhIHRl
cm1pbmFsLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCA2NjFhOTk1Li4yMWYx
ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtMTUxNzAsOSArMTUxNzAs
OCBAQCB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQogICAgIEdQUlJl
ZyBwaW5uZWQgPSBHUFJJbmZvOjphcmd1bWVudEdQUjE7CiAgICAgcHJvYy5waW5SZWdpc3Rlcihw
aW5uZWQpOwogCi0gICAgcHJvYy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgR1BSUmVnIHBpbm5lZEdQUiwgdW5zaWduZWQgYWN0dWFsT2Zmc2V0KSB7
CisgICAgcHJvYy5zZXRXYXNtQm91bmRzQ2hlY2tHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgR1BSUmVnIHBpbm5lZEdQUikgewogICAgICAgICBDSEVDS19FUShwaW5uZWRHUFIsIHBp
bm5lZCk7Ci0gICAgICAgIENIRUNLX0VRKGFjdHVhbE9mZnNldCwgb2Zmc2V0KTsKIAogICAgICAg
ICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1w
bGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCiAgICAgICAgIC8vIHNhdmVzLgpAQCAtMTUxODUs
OCArMTUxODQsNyBAQCB2b2lkIHRlc3RXYXNtQm91bmRzQ2hlY2sodW5zaWduZWQgb2Zmc2V0KQog
ICAgIFZhbHVlKiBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIGlmIChwb2ludGVyVHlwZSgp
ICE9IEludDMyKQogICAgICAgICBsZWZ0ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksIGxlZnQpOwotICAgIFdhc206OlBhZ2VDb3VudCBtYXhpbXVtOwotICAg
IHJvb3QtPmFwcGVuZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxl
ZnQsIHBpbm5lZCwgb2Zmc2V0LCBtYXhpbXVtKTsKKyAgICByb290LT5hcHBlbmROZXc8V2FzbUJv
dW5kc0NoZWNrVmFsdWU+KHByb2MsIE9yaWdpbigpLCBsZWZ0LCBwaW5uZWQsIG9mZnNldCk7CiAg
ICAgVmFsdWUqIHJlc3VsdCA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCAweDQyKTsKICAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwgcmVzdWx0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IDFmMTdjYTMuLjg3ZWVmMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAKQEAgLTU5
LDYgKzU5LDcgQEAKICNpbmNsdWRlICJXYXNtTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2FzbU9wY29k
ZU9yaWdpbi5oIgogI2luY2x1ZGUgIldhc21UaHVua3MuaCIKKyNpbmNsdWRlIDxsaW1pdHM+CiAj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CkBAIC0zNTIsNyArMzUzLDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBN
b2R1bGVJbmZvcm1hdGlvbiYgaW5mbywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICB9CiAKICAg
ICBpZiAoaW5mby5tZW1vcnkpIHsKLSAgICAgICAgbV9wcm9jLnNldFdhc21Cb3VuZHNDaGVja0dl
bmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgcGlubmVkR1BSLCB1bnNpZ25l
ZCkgeworICAgICAgICBtX3Byb2Muc2V0V2FzbUJvdW5kc0NoZWNrR2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBwaW5uZWRHUFIpIHsKICAgICAgICAgICAgIEFsbG93TWFj
cm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIHN3
aXRjaCAobV9tb2RlKSB7CiAgICAgICAgICAgICBjYXNlIE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNr
aW5nOgpAQCAtNTQ5LDE4ICs1NTAsMzIgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjpzZXRHbG9iYWwo
dWludDMyX3QgaW5kZXgsIEV4cHJlc3Npb25UeXBlIHZhbHVlKSAtPiBQYXJ0aWFsUmUKIGlubGlu
ZSBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6ZW1pdENoZWNrQW5kUHJlcGFyZVBvaW50ZXIoRXhwcmVz
c2lvblR5cGUgcG9pbnRlciwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBzaXplT2ZPcGVyYXRp
b24pCiB7CiAgICAgQVNTRVJUKG1fbWVtb3J5QmFzZUdQUik7CisKICAgICBzd2l0Y2ggKG1fbW9k
ZSkgewogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6CiAgICAgICAgIC8vIFdl
J3JlIG5vdCB1c2luZyBzaWduYWwgaGFuZGxpbmcgYXQgYWxsLCB3ZSBtdXN0IHRoZXJlZm9yZSBj
aGVjayB0aGF0IG5vIG1lbW9yeSBhY2Nlc3MgZXhjZWVkcyB0aGUgY3VycmVudCBtZW1vcnkgc2l6
ZS4KICAgICAgICAgQVNTRVJUKG1fbWVtb3J5U2l6ZUdQUik7CiAgICAgICAgIEFTU0VSVChzaXpl
T2ZPcGVyYXRpb24gKyBvZmZzZXQgPiBvZmZzZXQpOwotICAgICAgICBtX2N1cnJlbnRCbG9jay0+
YXBwZW5kTmV3PFdhc21Cb3VuZHNDaGVja1ZhbHVlPihtX3Byb2MsIG9yaWdpbigpLCBwb2ludGVy
LCBtX21lbW9yeVNpemVHUFIsIHNpemVPZk9wZXJhdGlvbiArIG9mZnNldCAtIDEsIG1faW5mby5t
ZW1vcnkubWF4aW11bSgpKTsKKyAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNt
Qm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcG9pbnRlciwgc2l6ZU9mT3BlcmF0
aW9uICsgb2Zmc2V0IC0gMSwgbV9tZW1vcnlTaXplR1BSKTsKICAgICAgICAgYnJlYWs7CisKICAg
ICBjYXNlIE1lbW9yeU1vZGU6OlNpZ25hbGluZzoKLSAgICAgICAgLy8gV2UndmUgdmlydHVhbGx5
IG1hcHBlZCA0R2lCK3JlZHpvbmUgZm9yIHRoaXMgbWVtb3J5LiBPbmx5IHRoZSB1c2VyLWFsbG9j
YXRlZCBwYWdlcyBhcmUgYWRkcmVzc2FibGUsIGNvbnRpZ3VvdXNseSBpbiByYW5nZSBbMCwgY3Vy
cmVudF0sIGFuZCBldmVyeXRoaW5nIGFib3ZlIGlzIG1hcHBlZCBQUk9UX05PTkUuIFdlIGRvbid0
IG5lZWQgdG8gcGVyZm9ybSBhbnkgZXhwbGljaXQgYm91bmRzIGNoZWNrIGluIHRoZSA0R2lCIHJh
bmdlIGJlY2F1c2UgV2ViQXNzZW1ibHkgcmVnaXN0ZXIgbWVtb3J5IGFjY2Vzc2VzIGFyZSAzMi1i
aXQuIEhvd2V2ZXIgV2ViQXNzZW1ibHkgcmVnaXN0ZXIraW1tZWRpYXRlIGFjY2Vzc2VzIHBlcmZv
cm0gdGhlIGFkZGl0aW9uIGluIDY0LWJpdCB3aGljaCBjYW4gcHVzaCBhbiBhY2Nlc3MgYWJvdmUg
dGhlIDMyLWJpdCBsaW1pdC4gVGhlIHJlZHpvbmUgd2lsbCBjYXRjaCBtb3N0IHNtYWxsIGltbWVk
aWF0ZXMsIGFuZCB3ZSdsbCBleHBsaWNpdGx5IGJvdW5kcyBjaGVjayBhbnkgcmVnaXN0ZXIgKyBs
YXJnZSBpbW1lZGlhdGUgYWNjZXNzLgotICAgICAgICBpZiAob2Zmc2V0ID49IE1lbW9yeTo6ZmFz
dE1hcHBlZFJlZHpvbmVCeXRlcygpKQotICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVu
ZE5ldzxXYXNtQm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcG9pbnRlciwgSW52
YWxpZEdQUlJlZywgc2l6ZU9mT3BlcmF0aW9uICsgb2Zmc2V0IC0gMSwgbV9pbmZvLm1lbW9yeS5t
YXhpbXVtKCkpOworICAgICAgICAvLyBXZSd2ZSB2aXJ0dWFsbHkgbWFwcGVkIDRHaUIrcmVkem9u
ZSBmb3IgdGhpcyBtZW1vcnkuIE9ubHkgdGhlIHVzZXItYWxsb2NhdGVkIHBhZ2VzIGFyZSBhZGRy
ZXNzYWJsZSwgY29udGlndW91c2x5IGluIHJhbmdlIFswLCBjdXJyZW50XSwKKyAgICAgICAgLy8g
YW5kIGV2ZXJ5dGhpbmcgYWJvdmUgaXMgbWFwcGVkIFBST1RfTk9ORS4gV2UgZG9uJ3QgbmVlZCB0
byBwZXJmb3JtIGFueSBleHBsaWNpdCBib3VuZHMgY2hlY2sgaW4gdGhlIDRHaUIgcmFuZ2UgYmVj
YXVzZSBXZWJBc3NlbWJseSByZWdpc3RlcgorICAgICAgICAvLyBtZW1vcnkgYWNjZXNzZXMgYXJl
IDMyLWJpdC4gSG93ZXZlciBXZWJBc3NlbWJseSByZWdpc3RlciArIG9mZnNldCBhY2Nlc3NlcyBw
ZXJmb3JtIHRoZSBhZGRpdGlvbiBpbiA2NC1iaXQgd2hpY2ggY2FuIHB1c2ggYW4gYWNjZXNzIGFi
b3ZlCisgICAgICAgIC8vIHRoZSAzMi1iaXQgbGltaXQgKHRoZSBvZmZzZXQgaXMgdW5zaWduZWQg
MzItYml0KS4gVGhlIHJlZHpvbmUgd2lsbCBjYXRjaCBtb3N0IHNtYWxsIG9mZnNldHMsIGFuZCB3
ZSdsbCBleHBsaWNpdGx5IGJvdW5kcyBjaGVjayBhbnkKKyAgICAgICAgLy8gcmVnaXN0ZXIgKyBs
YXJnZSBvZmZzZXQgYWNjZXNzLiBXZSBkb24ndCB0aGluayB0aGlzIHdpbGwgYmUgZ2VuZXJhdGVk
IGZyZXF1ZW50bHkuCisgICAgICAgIC8vCisgICAgICAgIC8vIFdlIGNvdWxkIGNoZWNrIHRoYXQg
cmVnaXN0ZXIgKyBsYXJnZSBvZmZzZXQgZG9lc24ndCBleGNlZWQgNEdpQityZWR6b25lIHNpbmNl
IHRoYXQncyB0ZWNobmljYWxseSB0aGUgbGltaXQgd2UgbmVlZCB0byBhdm9pZCBvdmVyZmxvd2lu
ZyB0aGUKKyAgICAgICAgLy8gUFJPVF9OT05FIHJlZ2lvbiwgYnV0IGl0J3MgYmV0dGVyIGlmIHdl
IHVzZSBhIHNtYWxsZXIgaW1tZWRpYXRlIGJlY2F1c2UgaXQgY2FuIGNvZGVnZW5zIGJldHRlci4g
V2Uga25vdyB0aGF0IGFueXRoaW5nIGVxdWFsIHRvIG9yIGdyZWF0ZXIKKyAgICAgICAgLy8gdGhh
biB0aGUgZGVjbGFyZWQgJ21heGltdW0nIHdpbGwgdHJhcCwgc28gd2UgY2FuIGNvbXBhcmUgYWdh
aW5zdCB0aGF0IG51bWJlci4gSWYgdGhlcmUgd2FzIG5vIGRlY2xhcmVkICdtYXhpbXVtJyB0aGVu
IHdlIHN0aWxsIGtub3cgdGhhdAorICAgICAgICAvLyBhbnkgYWNjZXNzIGVxdWFsIHRvIG9yIGdy
ZWF0ZXIgdGhhbiA0R2lCIHdpbGwgdHJhcCwgbm8gbmVlZCB0byBhZGQgdGhlIHJlZHpvbmUuCisg
ICAgICAgIGlmIChvZmZzZXQgPj0gTWVtb3J5OjpmYXN0TWFwcGVkUmVkem9uZUJ5dGVzKCkpIHsK
KyAgICAgICAgICAgIHNpemVfdCBtYXhpbXVtID0gbV9pbmZvLm1lbW9yeS5tYXhpbXVtKCkgPyBt
X2luZm8ubWVtb3J5Lm1heGltdW0oKS5ieXRlcygpIDogc3RkOjpudW1lcmljX2xpbWl0czx1aW50
MzJfdD46Om1heCgpOworICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPmFwcGVuZE5ldzxXYXNt
Qm91bmRzQ2hlY2tWYWx1ZT4obV9wcm9jLCBvcmlnaW4oKSwgcG9pbnRlciwgc2l6ZU9mT3BlcmF0
aW9uICsgb2Zmc2V0IC0gMSwgbWF4aW11bSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisK
ICAgICBjYXNlIE1lbW9yeU1vZGU6Ok51bWJlck9mTWVtb3J5TW9kZXM6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQpAQCAtMTMwMCwxMiArMTMxNSw2IEBAIHN0
YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWxhdGlvbkNvbnRleHQmIGNvbXBp
bGF0aW9uQ29udGV4dCwgV2FzbUluCiAKICAgICBjb21waWxhdGlvbkNvbnRleHQuanNFbnRyeXBv
aW50VG9XYXNtRW50cnlwb2ludENhbGwgPSBqaXQuY2FsbCgpOwogCi0gICAgaWYgKCEhaW5mby5t
ZW1vcnkpIHsKLSAgICAgICAgLy8gUmVzZXR0aW5nIHRoZSByZWdpc3RlciBwcmV2ZW50cyB0aGUg
R0MgZnJvbSBtaXN0YWtlbmx5IHRoaW5raW5nIHRoYXQgdGhlIGNvbnRleHQgaXMgc3RpbGwgbGl2
ZS4KLSAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2lu
dGVyOwotICAgICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgYmFz
ZU1lbW9yeSk7Ci0gICAgfQotCiAgICAgZm9yIChjb25zdCBSZWdpc3RlckF0T2Zmc2V0JiByZWdB
dE9mZnNldCA6IHJlZ2lzdGVyc1RvU3BpbGwpIHsKICAgICAgICAgR1BSUmVnIHJlZyA9IHJlZ0F0
T2Zmc2V0LnJlZygpLmdwcigpOwogICAgICAgICBBU1NFUlQocmVnICE9IEdQUkluZm86OnJldHVy
blZhbHVlR1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKaW5k
ZXggOWU4ZDZlMC4uMGFiNjQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1l
bW9yeS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIHsKIGNvbnN0ZXhwciBib29sIHZl
cmJvc2UgPSBmYWxzZTsKIAogTkVWRVJfSU5MSU5FIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9p
ZCB3ZWJBc3NlbWJseUNvdWxkbnRHZXRGYXN0TWVtb3J5KCkgeyBDUkFTSCgpOyB9Ci1ORVZFUl9J
TkxJTkUgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHdlYkFzc2VtYmx5Q291bGRudFVubWFw
TWVtb3J5Qnl0ZXMoKSB7IENSQVNIKCk7IH0KK05FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RP
X0NSQVNIIHZvaWQgd2ViQXNzZW1ibHlDb3VsZG50VW5tYXBNZW1vcnkoKSB7IENSQVNIKCk7IH0K
IE5FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgd2ViQXNzZW1ibHlDb3Vs
ZG50VW5wcm90ZWN0TWVtb3J5KCkgeyBDUkFTSCgpOyB9CiAKIHZvaWQqIG1tYXBCeXRlcyhzaXpl
X3QgYnl0ZXMpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQqIG1tYXBCeXRlcyhzaXplX3QgYnl0ZXMp
CiB2b2lkIG11bm1hcEJ5dGVzKHZvaWQqIG1lbW9yeSwgc2l6ZV90IHNpemUpCiB7CiAgICAgaWYg
KFVOTElLRUxZKG11bm1hcChtZW1vcnksIHNpemUpKSkKLSAgICAgICAgd2ViQXNzZW1ibHlDb3Vs
ZG50VW5tYXBNZW1vcnlCeXRlcygpOworICAgICAgICB3ZWJBc3NlbWJseUNvdWxkbnRVbm1hcE1l
bW9yeSgpOwogfQogCiB2b2lkIHplcm9BbmRVbnByb3RlY3RCeXRlcyh2b2lkKiBzdGFydCwgc2l6
ZV90IGJ5dGVzKQpAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQqIHRyeUdldEZhc3RNZW1vcnkoVk0m
IHZtKQogICAgICAgICBtZW1vcnkgPSB0cnlHZXRDYWNoZWRGYXN0TWVtb3J5KCk7CiAgICAgICAg
IGlmIChtZW1vcnkpCiAgICAgICAgICAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAidHJ5R2V0RmFz
dE1lbW9yeSByZS11c2luZyAiLCBSYXdQb2ludGVyKG1lbW9yeSkpOwotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIC8vIE5vIG1lbW9yeSB3YXMgYXZhaWxhYmxlIGluIHRoZSBjYWNoZS4gTWF5
YmUgd2FpdGluZyBvbiBHQyB3aWxsIGZpbmQgYSBmcmVlIG9uZS4KKyAgICAgICAgZWxzZSBpZiAo
Y3VycmVudGx5QWxsb2NhdGVkRmFzdE1lbW9yaWVzLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfYWNx
dWlyZSkgPj0gMSkgeworICAgICAgICAgICAgLy8gTm8gbWVtb3J5IHdhcyBhdmFpbGFibGUgaW4g
dGhlIGNhY2hlLCBidXQgd2Uga25vdyB0aGVyZSdzIGF0IGxlYXN0IG9uZSBjdXJyZW50bHkgbGl2
ZS4gTWF5YmUgR0Mgd2lsbCBmaW5kIGEgZnJlZSBvbmUuCiAgICAgICAgICAgICAvLyBGSVhNRSBj
b2xsZWN0U3luYyhGdWxsKSBhbmQgY3VzdG9tIGVhZ2VyIGRlc3RydWN0aW9uIG9mIHdhc20gbWVt
b3JpZXMgY291bGQgYmUgYmV0dGVyLiBGb3Igbm93IHVzZSBjb2xsZWN0QWxsR2FyYmFnZS4gQWxz
bywgbm90aGluZyB0ZWxscyB1cyB0aGUgY3VycmVudCBWTSBpcyBob2xkaW5nIG9udG8gZmFzdCBt
ZW1vcmllcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDc0OAog
ICAgICAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9zZSwgInRyeUdldEZhc3RNZW1vcnkgd2FpdGlu
ZyBvbiBHQyBhbmQgcmV0cnlpbmciKTsKICAgICAgICAgICAgIHZtLmhlYXAuY29sbGVjdEFsbEdh
cmJhZ2UoKTsKQEAgLTI3MywxNCArMjczLDE3IEBAIHZvaWQgTWVtb3J5Ojppbml0aWFsaXplUHJl
YWxsb2NhdGlvbnMoKQogCiAgICAgLy8gUmFjZXMgY2Fubm90IG9jY3VyIGluIHRoaXMgZnVuY3Rp
b246IGl0IGlzIG9ubHkgY2FsbGVkIGF0IHByb2dyYW0gaW5pdGlhbGl6YXRpb24sIGJlZm9yZSBX
ZWJBc3NlbWJseSBjYW4gYmUgaW52b2tlZC4KIAotICAgIGNvbnN0IGF1dG8gc3RhcnRUaW1lID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWU7CisgICAg
aWYgKHZlcmJvc2UpCisgICAgICAgIHN0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwor
CiAgICAgY29uc3Qgc2l6ZV90IGRlc2lyZWRGYXN0TWVtb3JpZXMgPSBzdGQ6Om1pbjxzaXplX3Q+
KE9wdGlvbnM6OndlYkFzc2VtYmx5RmFzdE1lbW9yeVByZWFsbG9jYXRlQ291bnQoKSwgZmFzdE1l
bW9yeUNhY2hlSGFyZExpbWl0KTsKIAogICAgIC8vIFN0YXJ0IG9mZiB0cnlpbmcgdG8gYWxsb2Nh
dGUgZmFzdCBtZW1vcmllcyBjb250aWd1b3VzbHkgc28gdGhleSBkb24ndCBmcmFnbWVudCBlYWNo
IG90aGVyLiBUaGlzIGNhbiBmYWlsIGlmIHRoZSBhZGRyZXNzIHNwYWNlIGlzIG90aGVyd2lzZSBm
cmFnbWVudGVkLiBJbiB0aGF0IGNhc2UsIGdvIGZvciBzbWFsbGVyIGNvbnRpZ3VvdXMgYWxsb2Nh
dGlvbnMuIFdlJ2xsIGV2ZW50dWFsbHkgZ2V0IGluZGl2aWR1YWwgbm9uLWNvbnRpZ3VvdXMgZmFz
dCBtZW1vcmllcyBhbGxvY2F0ZWQsIG9yIHdlJ2xsIGp1c3QgYmUgdW5hYmxlIHRvIGZpdCBhIHNp
bmdsZSBvbmUgYXQgd2hpY2ggcG9pbnQgd2UgZ2l2ZSB1cC4KICAgICBhdXRvIGFsbG9jYXRlQ29u
dGlndW91c0Zhc3RNZW1vcmllcyA9IFsmXSAoc2l6ZV90IG51bUNvbnRpZ3VvdXMpIC0+IGJvb2wg
ewogICAgICAgICBpZiAodm9pZCAqbWVtb3J5ID0gbW1hcEJ5dGVzKE1lbW9yeTo6ZmFzdE1hcHBl
ZEJ5dGVzKCkgKiBudW1Db250aWd1b3VzKSkgewogICAgICAgICAgICAgZm9yIChzaXplX3Qgc3Vi
TWVtb3J5ID0gMDsgc3ViTWVtb3J5IDwgbnVtQ29udGlndW91czsgKytzdWJNZW1vcnkpIHsKLSAg
ICAgICAgICAgICAgICB2b2lkKiBzdGFydEFkZHJlc3MgPSByZWludGVycHJldF9jYXN0PGNoYXIq
PihtZW1vcnkpICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAqIHN1Yk1lbW9yeSArIHN1Yk1l
bW9yeTsKKyAgICAgICAgICAgICAgICB2b2lkKiBzdGFydEFkZHJlc3MgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPihtZW1vcnkpICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSAqIHN1Yk1lbW9y
eTsKICAgICAgICAgICAgICAgICBib29sIGluc2VydGVkID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgY2FjaGVFbnRyeSA9IDA7IGNhY2hlRW50cnkgPCBmYXN0TWVtb3J5Q2Fj
aGVIYXJkTGltaXQ7ICsrY2FjaGVFbnRyeSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZmFz
dE1lbW9yeUNhY2hlW2NhY2hlRW50cnldLmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCkg
PT0gbnVsbHB0cikgewpAQCAtMzEyLDE0ICszMTUsMTcgQEAgdm9pZCBNZW1vcnk6OmluaXRpYWxp
emVQcmVhbGxvY2F0aW9ucygpCiAgICAgY3VycmVudGx5QWxsb2NhdGVkRmFzdE1lbW9yaWVzLnN0
b3JlKGZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNvdW50LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVk
KTsKICAgICBvYnNlcnZlZE1heGltdW1GYXN0TWVtb3J5LnN0b3JlKGZhc3RNZW1vcnlQcmVhbGxv
Y2F0ZUNvdW50LCBzdGQ6Om1lbW9yeV9vcmRlcl9yZWxheGVkKTsKIAotICAgIGNvbnN0IGF1dG8g
ZW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworICAgIGlmICh2ZXJib3NlKSB7CisgICAg
ICAgIE1vbm90b25pY1RpbWUgZW5kVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOworCisgICAg
ICAgIGZvciAoc2l6ZV90IGNhY2hlRW50cnkgPSAwOyBjYWNoZUVudHJ5IDwgZmFzdE1lbW9yeVBy
ZWFsbG9jYXRlQ291bnQ7ICsrY2FjaGVFbnRyeSkgeworICAgICAgICAgICAgdm9pZCogc3RhcnRB
ZGRyZXNzID0gZmFzdE1lbW9yeUNhY2hlW2NhY2hlRW50cnldLmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfcmVsYXhlZCk7CisgICAgICAgICAgICBBU1NFUlQoc3RhcnRBZGRyZXNzKTsKKyAgICAgICAg
ICAgIGRhdGFMb2dMbigiUHJlLWFsbG9jYXRpb24gb2YgV2ViQXNzZW1ibHkgZmFzdCBtZW1vcnkg
YXQgIiwgUmF3UG9pbnRlcihzdGFydEFkZHJlc3MpKTsKKyAgICAgICAgfQogCi0gICAgZm9yIChz
aXplX3QgY2FjaGVFbnRyeSA9IDA7IGNhY2hlRW50cnkgPCBmYXN0TWVtb3J5UHJlYWxsb2NhdGVD
b3VudDsgKytjYWNoZUVudHJ5KSB7Ci0gICAgICAgIHZvaWQqIHN0YXJ0QWRkcmVzcyA9IGZhc3RN
ZW1vcnlDYWNoZVtjYWNoZUVudHJ5XS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOwot
ICAgICAgICBBU1NFUlQoc3RhcnRBZGRyZXNzKTsKLSAgICAgICAgZGF0YUxvZ0xuSWYodmVyYm9z
ZSwgIlByZS1hbGxvY2F0aW9uIG9mIFdlYkFzc2VtYmx5IGZhc3QgbWVtb3J5IGF0ICIsIFJhd1Bv
aW50ZXIoc3RhcnRBZGRyZXNzKSk7CisgICAgICAgIGRhdGFMb2dMbigiUHJlLWFsbG9jYXRlZCAi
LCBmYXN0TWVtb3J5UHJlYWxsb2NhdGVDb3VudCwgIiBXZWJBc3NlbWJseSBmYXN0IG1lbW9yaWVz
IGluICIsIGZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNvdW50ID09IDAgPyAwIDogZnJhZ21lbnRzLCBm
cmFnbWVudHMgPT0gMSA/ICIgZnJhZ21lbnQsIHRvb2sgIiA6ICIgZnJhZ21lbnRzLCB0b29rICIs
IGVuZFRpbWUgLSBzdGFydFRpbWUpOwogICAgIH0KLSAgICBkYXRhTG9nTG5JZih2ZXJib3NlLCAi
UHJlLWFsbG9jYXRlZCAiLCBmYXN0TWVtb3J5UHJlYWxsb2NhdGVDb3VudCwgIiBXZWJBc3NlbWJs
eSBmYXN0IG1lbW9yaWVzIGluICIsIGZhc3RNZW1vcnlQcmVhbGxvY2F0ZUNvdW50ID09IDAgPyAw
IDogZnJhZ21lbnRzLCBmcmFnbWVudHMgPT0gMSA/ICIgZnJhZ21lbnQsIHRvb2sgIiA6ICIgZnJh
Z21lbnRzLCB0b29rICIsIGVuZFRpbWUgLSBzdGFydFRpbWUpOwogfQogCiBNZW1vcnk6Ok1lbW9y
eShQYWdlQ291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0pCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>