<?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>168455</bug_id>
          
          <creation_ts>2017-02-16 12:55:32 -0800</creation_ts>
          <short_desc>[JSC] Drop PassRefPtr from ArrayBuffer</short_desc>
          <delta_ts>2017-02-16 22:06:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1277821</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 12:55:32 -0800</bug_when>
    <thetext>[JSC] Drop PassRefPtr from ArrayBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277826</commentid>
    <comment_count>1</comment_count>
      <attachid>301804</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 12:59:23 -0800</bug_when>
    <thetext>Created attachment 301804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277829</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 13:00:42 -0800</bug_when>
    <thetext>Attachment 301804 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 3 in 27 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>1277836</commentid>
    <comment_count>3</comment_count>
      <attachid>301804</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-02-16 13:07:49 -0800</bug_when>
    <thetext>Comment on attachment 301804
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277845</commentid>
    <comment_count>4</comment_count>
      <attachid>301809</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 13:19:23 -0800</bug_when>
    <thetext>Created attachment 301809
Patch

Patch for landing with macOS fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277849</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 13:22:53 -0800</bug_when>
    <thetext>Attachment 301809 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 31 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>1277881</commentid>
    <comment_count>6</comment_count>
      <attachid>301818</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 13:51:15 -0800</bug_when>
    <thetext>Created attachment 301818
Patch

Patch for landing with macOS fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277883</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 13:53:15 -0800</bug_when>
    <thetext>Attachment 301818 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 31 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>1278078</commentid>
    <comment_count>8</comment_count>
      <attachid>301871</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 19:37:35 -0800</bug_when>
    <thetext>Created attachment 301871
Patch

Patch for landing with macOS linker fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278080</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 19:40:39 -0800</bug_when>
    <thetext>Attachment 301871 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 31 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>1278096</commentid>
    <comment_count>10</comment_count>
      <attachid>301874</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 20:42:29 -0800</bug_when>
    <thetext>Created attachment 301874
Patch

Patch for landing with macOS linker fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278097</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 20:45:47 -0800</bug_when>
    <thetext>Attachment 301874 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 31 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>1278101</commentid>
    <comment_count>12</comment_count>
      <attachid>301876</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 20:59:16 -0800</bug_when>
    <thetext>Created attachment 301876
Patch

Patch for landing with macOS linker fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278102</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 21:09:38 -0800</bug_when>
    <thetext>Attachment 301876 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/runtime/GenericTypedArrayViewInlines.h:36:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
Total errors found: 2 in 31 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>1278122</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-16 22:06:03 -0800</bug_when>
    <thetext>Committed r212535: &lt;http://trac.webkit.org/changeset/212535&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301804</attachid>
            <date>2017-02-16 12:59:23 -0800</date>
            <delta_ts>2017-02-16 13:07:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168455-20170217055645.patch</filename>
            <type>text/plain</type>
            <size>50969</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZmVlNGE4ODBkM2MzYzI2ZmIyOGVlZDIzYjI0ODExMzAwYzA3NTRlLi44ODhiNGFkMjg1MTY4MjZi
MmU1Yzc4MjA3NDJiNWY2ZWYxY2ZlYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaW5hbGx5IGRyb3BzIGFsbCB0aGUgUGFzc1JlZlB0ciBpbiBKU0MuCisgICAgICAgIFdlIGNo
YW5nZWQgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gdG8gUmVmUHRyPEFycmF5QnVmZmVyPiYmLgor
ICAgICAgICBTaW5jZSBBcnJheUJ1ZmZlciBtYXkgYmUgbnVsbHB0ciBpZiB0aGUgYXJyYXkgaXMg
bmV1dGVyZWQsCisgICAgICAgIHdlIGhvbGQgaXQgYXMgUmVmUHRyPD4gaW5zdGVhZCBvZiBSZWY8
Pi4KKworICAgICAgICBBbmQgd2UgYWxzbyBkcm9wcyAyIGZpbGVzLCBUeXBlZEFycmF5QmFzZS5o
IGFuZCBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmguCisgICAgICAgIFRoZXkgYXJlIG5vdCB1c2Vk
IChhbmQgdGhleSBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgcHJvamVjdCBmaWxlKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6CisgICAgICAgIChK
U0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSk6CisgICAgICAg
ICogcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6
SlNBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAg
ICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpw
b3NzaWJseVNoYXJlZFR5cGVkSW1wbCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnVuc2hh
cmVkVHlwZWRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Z2V0VHlwZWRBcnJheUlt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Z2V0VHlwZWRBcnJheUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisKIDIwMTctMDItMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0
b3IgQWNjZXNzQ2FzZSB0byBiZSBtb3JlIGxpa2UgQjNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyN2Nk
ZjIyNGIwYzg1ODNlYWRkYThkZGU5MjhlYTg3ZjU4NDE0NjcuLjE1MzY1NDkwZjcyMzc4ZWUxOGE4
MmQwYjZhOWU3ODIwZmM3Yjk3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0w
Mi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
SlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRBcnJheUJ1ZmZlclZpZXcpOgorICAgICAg
ICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6Y3JlYXRl
KToKKwogMjAxNy0wMi0xNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFtSZXNvdXJjZSBUaW1pbmddIFN1cHBvcnQgUmVzb3VyY2UgVGltaW5nIGluIFdv
cmtlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNj
cmlwdENhbGxGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmgKaW5kZXggNmFmNDkyZWY2MDg5ZTNhMGVkMzgzYTkwODAyZTY3ZDBjZjFm
ZjRlOS4uZWUxZjhhZWEzNDY3ZjY5OGE4YmY2OTdhZjI0ZjJlMDA3NWNmN2FhYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1l
LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFt
ZS5oIgogI2luY2x1ZGUgImludGVycHJldGVyL0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IDE2YzA0MjhhOWFkY2NjOGRlNDQ0MTE2YzIwMjhiYTdhODRkOGM0NTMu
LjI0ZmJkZTE1ZTViMGU0ODkzZDU1OTk3Nzk1MTEzMTUxYTI2YzI3MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC0yNTU2LDcgKzI1NTYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KEV4ZWNTdGF0ZSogZXhlYwogICAg
IH0KICAgICAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG5hdGl2ZUJ1ZmZlciA9IEFycmF5QnVm
ZmVyOjpjcmVhdGUobWVzc2FnZS0+cmVsZWFzZUNvbnRlbnRzKCkpOwotICAgIEpTQXJyYXlCdWZm
ZXIqIGpzQnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01v
ZGUoKSksIG5hdGl2ZUJ1ZmZlcik7CisgICAgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5n
TW9kZSA9IG5hdGl2ZUJ1ZmZlci0+c2hhcmluZ01vZGUoKTsKKyAgICBKU0FycmF5QnVmZmVyKiBq
c0J1ZmZlciA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5hcnJheUJ1ZmZlclN0cnVjdHVyZShzaGFyaW5nTW9kZSksIFdURk1vdmUobmF0aXZl
QnVmZmVyKSk7CiAgICAgCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdz
LmFwcGVuZChqc0J1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBjMGJlZmM0OGEwZGE3OWIzNzBmYWFkMTAyNTQ5Y2Ew
NzRjYzA5YjQzLi45ZmVkN2M3ODZiNmJlOTdhMzFlNTk0MzUyNmNiYmRiZWI2MDUwZGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAK
QEAgLTI5LDExICsyOSwxMSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIEFycmF5QnVmZmVyVmlldzo6
QXJyYXlCdWZmZXJWaWV3KAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
CiAgICAgICAgIDogbV9ieXRlT2Zmc2V0KGJ5dGVPZmZzZXQpCiAgICAgICAgICwgbV9pc05ldXRl
cmFibGUodHJ1ZSkKLSAgICAgICAgLCBtX2J1ZmZlcihidWZmZXIpCisgICAgICAgICwgbV9idWZm
ZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIG1fYmFzZUFkZHJlc3MgPSBtX2J1ZmZlciA/IChz
dGF0aWNfY2FzdDxjaGFyKj4obV9idWZmZXItPmRhdGEoKSkgKyBtX2J5dGVPZmZzZXQpIDogMDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgK
aW5kZXggNTVmMzQ2ZTNhNDM1MWU2ZTQzZWMwYzY3MGUyZTVkMzFjMWQ2OGE1MC4uZTc2ZTZlMjY1
MmFjZjlhY2IzODQ5ZTM0NTU4OWNjZDg5YzMyZTgyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNs
dWRlICJUeXBlZEFycmF5VHlwZS5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxs
aW1pdHMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00OCwxNiArNDcsMTYgQEAg
Y2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3
PiB7CiAgICAgICAgIHJldHVybiAhbV9idWZmZXIgfHwgbV9idWZmZXItPmlzTmV1dGVyZWQoKTsK
ICAgICB9CiAgICAgCi0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcG9zc2libHlTaGFyZWRC
dWZmZXIoKSBjb25zdAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcG9zc2libHlTaGFyZWRCdWZm
ZXIoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzTmV1dGVyZWQoKSkKLSAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBt
X2J1ZmZlcjsKICAgICB9CiAgICAgCi0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gdW5zaGFy
ZWRCdWZmZXIoKSBjb25zdAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gdW5zaGFyZWRCdWZmZXIo
KSBjb25zdAogICAgIHsKLSAgICAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0g
cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiByZXN1
bHQgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCghcmVz
dWx0LT5pc1NoYXJlZCgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xMDAs
OSArOTksOSBAQCBjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxBcnJh
eUJ1ZmZlclZpZXc+IHsKIAogICAgIC8vIEhlbHBlciB0byB2ZXJpZnkgdGhhdCBhIGdpdmVuIHN1
Yi1yYW5nZSBvZiBhbiBBcnJheUJ1ZmZlciBpcwogICAgIC8vIHdpdGhpbiByYW5nZS4KLSAgICBz
dGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCBzaXplX3Qg
c2l6ZSkKKyAgICBzdGF0aWMgYm9vbCB2ZXJpZnlTdWJSYW5nZUxlbmd0aChjb25zdCBBcnJheUJ1
ZmZlciYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywg
c2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVy
LT5ieXRlTGVuZ3RoKCk7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBidWZmZXIuYnl0
ZUxlbmd0aCgpOwogICAgICAgICBpZiAoYnl0ZU9mZnNldCA+IGJ5dGVMZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0g
KGJ5dGVMZW5ndGggLSBieXRlT2Zmc2V0KSAvIHNpemU7CkBAIC0xMTQsNyArMTEzLDcgQEAgY2xh
c3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7
CiAgICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChFeGVjU3RhdGUqLCBKU0dsb2Jh
bE9iamVjdCopID0gMDsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBB
cnJheUJ1ZmZlclZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZz
ZXQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhSZWZQdHI8QXJyYXlC
dWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQpOwogCiAgICAgaW5saW5lIGJvb2wgc2V0SW1w
bChBcnJheUJ1ZmZlclZpZXcqLCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKIApAQCAtMTMwLDIwICsx
MjksMjAgQEAgY2xhc3MgQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlC
dWZmZXJWaWV3PiB7CiAgICAgLy8gb3V0cHV0IG9mZnNldCBpcyBpbiBudW1iZXIgb2YgYnl0ZXMg
ZnJvbSB0aGUgdW5kZXJseWluZyBidWZmZXIncyB2aWV3LgogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogICAgIHN0YXRpYyB2b2lkIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMoCi0gICAgICAg
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwKKyAgICAgICAgY29uc3QgQXJyYXlCdWZm
ZXImIGJ1ZmZlciwKICAgICAgICAgdW5zaWduZWQgYXJyYXlCeXRlT2Zmc2V0LAogICAgICAgICB1
bnNpZ25lZCAqb2Zmc2V0LAogICAgICAgICB1bnNpZ25lZCAqbnVtRWxlbWVudHMpCiAgICAgewog
ICAgICAgICB1bnNpZ25lZCBtYXhPZmZzZXQgPSAoVUlOVF9NQVggLSBhcnJheUJ5dGVPZmZzZXQp
IC8gc2l6ZW9mKFQpOwogICAgICAgICBpZiAoKm9mZnNldCA+IG1heE9mZnNldCkgewotICAgICAg
ICAgICAgKm9mZnNldCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAgKm9mZnNl
dCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgICAgICAqbnVtRWxlbWVudHMgPSAwOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgICpvZmZzZXQgPSBhcnJheUJ5
dGVPZmZzZXQgKyAqb2Zmc2V0ICogc2l6ZW9mKFQpOwotICAgICAgICAqb2Zmc2V0ID0gc3RkOjpt
aW4oYnVmZmVyLT5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOwotICAgICAgICB1bnNpZ25lZCByZW1h
aW5pbmdFbGVtZW50cyA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9m
KFQpOworICAgICAgICAqb2Zmc2V0ID0gc3RkOjptaW4oYnVmZmVyLmJ5dGVMZW5ndGgoKSwgKm9m
ZnNldCk7CisgICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci5ieXRl
TGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKICAgICAgICAgKm51bUVsZW1lbnRzID0g
c3RkOjptaW4ocmVtYWluaW5nRWxlbWVudHMsICpudW1FbGVtZW50cyk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCmluZGV4IDJiMjE1N2NlYzJjY2Mz
NjE4YTkxNDFlOTcyZDdiNTEzMmVhNWY1MTEuLjQ4MGFlYTIyMGY0N2U4ZjI1OWNlZDkxNTk1MmQ3
ZWI4ODU2YTUxMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5o
CkBAIC05OSw3ICs5OSw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAgICAgdHlwZWRlZiBBcnJh
eUJ1ZmZlciogKCpTbG93RG93bkFuZFdhc3RlTWVtb3J5KShKU0FycmF5QnVmZmVyVmlldyopOwog
ICAgIFNsb3dEb3duQW5kV2FzdGVNZW1vcnkgc2xvd0Rvd25BbmRXYXN0ZU1lbW9yeTsKICAgICAK
LSAgICB0eXBlZGVmIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiAoKkdldFR5cGVkQXJyYXlJ
bXBsKShKU0FycmF5QnVmZmVyVmlldyopOworICAgIHR5cGVkZWYgUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4gKCpHZXRUeXBlZEFycmF5SW1wbCkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBHZXRU
eXBlZEFycmF5SW1wbCBnZXRUeXBlZEFycmF5SW1wbDsKIAogICAgIHR5cGVkZWYgYm9vbCAoKlBy
ZXZlbnRFeHRlbnNpb25zRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKaW5kZXggYjEwY2E0MDNlNWJk
MGYyNjA4NGU5Y2M3NGY5YzBlMzZhMmRjODlkYi4uM2I1ODcxYmEzYmUyYTFlYmNmNDFiM2Q3Yjc0
ZWFmOWY2MzZlZGU4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3
LmNwcApAQCAtMzIsMjIgKzMyLDIyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1EYXRhVmlldzo6
RGF0YVZpZXcoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQotICAgIDogQXJyYXlCdWZmZXJWaWV3KGJ1ZmZlciwg
Ynl0ZU9mZnNldCkKK0RhdGFWaWV3OjpEYXRhVmlldyhSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIDogQXJy
YXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCkKICAgICAsIG1fYnl0ZUxl
bmd0aChieXRlTGVuZ3RoKQogewogfQogCiBSZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUo
Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0
LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRl
T2Zmc2V0LCBieXRlTGVuZ3RoKSk7CiB9CiAKLVJlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0
ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIpCitSZWY8RGF0YVZpZXc+IERh
dGFWaWV3OjpjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKLSAgICByZXR1cm4gY3JlYXRl
KGJ1ZmZlciwgMCwgYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgIHVuc2lnbmVkIGJ5dGVMZW5n
dGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoYnVm
ZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3KiBEYXRhVmlldzo6
d3JhcChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAppbmRleCAyMjgxNDc5NWUzYWI3MjZh
ZDY2NmU2OTZlM2QwZThkMDE4NDUyYzMwLi42NjM2M2E3NTQyMzM4ZGNiYzhhN2ViZGY1MGM5YmVj
MDg0NzdiN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKQEAg
LTI3LDE3ICsyNywxNiBAQAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZsaXBCeXRlcy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBEYXRhVmlldyA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewog
cHJvdGVjdGVkOgotICAgIERhdGFWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKKyAgICBEYXRhVmlldyhSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgp
OwogICAgIAogcHVibGljOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0YVZp
ZXc+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8RGF0
YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0
cjxBcnJheUJ1ZmZlcj4mJik7CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCBmZDQ4YzljY2I1NmViY2MwYTUwMDgwMGU3
ZjJlYTI3M2VjYTVlMTMzLi4zNDdiNjUxMmRjZjQwMTllYjZiNDg5OGEwZTFkNzQ0NWQ0ZTYzZGRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRB
cnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXcuaApAQCAtMzMsMTIgKzMzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogdGVtcGxh
dGU8dHlwZW5hbWUgQWRhcHRvcj4KIGNsYXNzIEdlbmVyaWNUeXBlZEFycmF5VmlldyA6IHB1Ymxp
YyBBcnJheUJ1ZmZlclZpZXcgewogcHJvdGVjdGVkOgotICAgIEdlbmVyaWNUeXBlZEFycmF5Vmll
dyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoKTsKKyAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYm
LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogCiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZSh1bnNpZ25lZCBsZW5n
dGgpOwogICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoY29u
c3QgdHlwZW5hbWUgQWRhcHRvcjo6VHlwZSogYXJyYXksIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAg
c3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAKICAg
ICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlVW5pbml0aWFsaXpl
ZCh1bnNpZ25lZCBsZW5ndGgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmluZGV4IGRh
N2E0NTMxMTQxMjhmMmJjNjgzNDljYzZiYzVhNjMxNjczMmRhMmUuLjFiNmRhNTYxZWI3Y2ViMTMx
MmFhNjQ4Y2QyZTQ5M2I1ODJiOWI2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTMy
LDggKzMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5VmlldygK
LSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCkKLSAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVPZmZz
ZXQpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIDogQXJyYXlCdWZmZXJWaWV3KFdURk1vdmUoYnVmZmVy
KSwgYnl0ZU9mZnNldCkKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKIHsKIH0KQEAgLTU4LDEwICs1
OCwxMCBAQCBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4+IEdlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBh
c3NlZEJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKIHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZl
cjsKLSAgICBpZiAoIXZlcmlmeVN1YlJhbmdlTGVuZ3RoKGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVu
Z3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpCisgICAgQVNTRVJUKGJ1ZmZlcik7
CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKCpidWZmZXIs
IGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKQogICAg
ICAgICB8fCAhdmVyaWZ5Qnl0ZU9mZnNldEFsaWdubWVudChieXRlT2Zmc2V0LCBzaXplb2YodHlw
ZW5hbWUgQWRhcHRvcjo6VHlwZSkpKSB7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
QEAgLTk0LDcgKzk0LDggQEAgR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJh
eShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0CiAgICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7
CiAgICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIHRoaXMtPmxlbmd0aCgp
LCAmb2Zmc2V0LCAmbGVuZ3RoKTsKICAgICBBcnJheUJ1ZmZlciogYnVmZmVyID0gcG9zc2libHlT
aGFyZWRCdWZmZXIoKTsKLSAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5
cGU+KGJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsKKyAgICBBU1NFUlQo
YnVmZmVyKTsKKyAgICBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzPEFkYXB0b3I6OlR5cGU+KCpi
dWZmZXIsIGJ5dGVPZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7CiAgICAgcmV0dXJuIGNyZWF0
ZShidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjODE0OWY2ZjE1ODRhYTFhOWE5NmE0NTcxNzBjYzFiMDUyZTg0NzBm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVncmFsVHlwZWRBcnJheUJhc2UuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJUeXBlZEFycmF5QmFzZS5oIgot
I2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi0vLyBCYXNl
IGNsYXNzIGZvciBhbGwgV2ViR0w8VD5BcnJheSB0eXBlcyBob2xkaW5nIGludGVncmFsCi0vLyAo
bm9uLWZsb2F0aW5nLXBvaW50KSB2YWx1ZXMuCi0KLW5hbWVzcGFjZSBKU0MgewotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIEludGVncmFsVHlwZWRBcnJheUJhc2UgOiBwdWJsaWMgVHlw
ZWRBcnJheUJhc2U8VD4gewotcHVibGljOgotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBk
b3VibGUgdmFsdWUpCi0gICAgewotICAgICAgICBpZiAoaW5kZXggPj0gVHlwZWRBcnJheUJhc2U8
VD46Om1fbGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoc3RkOjppc25h
bih2YWx1ZSkpIC8vIENsYW1wIE5hTiB0byAwCi0gICAgICAgICAgICB2YWx1ZSA9IDA7Ci0gICAg
ICAgIC8vIFRoZSBkb3VibGUgY2FzdCBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHdy
YXBwaW5nCi0gICAgICAgIC8vIGZvciBvdXQtb2YtcmFuZ2UgdmFsdWVzIHdpdGggSW50MzJBcnJh
eSBhbmQgVWludDMyQXJyYXkuCi0gICAgICAgIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5k
ZXhdID0gc3RhdGljX2Nhc3Q8VD4oc3RhdGljX2Nhc3Q8aW50NjRfdD4odmFsdWUpKTsKLSAgICB9
Ci0KLXByb3RlY3RlZDoKLSAgICBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQot
ICAgICAgICA6IFR5cGVkQXJyYXlCYXNlPFQ+KGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKQot
ICAgIHsKLSAgICB9Ci0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyLmNwcAppbmRleCA3YTdmYWFjNzc2YTNj
MzcyZmJmZmE1YzI2YmY2MTgxMWJhNjYxZmQwLi5iMjRiNmRiNDZhNWVhMDk0ZGU4YmE4M2JhYzgw
MjJhYWQ5OGI3YzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNvbnN0IENs
YXNzSW5mbyBKU0FycmF5QnVmZmVyOjpzX2luZm8gPSB7CiAgICAgIkFycmF5QnVmZmVyIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FycmF5QnVmZmVyKX07CiAKLUpT
QXJyYXlCdWZmZXI6OkpTQXJyYXlCdWZmZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIpCitKU0FycmF5QnVmZmVyOjpKU0Fy
cmF5QnVmZmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiBhcnJheUJ1ZmZlcikKICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1faW1w
bChhcnJheUJ1ZmZlci5nZXQoKSkKIHsKQEAgLTUwLDEyICs1MCwxMSBAQCB2b2lkIEpTQXJyYXlC
dWZmZXI6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIH0KIAogSlNBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKAotICAgIFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBhc3NlZEJ1
ZmZlcikKKyAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYgYnVmZmVyKQogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gcGFzc2Vk
QnVmZmVyOwogICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEpTQXJyYXlCdWZmZXI+KHZtLmhlYXApKQotICAgICAgICBKU0FycmF5
QnVmZmVyKHZtLCBzdHJ1Y3R1cmUsIGJ1ZmZlcik7CisgICAgICAgIEpTQXJyYXlCdWZmZXIodm0s
IHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCmluZGV4IDU5
Mjg3ZTE3Y2JkNzVlYThhMWJlNzZjZjkzYzU3ZjhkZDcxMjBjNDMuLjkxNDI3YTkwYmQ1OWQzOTdl
NjFjNmUzZTY0MzhhNTJiZDliZGJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyLmgKQEAgLTM2LDEyICszNiwxMiBAQCBjbGFzcyBKU0FycmF5QnVm
ZmVyIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogICAgIAogcHJv
dGVjdGVkOgotICAgIEpTQXJyYXlCdWZmZXIoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPik7CisgICAgSlNBcnJheUJ1ZmZlcihWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2Jq
ZWN0Kik7CiAgICAgCiBwdWJsaWM6CiAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHJlZ2lzdGVy
IHRoZSBuZXcgd3JhcHBlciB3aXRoIHRoZSB2bSdzIFR5cGVkQXJyYXlDb250cm9sbGVyLgotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0FycmF5QnVmZmVyKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIEpTQXJyYXlCdWZmZXIqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJik7CiAKICAgICBBcnJheUJ1ZmZlciogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1wbDsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCBiODAzZDk1NTlkMjdjM2ZjNDE2ZDE1
ZTlkZTNkNzBjOGY2YjBkNDZlLi4zYzc2YmY5NWMyNGUyZGVkNTBkY2Y0YWJiNzcxNDkxM2ZlNGU1
MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNhbGxlZS0+Z2xvYmFsT2Jq
ZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKG5ld0J1ZmZlci0+c2hhcmluZ01vZGUoKSk7CiAg
ICAgCi0gICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZt
LCBzdHJ1Y3R1cmUsIG5ld0J1ZmZlcik7CisgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNB
cnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobmV3QnVmZmVyKSk7CiAg
ICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IGEz
YjM4ODgzZWQ3MWY0ZWZiOTg2Mzc1NDM1NmU0YzczYzFmN2FiN2YuLjc2YjdmY2QxZjM3OWNmYmI1
NTg3NDE3YzI3OGRkNTA1OWYyMzMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU0Fy
cmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgK
IH0KIAogSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlv
bkNvbnRleHQoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIsCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKQEAgLTExNiw3ICsxMTYsNyBAQCBKU0FycmF5QnVmZmVyVmll
dzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIH0KIAogSlNBcnJh
eUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCi0g
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVm
ZmVyLAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJy
YXlCdWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBEYXRh
Vmlld1RhZykKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlC
dWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oCmluZGV4IDdlNTFkNTFkYmViMWYxMTRkNzI3Mjg0YTgwYjhiYjUxMjVkMGFlOGMuLjQ0
N2M4M2EzZWUxN2FkY2YzYmFhZDQ2OTBiNTUxZGM0ZTg4YjlhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaApAQCAtMTIyLDEyICsx
MjIsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgICAgIENvbnN0cnVjdGlvbkNvbnRleHQoU3RydWN0dXJlKiwgdWludDMyX3QgbGVu
Z3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICAgICAgICAgIFZNJiwgU3RydWN0dXJlKiwgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sCisgICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiwKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7CiAgICAgICAgIAogICAgICAgICBlbnVtIERhdGFWaWV3VGFnIHsgRGF0YVZpZXcg
fTsKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dCgKLSAgICAgICAgICAgIFN0cnVjdHVyZSos
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LAorICAgICAgICAgICAgU3RydWN0dXJlKiwgUmVmUHRy
PEFycmF5QnVmZmVyPiYmLAogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWdu
ZWQgbGVuZ3RoLCBEYXRhVmlld1RhZyk7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9y
ISgpIGNvbnN0IHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQpAQCAtMTYyLDggKzE2Miw4IEBAIGNs
YXNzIEpTQXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIEFy
cmF5QnVmZmVyKiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwogICAgIEpTQXJyYXlCdWZmZXIqIHVu
c2hhcmVkSlNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKTsKICAgICBKU0FycmF5QnVmZmVyKiBwb3Nz
aWJseVNoYXJlZEpTQnVmZmVyKEV4ZWNTdGF0ZSogZXhlYyk7Ci0gICAgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlclZpZXc+IHVuc2hhcmVkSW1wbCgpOwotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiBwb3NzaWJseVNoYXJlZEltcGwoKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB1
bnNoYXJlZEltcGwoKTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBwb3NzaWJseVNoYXJl
ZEltcGwoKTsKICAgICBib29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiBoYXNBcnJheUJ1ZmZlcigp
ICYmICF2ZWN0b3IoKTsgfQogICAgIHZvaWQgbmV1dGVyKCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5o
CmluZGV4IGI5OTU2N2Q0NzQ1Y2NlYThjYzY3N2ZmNTdmZmUyZTc2MjdlOGJiOGMuLmQ1YzcyN2Y3
NGFmN2NlZDNjM2FmYjUyYzdlYWQ3YWU5OWY2YTg2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCkBAIC02
MSwxNCArNjEsMTQgQEAgaW5saW5lIEFycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyVmlldzo6ZXhp
c3RpbmdCdWZmZXJJbkJ1dHRlcmZseSgpCiAgICAgcmV0dXJuIGJ1dHRlcmZseSgpLT5pbmRleGlu
Z0hlYWRlcigpLT5hcnJheUJ1ZmZlcigpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJlZEltcGwoKQoraW5saW5l
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojpwb3NzaWJseVNoYXJl
ZEltcGwoKQogewogICAgIHJldHVybiBtZXRob2RUYWJsZSgpLT5nZXRUeXBlZEFycmF5SW1wbCh0
aGlzKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5QnVm
ZmVyVmlldzo6dW5zaGFyZWRJbXBsKCkKK2lubGluZSBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBK
U0FycmF5QnVmZmVyVmlldzo6dW5zaGFyZWRJbXBsKCkKIHsKLSAgICBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gcmVzdWx0ID0gcG9zc2libHlTaGFyZWRJbXBsKCk7CisgICAgUmVmUHRyPEFy
cmF5QnVmZmVyVmlldz4gcmVzdWx0ID0gcG9zc2libHlTaGFyZWRJbXBsKCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIXJlc3VsdC0+aXNTaGFyZWQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCmluZGV4IDNlZjgzMWQ1OGQ2MmY4
ZWMwMGI1OTA3MzczNjY1NmE5NzBhNTIzNzcuLmFjZGQ0ZTg4YzBhZjE0YTA5Zjc2YmUyYTNhYTVh
MTkwZWE2YjgwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApA
QCAtMjUwLDEzICsyNTAsMTMgQEAgYm9vbCBKU0NlbGw6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXIKIEFycmF5QnVmZmVy
KiBKU0NlbGw6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKQogewog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0NlbGw6Omdl
dFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KikKK1JlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+IEpTQ2VsbDo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqKQogewogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIHVpbnQzMl90IEpTQ2VsbDo6Z2V0RW51bWVyYWJsZUxlbmd0aChFeGVj
U3RhdGUqLCBKU09iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCmlu
ZGV4IGM0NWVlYTMwZTk4OGM5NzFmNDMwODU4YTI5ZjU3ZWM0OTJiZmI5NzcuLjE0NjRiYjUxZDQy
Y2UyYzI3MDY5OWQ0NTIwOWFlYmE1ZmVjN2IwZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCkBAIC0yNTMsNyArMjUzLDcgQEAgY2xhc3MgSlNDZWxsIDogcHVibGljIEhl
YXBDZWxsIHsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBBcnJheUJ1ZmZlciogc2xvd0Rvd25BbmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmZmVyVmll
dyopOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4gZ2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gZ2V0VHlwZWRBcnJheUlt
cGwoSlNBcnJheUJ1ZmZlclZpZXcqKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcAppbmRleCBmNGFmZWJiOTBlZTc0NGY0MjYwZWMyOGQ4NTNiMGNkZTdkMTdjODQ0
Li4xZjY3ZmJkY2EzZTBjOTlmNzk3YjVmNjgxZjJmYjFhMDEyNDhhOTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtNDQsMTQgKzQ0LDE0IEBA
IEpTRGF0YVZpZXc6OkpTRGF0YVZpZXcoVk0mIHZtLCBDb25zdHJ1Y3Rpb25Db250ZXh0JiBjb250
ZXh0LCBBcnJheUJ1ZmZlciogYnVmZmVyCiB9CiAKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNy
ZWF0ZSgKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVm
UHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsCisgICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwKICAgICB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgaWYgKCFB
cnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKGJ1ZmZlciwgYnl0ZU9mZnNldCwg
Ynl0ZUxlbmd0aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgeworICAgIEFTU0VSVChidWZmZXIpOworICAg
IGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRl
T2Zmc2V0LCBieXRlTGVuZ3RoLCBzaXplb2YodWludDhfdCkpKSB7CiAgICAgICAgIHRocm93Vk1F
cnJvcihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkxl
bmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUo
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0
IGNvbnRleHQoCi0gICAgICAgIHN0cnVjdHVyZSwgYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVu
Z3RoLCBDb25zdHJ1Y3Rpb25Db250ZXh0OjpEYXRhVmlldyk7CisgICAgICAgIHN0cnVjdHVyZSwg
YnVmZmVyLmNvcHlSZWYoKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0aW9uQ29u
dGV4dDo6RGF0YVZpZXcpOwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0RhdGFWaWV3KiBy
ZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0RhdGFWaWV3Pih2
bS5oZWFwKSkgSlNEYXRhVmlldyh2bSwgY29udGV4dCwgYnVmZmVyLmdldCgpKTsKQEAgLTkyLDEy
ICs5MiwxMiBAQCBib29sIEpTRGF0YVZpZXc6OnNldEluZGV4KEV4ZWNTdGF0ZSosIHVuc2lnbmVk
LCBKU1ZhbHVlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUGFzc1JlZlB0cjxEYXRhVmlldz4g
SlNEYXRhVmlldzo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKQorUmVmUHRyPERhdGFWaWV3PiBK
U0RhdGFWaWV3Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpCiB7CiAgICAgcmV0dXJuIERhdGFW
aWV3OjpjcmVhdGUocG9zc2libHlTaGFyZWRCdWZmZXIoKSwgYnl0ZU9mZnNldCgpLCBsZW5ndGgo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8RGF0YVZpZXc+IEpTRGF0YVZpZXc6OnVuc2hhcmVkVHlwZWRJ
bXBsKCkKK1JlZlB0cjxEYXRhVmlldz4gSlNEYXRhVmlldzo6dW5zaGFyZWRUeXBlZEltcGwoKQog
ewogICAgIHJldHVybiBEYXRhVmlldzo6Y3JlYXRlKHVuc2hhcmVkQnVmZmVyKCksIGJ5dGVPZmZz
ZXQoKSwgbGVuZ3RoKCkpOwogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIEFycmF5QnVmZmVyKiBKU0Rh
dGFWaWV3OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3KikKICAgICBy
ZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTRGF0YVZpZXc6Omdl
dFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KiBvYmplY3QpCitSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiBKU0RhdGFWaWV3OjpnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmll
dyogb2JqZWN0KQogewogICAgIEpTRGF0YVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNEYXRh
Vmlldyo+KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnBvc3NpYmx5U2hhcmVkVHlw
ZWRJbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKaW5k
ZXggY2FlM2E5MjhkZGIxZWE5ZjZmMjc0YWVmMDhhM2Y4ZTQ0Y2YyMzU0ZS4uZjQyMDMyZTljMzEx
Nzc1ZmZmNGRmNTAwNjMzM2IwY2Q2NTEzOThjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXcuaApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBKU0RhdGFWaWV3IDog
cHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICAKIHB1YmxpYzoKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgSlNEYXRhVmlldyogY3JlYXRlKAotICAgICAgICBFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwK
KyAgICAgICAgRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LAogICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAK
ICAgICAvLyBEdW1teSBtZXRob2RzLCB3aGljaCBkb24ndCBhY3R1YWxseSB3b3JrOyB0aGVzZSBh
cmUganVzdCBpbiBwbGFjZSB0bwpAQCAtNTcsOCArNTcsOCBAQCBjbGFzcyBKU0RhdGFWaWV3IDog
cHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyOwogICAg
IH0KICAgICAKLSAgICBQYXNzUmVmUHRyPERhdGFWaWV3PiBwb3NzaWJseVNoYXJlZFR5cGVkSW1w
bCgpOwotICAgIFBhc3NSZWZQdHI8RGF0YVZpZXc+IHVuc2hhcmVkVHlwZWRJbXBsKCk7CisgICAg
UmVmUHRyPERhdGFWaWV3PiBwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOworICAgIFJlZlB0cjxE
YXRhVmlldz4gdW5zaGFyZWRUeXBlZEltcGwoKTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgVHlw
ZWRBcnJheVR5cGUgVHlwZWRBcnJheVN0b3JhZ2VUeXBlID0gVHlwZURhdGFWaWV3OwogCkBAIC03
MSw3ICs3MSw3IEBAIGNsYXNzIEpTRGF0YVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcg
ewogICAgIHN0YXRpYyB2b2lkIGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCos
IEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlKTsKIAogICAg
IHN0YXRpYyBBcnJheUJ1ZmZlciogc2xvd0Rvd25BbmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmZmVy
VmlldyopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gZ2V0VHlwZWRB
cnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4gZ2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICAKIHB1
YmxpYzoKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IDYxMDk3MDY2
NjgwYjcxODEzZGNkMDk5NTVjZjNiMTk1ZDkxZTk5NDMuLjhhNzZjYWI5NzU1NDk1NjJhYjM3OWJj
ZGYyMGM3NmU5OTY3MDhiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaApAQCAtMTA3LDkgKzEwNyw5IEBAIGNs
YXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsK
ICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlV2l0aEZhc3RWZWN0b3IoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5z
aWduZWQgbGVuZ3RoLCB2b2lkKiB2ZWN0b3IpOwogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlVW5pbml0aWFsaXplZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB1bnNp
Z25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRl
KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25l
ZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gaW1wbCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBQYXNzUmVmUHRyPHR5cGVu
YW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBpbXBsKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRB
cnJheVZpZXcqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZm
ZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CisgICAgc3RhdGljIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoU3RydWN0dXJlKiwgSlNHbG9iYWxPYmplY3QqLCBSZWZQ
dHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCk7CiAgICAgCiAgICAgdW5zaWdu
ZWQgYnl0ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKHR5cGVuYW1l
IEFkYXB0b3I6OlR5cGUpOyB9CiAgICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4g
c2l6ZU9mKG1fbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSkpOyB9CkBAIC0y
MjUsOCArMjI1LDggQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgSlNB
cnJheUJ1ZmZlclZpZXcgewogICAgIC8vIHRoZW4gaXQgd2lsbCBoYXZlIHRocm93biBhbiBleGNl
cHRpb24uCiAgICAgYm9vbCBzZXQoRXhlY1N0YXRlKiwgdW5zaWduZWQgb2Zmc2V0LCBKU09iamVj
dCosIHVuc2lnbmVkIG9iamVjdE9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb3B5VHlwZSB0eXBl
ID0gQ29weVR5cGU6OlVub2JzZXJ2YWJsZSk7CiAgICAgCi0gICAgUGFzc1JlZlB0cjx0eXBlbmFt
ZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKLSAgICBQYXNz
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwor
ICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gcG9zc2libHlTaGFyZWRUeXBl
ZEltcGwoKTsKKyAgICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hhcmVk
VHlwZWRJbXBsKCk7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKICAg
ICB7CkBAIC0yOTEsNyArMjkxLDcgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBw
dWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgIC8vIEFsbG9jYXRlcyB0aGUgZnVsbC1vbiBu
YXRpdmUgYnVmZmVyIGFuZCBtb3ZlcyBkYXRhIGludG8gdGhlIEMgaGVhcCBpZgogICAgIC8vIG5l
Y2Vzc2FyeS4gTm90ZSB0aGF0IHRoaXMgbmV2ZXIgYWxsb2NhdGVzIGluIHRoZSBHQyBoZWFwLgog
ICAgIHN0YXRpYyBBcnJheUJ1ZmZlciogc2xvd0Rvd25BbmRXYXN0ZU1lbW9yeShKU0FycmF5QnVm
ZmVyVmlldyopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gZ2V0VHlw
ZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFycmF5
QnVmZmVyVmlldz4gZ2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqKTsKIAogcHJp
dmF0ZToKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgc3VjY2Vzc2Z1bCwgYW5kIGZhbHNlIG9uIGVy
cm9yOyBpdCB3aWxsIHRocm93IG9uIGVycm9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggNDQ4YWI5MmM4NGU2NzYwYjg3NTYwNDM3ZTk1YWNi
ZThiM2U3ZTM3ZS4uM2VlOTVhMDk1MDA3N2NhNDhkY2JkNTEzYzhkYWEzODVhYTY3ZWZjOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xMzUs
NyArMTM1LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QKICAgICAgICAgfQogCiAgICAgICAg
IHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJuIFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMs
IHN0cnVjdHVyZSwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBWaWV3
Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYnVmZmVyKSwgb2Zmc2V0LCBs
ZW5ndGgpOwogICAgIH0KICAgICBBU1NFUlQoIW9mZnNldCAmJiAhbGVuZ3RoT3B0KTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggNjIxZGUyNTU5YWMwNmI2NTQxMzRhNWM4
MmE5M2YwMjUwZmFiNGMyMi4uZjAxOTY1OWJjMjUwNjMyZGI1MmE3NGFlNWVhYzg3NmJjNjY5OTU2
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTk3LDE0ICs5NywxNCBAQCBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj46OmNyZWF0ZVVuaW5pdAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCi0gICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLAorICAgIEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCiAg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwot
ICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwogICAgIHNpemVf
dCBzaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwotICAgIGlmICghQXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0
aCwgc2l6ZSkpIHsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBpZiAoIUFycmF5QnVmZmVyVmll
dzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBzaXpl
KSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihleGVjLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KQEAgLTExMiw3ICsxMTIsNyBAQCBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgK
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhl
YywgIkJ5dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9Ci0gICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1cmUs
IGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNv
bnRleHQodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgp
OwogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVz
dWx0ID0KICAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRB
cnJheVZpZXc+KHZtLmhlYXApKQpAQCAtMTIzLDEwICsxMjMsOSBAQCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0
ZSgKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRv
cjo6Vmlld1R5cGU+IGltcGwpCisgICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiYmIGltcGwpCiB7Ci0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBidWZmZXIgPSBpbXBsLT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIENv
bnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2bSwgc3RydWN0dXJlLCBidWZmZXIsIGltcGwtPmJ5
dGVPZmZzZXQoKSwgaW1wbC0+bGVuZ3RoKCkpOworICAgIENvbnN0cnVjdGlvbkNvbnRleHQgY29u
dGV4dCh2bSwgc3RydWN0dXJlLCBpbXBsLT5wb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBpbXBsLT5i
eXRlT2Zmc2V0KCksIGltcGwtPmxlbmd0aCgpKTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFwKSkKQEAgLTEzOCw5
ICsxMzcsOSBAQCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj46OmNyZWF0ZSgKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKLSAgICBQYXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZp
ZXdUeXBlPiBpbXBsKQorICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBp
bXBsKQogewotICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmUs
IGltcGwpOworICAgIHJldHVybiBjcmVhdGUoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmUs
IFdURk1vdmUoaW1wbCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgpAQCAtMzIy
LDEzICszMjEsMTMgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0
KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUGFzc1JlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnBvc3Np
Ymx5U2hhcmVkVHlwZWRJbXBsKCkKK1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4g
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnBvc3NpYmx5U2hhcmVkVHlwZWRJbXBs
KCkKIHsKICAgICByZXR1cm4gQWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0ZShwb3NzaWJseVNoYXJl
ZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgQWRhcHRvcj4KLVBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp1bnNoYXJlZFR5cGVkSW1wbCgpCitSZWZQdHI8
dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+Ojp1bnNoYXJlZFR5cGVkSW1wbCgpCiB7CiAgICAgcmV0dXJuIEFkYXB0b3I6OlZpZXdUeXBl
OjpjcmVhdGUodW5zaGFyZWRCdWZmZXIoKSwgYnl0ZU9mZnNldCgpLCBsZW5ndGgoKSk7CiB9CkBA
IC01OTAsOCArNTg5LDcgQEAgQXJyYXlCdWZmZXIqIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWYKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PgotSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJW
aWV3KiBvYmplY3QpCitSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldzxBZGFwdG9yPjo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqIG9iamVj
dCkKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KG9iamVjdCk7CiAgICAgcmV0dXJuIHRoaXNPYmplY3Qt
PnBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b3R5cGVGdW5jdGlvbnMuaAppbmRleCA4NzRiYWE2MjFiMzA2NDJhNzAzYjhhODA2YWQzN2M1
OTZkZTExNjEyLi4yY2JjYWQzOTUzZGQ5NzE2OWViYjMxNWFlZWVlNjY3MzdiMjVjMTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKQEAgLTU1Niw3
ICs1NTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5
Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0mdgogCiAgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZSgK
LSAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgYXJyYXlCdWZmZXIsCisgICAgICAgICAgICBl
eGVjLCBzdHJ1Y3R1cmUsIFdURk1vdmUoYXJyYXlCdWZmZXIpLAogICAgICAgICAgICAgdGhpc09i
amVjdC0+Ynl0ZU9mZnNldCgpICsgb2Zmc2V0ICogVmlld0NsYXNzOjplbGVtZW50U2l6ZSwKICAg
ICAgICAgICAgIGxlbmd0aCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAKaW5kZXggYjg4ZDlmNDJkN2RkYzU2ZGVmY2EyNzJmYjBm
MGMwZjc1NDNhYmU5Zi4uMTY5MzA4ZWYzYjEyMzMxNDFiZjkzOWZkYzljMzJlNzdlMDYwMWQ5YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAK
QEAgLTQ5LDkgKzQ5LDkgQEAgTUFLRV9TX0lORk8oVWludDMyKTsKIE1BS0VfU19JTkZPKEZsb2F0
MzIpOwogTUFLRV9TX0lORk8oRmxvYXQ2NCk7CiAKLUpTVWludDhBcnJheSogY3JlYXRlVWludDhU
eXBlZEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBwYXNzZWRCdWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCkKK0pTVWludDhBcnJheSogY3JlYXRlVWludDhUeXBlZEFycmF5KEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICByZXR1cm4gSlNV
aW50OEFycmF5OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBzdGQ6OmZvcndhcmQ8UmVmUHRyPEFy
cmF5QnVmZmVyPj4ocGFzc2VkQnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKKyAgICByZXR1
cm4gSlNVaW50OEFycmF5OjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciks
IGJ5dGVPZmZzZXQsIGxlbmd0aCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1R5cGVkQXJyYXlCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhh
Njg3NjExNmYyMTZmMDdmYjg0MTE5MmRhMzQyYjNhYTgzZjk3MWMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZWRBcnJheUJhc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKLSNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIK
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgVHlwZWRB
cnJheUJhc2UgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKLXB1YmxpYzoKLSAgICBUKiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGJhc2VBZGRyZXNzKCkpOyB9Ci0KLSAg
ICBib29sIHNldChUeXBlZEFycmF5QmFzZTxUPiogYXJyYXksIHVuc2lnbmVkIG9mZnNldCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzZXRJbXBsKGFycmF5LCBvZmZzZXQgKiBzaXplb2YoVCkpOwot
ICAgIH0KLQotICAgIGJvb2wgc2V0UmFuZ2UoY29uc3QgVCogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIHVuc2lnbmVkIG9mZnNldCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzZXRSYW5nZUltcGwo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGRhdGFMZW5ndGggKiBzaXplb2Yo
VCksIG9mZnNldCAqIHNpemVvZihUKSk7Ci0gICAgfQotCi0gICAgYm9vbCB6ZXJvUmFuZ2UodW5z
aWduZWQgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHplcm9S
YW5nZUltcGwob2Zmc2V0ICogc2l6ZW9mKFQpLCBsZW5ndGggKiBzaXplb2YoVCkpOwotICAgIH0K
LQotICAgIC8vIE92ZXJyaWRkZW4gZnJvbSBBcnJheUJ1ZmZlclZpZXcuIFRoaXMgbXVzdCBiZSBw
dWJsaWMgYmVjYXVzZSBvZgotICAgIC8vIHJ1bGVzIGFib3V0IGluaGVyaXRhbmNlIG9mIG1lbWJl
cnMgaW4gdGVtcGxhdGUgY2xhc3NlcywgYW5kCi0gICAgLy8gYmVjYXVzZSBpdCBpcyBhY2Nlc3Nl
ZCB2aWEgcG9pbnRlcnMgdG8gc3ViY2xhc3Nlcy4KLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dW5zaWduZWQgYnl0ZUxlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sZW5n
dGggKiBzaXplb2YoVCk7Ci0gICAgfQotCi0gICAgLy8gSW52b2tlZCBieSB0aGUgaW5kZXhlZCBn
ZXR0ZXIuIERvZXMgbm90IHBlcmZvcm0gcmFuZ2UgY2hlY2tzOyBjYWxsZXIKLSAgICAvLyBpcyBy
ZXNwb25zaWJsZSBmb3IgZG9pbmcgc28gYW5kIHJldHVybmluZyB1bmRlZmluZWQgYXMgbmVjZXNz
YXJ5LgotICAgIFQgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGluZGV4IDwgVHlwZWRBcnJheUJhc2U8VD46
Om1fbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIFR5cGVkQXJyYXlCYXNlPFQ+OjpkYXRhKClbaW5k
ZXhdOwotICAgIH0KLQotICAgIGJvb2wgY2hlY2tJbmJvdW5kRGF0YSh1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIHBvcykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAob2Zmc2V0IDw9IG1f
bGVuZ3RoCi0gICAgICAgICAgICAmJiBvZmZzZXQgKyBwb3MgPD0gbV9sZW5ndGgKLSAgICAgICAg
ICAgIC8vIGNoZWNrIG92ZXJmbG93Ci0gICAgICAgICAgICAmJiBvZmZzZXQgKyBwb3MgPj0gb2Zm
c2V0KTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICBUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRy
PEFycmF5QnVmZmVyPiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKLSAgICAgICAgOiBBcnJheUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQotICAgICAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNz
IFN1YmNsYXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUodW5zaWdu
ZWQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGxlbmd0aCwgc2l6ZW9mKFQpKTsKLSAgICAgICAgaWYgKCFidWZm
ZXIuZ2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxT
dWJjbGFzcz4oYnVmZmVyLnJlbGVhc2UoKSwgMCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xhc3M+IGNy
ZWF0ZShjb25zdCBUKiBhcnJheSwgdW5zaWduZWQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgUmVm
UHRyPFN1YmNsYXNzPiBhID0gY3JlYXRlPFN1YmNsYXNzPihsZW5ndGgpOwotICAgICAgICBpZiAo
YSkKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKLSAg
ICAgICAgICAgICAgICBhLT5zZXQoaSwgYXJyYXlbaV0pOwotICAgICAgICByZXR1cm4gYS5yZWxl
YXNlKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRp
YyBSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gYnVmKGJ1ZmZlcik7Ci0gICAgICAgIGlmICghdmVyaWZ5U3ViUmFu
Z2U8VD4oYnVmLCBieXRlT2Zmc2V0LCBsZW5ndGgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdWJjbGFzcyhidWYucmVsZWFzZSgp
LCBieXRlT2Zmc2V0LCBsZW5ndGgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3Vi
Y2xhc3M+Ci0gICAgc3RhdGljIFJlZlB0cjxTdWJjbGFzcz4gY3JlYXRlVW5pbml0aWFsaXplZCh1
bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCwgc2l6ZW9mKFQpKTsK
LSAgICAgICAgaWYgKCFidWZmZXIuZ2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZTxTdWJjbGFzcz4oYnVmZmVyLnJlbGVhc2UoKSwgMCwgbGVu
Z3RoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgUmVmUHRy
PFN1YmNsYXNzPiBzdWJhcnJheUltcGwoaW50IHN0YXJ0LCBpbnQgZW5kKSBjb25zdAotICAgIHsK
LSAgICAgICAgdW5zaWduZWQgb2Zmc2V0LCBsZW5ndGg7Ci0gICAgICAgIGNhbGN1bGF0ZU9mZnNl
dEFuZExlbmd0aChzdGFydCwgZW5kLCBtX2xlbmd0aCwgJm9mZnNldCwgJmxlbmd0aCk7Ci0gICAg
ICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8VD4oYnVmZmVyKCksIG1fYnl0ZU9mZnNldCwg
Jm9mZnNldCwgJmxlbmd0aCk7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZl
cigpLCBvZmZzZXQsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIG5ldXRlcigp
Ci0gICAgewotICAgICAgICBBcnJheUJ1ZmZlclZpZXc6Om5ldXRlcigpOwotICAgICAgICBtX2xl
bmd0aCA9IDA7Ci0gICAgfQotCi0gICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gaGF2ZSB0byBhY2Nl
c3MgdGhpcyB2aWEgYSB2aXJ0dWFsIGZ1bmN0aW9uIGluIHN1YmNsYXNzZXMsCi0gICAgLy8gd2hp
Y2ggaXMgd2h5IGl0IGlzIHByb3RlY3RlZCByYXRoZXIgdGhhbiBwcml2YXRlLgotICAgIHVuc2ln
bmVkIG1fbGVuZ3RoOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLXVzaW5nIEpTQzo6VHlw
ZWRBcnJheUJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0YTc0MWI3OTkxY2NlZmIwNTJmNWI5NDczZjg2OWQx
MTBhODE5ZTFmLi5jOTkwNGMwOTFmNjBhY2IzMThhMGE0NDc3ZTU3MzJhNzkyNjlhOWVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTE4NTYsMzQgKzE4NTYsMzQgQEAgY2xhc3MgQ2xvbmVEZXNlcmlhbGl6ZXIgOiBD
bG9uZUJhc2UgewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5QnVmZmVyID0gdG9Q
b3NzaWJseVNoYXJlZEFycmF5QnVmZmVyKHZtLCBhcnJheUJ1ZmZlck9iaik7CiAgICAgICAgIHN3
aXRjaCAoYXJyYXlCdWZmZXJWaWV3U3VidGFnKSB7CiAgICAgICAgIGNhc2UgRGF0YVZpZXdUYWc6
Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSBnZXRKU1ZhbHVlKERhdGFWaWV3OjpjcmVh
dGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAg
YXJyYXlCdWZmZXJWaWV3ID0gZ2V0SlNWYWx1ZShEYXRhVmlldzo6Y3JlYXRlKFdURk1vdmUoYXJy
YXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBjYXNlIEludDhBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50OEFycmF5OjpjcmVhdGUo
YXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQ4QXJyYXk6OmNy
ZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50OEFycmF5VGFnOgotICAg
ICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBV
aW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQs
IGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
VWludDhDbGFtcGVkQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pT
KG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoYXJyYXlC
dWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50OENsYW1wZWRBcnJheTo6
Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIEludDE2QXJyYXlUYWc6Ci0g
ICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3Qs
IEludDE2QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQo
KSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxP
YmplY3QsIEludDE2QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2Fz
ZSBVaW50MTZBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0
ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0
b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQxNkFycmF5OjpjcmVhdGUoV1RGTW92ZShh
cnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5
QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50MzJBcnJheTo6Y3Jl
YXRlKGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAg
IGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50MzJBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgp
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQzMkFycmF5VGFn
OgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2Jq
ZWN0LCBVaW50MzJBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgp
LmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2ds
b2JhbE9iamVjdCwgVWludDMyQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0
ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgY2FzZSBGbG9hdDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0
b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEZsb2F0MzJBcnJheTo6Y3JlYXRlKGFycmF5QnVm
ZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVy
VmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5OjpjcmVhdGUo
V1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgRmxvYXQ2NEFycmF5VGFnOgotICAgICAg
ICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9h
dDY0QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7
CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmpl
Y3QsIEZsb2F0NjRBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5k
ZXggYjc0Y2FiNDcxNmJhOTEyYmU5ZjY1ZjkyZDhkNTk5YjEyYmFmMzUzZS4uNmZiNzdjMDdhMmZh
NzIwOTJjYmVlNzA4MWZhMjBmZmUzMzQwOTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBA
IC03Miw3ICs3Miw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+IEZvbnRGYWNlOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhCiAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICB9LAogICAgICAgICBbJl0gKFJlZlB0cjxBcnJheUJ1ZmZlcj4mIGFy
cmF5QnVmZmVyKSAtPiBFeGNlcHRpb25Pcjx2b2lkPiB7Ci0gICAgICAgICAgICBhdXRvIGFycmF5
QnVmZmVyVmlldyA9IEpTQzo6VWludDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCAwLCBhcnJh
eUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgg
PSBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZl
clZpZXcgPSBKU0M6OlVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgMCwg
Ynl0ZUxlbmd0aCk7CiAgICAgICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5n
ID0gcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJy
YXlCdWZmZXJWaWV3LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICAgICAgfQo=
</data>
<flag name="review"
          id="323561"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301809</attachid>
            <date>2017-02-16 13:19:23 -0800</date>
            <delta_ts>2017-02-16 13:19:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168455-20170217061645.patch</filename>
            <type>text/plain</type>
            <size>58481</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZmVlNGE4ODBkM2MzYzI2ZmIyOGVlZDIzYjI0ODExMzAwYzA3NTRlLi44ODhiNGFkMjg1MTY4MjZi
MmU1Yzc4MjA3NDJiNWY2ZWYxY2ZlYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaW5hbGx5IGRyb3BzIGFsbCB0aGUgUGFzc1JlZlB0ciBpbiBKU0MuCisgICAgICAgIFdlIGNo
YW5nZWQgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gdG8gUmVmUHRyPEFycmF5QnVmZmVyPiYmLgor
ICAgICAgICBTaW5jZSBBcnJheUJ1ZmZlciBtYXkgYmUgbnVsbHB0ciBpZiB0aGUgYXJyYXkgaXMg
bmV1dGVyZWQsCisgICAgICAgIHdlIGhvbGQgaXQgYXMgUmVmUHRyPD4gaW5zdGVhZCBvZiBSZWY8
Pi4KKworICAgICAgICBBbmQgd2UgYWxzbyBkcm9wcyAyIGZpbGVzLCBUeXBlZEFycmF5QmFzZS5o
IGFuZCBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmguCisgICAgICAgIFRoZXkgYXJlIG5vdCB1c2Vk
IChhbmQgdGhleSBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgcHJvamVjdCBmaWxlKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6CisgICAgICAgIChK
U0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSk6CisgICAgICAg
ICogcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6
SlNBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAg
ICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpw
b3NzaWJseVNoYXJlZFR5cGVkSW1wbCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnVuc2hh
cmVkVHlwZWRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Z2V0VHlwZWRBcnJheUlt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Z2V0VHlwZWRBcnJheUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisKIDIwMTctMDItMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0
b3IgQWNjZXNzQ2FzZSB0byBiZSBtb3JlIGxpa2UgQjNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyN2Nk
ZjIyNGIwYzg1ODNlYWRkYThkZGU5MjhlYTg3ZjU4NDE0NjcuLjVhYTVmNDUwNTYzYjcyZWY2YmQw
OGUwZjE1Nzg1YzlmNmQzOGUwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0w
Mi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
SlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0cmFjdEtleVVSSUtl
eUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisKIDIwMTctMDItMTYg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVzb3Vy
Y2UgVGltaW5nXSBTdXBwb3J0IFJlc291cmNlIFRpbWluZyBpbiBXb3JrZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmlu
ZGV4IDZhZjQ5MmVmNjA4OWUzYTBlZDM4M2E5MDgwMmU2N2QwY2YxZmY0ZTkuLmVlMWY4YWVhMzQ2
N2Y2OThhOGJmNjk3YWYyNGYyZTAwNzVjZjdhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJp
bnRlcnByZXRlci9DYWxsRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAx
NmMwNDI4YTlhZGNjYzhkZTQ0NDExNmMyMDI4YmE3YTg0ZDhjNDUzLi4yNGZiZGUxNWU1YjBlNDg5
M2Q1NTk5Nzc5NTExMzE1MWEyNmMyNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjU1Niw3
ICsyNTU2LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMKICAgICB9CiAgICAgCiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3Nh
Z2UtPnJlbGVhc2VDb250ZW50cygpKTsKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJh
eUJ1ZmZlclN0cnVjdHVyZShuYXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCkpLCBuYXRpdmVCdWZm
ZXIpOworICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBuYXRpdmVCdWZm
ZXItPnNoYXJpbmdNb2RlKCk7CisgICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpOwogICAgIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKaW5kZXggYzBiZWZjNDhhMGRhNzliMzcwZmFhZDEwMjU0OWNhMDc0Y2MwOWI0My4uOWZlZDdj
Nzg2YjZiZTk3YTMxZTU5NDM1MjZjYmJkYmViNjA1MGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0yOSwxMSArMjksMTEg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygK
LSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0
ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAg
ICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKIHsKICAgICBtX2Jhc2VBZGRyZXNzID0gbV9idWZmZXIgPyAoc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fYnVmZmVyLT5kYXRhKCkpICsgbV9ieXRlT2Zmc2V0KSA6IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDU1ZjM0NmUzYTQz
NTFlNmU0M2VjMGM2NzBlMmU1ZDMxYzFkNjhhNTAuLmU3NmU2ZTI2NTJhY2Y5YWNiMzg0OWUzNDU1
ODljY2Q4OWMzMmU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5
cGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDgsMTYgKzQ3LDE2IEBAIGNsYXNzIEFycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgICAgICByZXR1
cm4gIW1fYnVmZmVyIHx8IG1fYnVmZmVyLT5pc05ldXRlcmVkKCk7CiAgICAgfQogICAgIAotICAg
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChpc05ldXRlcmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbV9idWZmZXI7CiAgICAgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QK
KyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IHBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gcG9zc2libHlTaGFy
ZWRCdWZmZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+aXNTaGFyZWQoKSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTAwLDkgKzk5LDkgQEAgY2xhc3Mg
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7CiAK
ICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMKICAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgc3RhdGlj
IGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBzaXplOwpAQCAtMTE0LDcgKzExMyw3IEBAIGNsYXNzIEFycmF5QnVmZmVyVmll
dyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgIHZpcnR1YWwgSlNB
cnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAg
ICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KTsKIAogICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3
KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKQEAgLTEzMCwyMCArMTI5LDIwIEBAIGNsYXNzIEFy
cmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAg
IC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlp
bmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
dm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAotICAgICAgICBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIsCisgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCiAgICAg
ICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKICAgICAgICAgdW5zaWduZWQgKm9mZnNldCwK
ICAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQg
bWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZzZXQgPSBi
dWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxl
bmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNl
dCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgKm9m
ZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOworICAgICAgICB1
bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNl
dCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmlu
Z0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAppbmRleCAyYjIxNTdjZWMyY2NjMzYxOGE5MTQxZTk3MmQ3YjUx
MzJlYTVmNTExLi40ODBhZWEyMjBmNDdlOGYyNTljZWQ5MTU5NTJkN2ViODg1NmE1MTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtOTksNyArOTksNyBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgQXJyYXlCdWZmZXIqICgqU2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeSkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBTbG93RG93bkFuZFdh
c3RlTWVtb3J5IHNsb3dEb3duQW5kV2FzdGVNZW1vcnk7CiAgICAgCi0gICAgdHlwZWRlZiBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gKCpHZXRUeXBlZEFycmF5SW1wbCkoSlNBcnJheUJ1ZmZl
clZpZXcqKTsKKyAgICB0eXBlZGVmIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ICgqR2V0VHlwZWRB
cnJheUltcGwpKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgR2V0VHlwZWRBcnJheUltcGwgZ2V0
VHlwZWRBcnJheUltcGw7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpQcmV2ZW50RXh0ZW5zaW9uc0Z1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGIxMGNhNDAzZTViZDBmMjYwODRlOWNjNzRmOWMw
ZTM2YTJkYzg5ZGIuLjNiNTg3MWJhM2JlMmExZWJjZjQxYjNkN2I3NGVhZjlmNjM2ZWRlOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTMyLDIyICsz
MiwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKLSAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQpCitEYXRh
Vmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZN
b3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkK
IHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCkpOwogfQogCi1SZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gcGFzc2VkQnVmZmVyKQorUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgcmV0dXJuIGNyZWF0ZShidWZmZXIsIDAsIGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRl
TGVuZ3RoKCk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5n
dGgpOwogfQogCiBKU0FycmF5QnVmZmVyVmlldyogRGF0YVZpZXc6OndyYXAoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmgKaW5kZXggMjI4MTQ3OTVlM2FiNzI2YWQ2NjZlNjk2ZTNkMGU4ZDAx
ODQ1MmMzMC4uNjYzNjNhNzU0MjMzOGRjYmM4YTdlYmRmNTBjOWJlYzA4NDc3YjdjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0yNywxNyArMjcsMTYgQEAK
IAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9GbGlwQnl0ZXMu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgRGF0YVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHByb3RlY3RlZDoKLSAgICBE
YXRhVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAKIHB1YmxpYzoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYp
OwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKaW5kZXggZmQ0OGM5Y2NiNTZlYmNjMGE1MDA4MDBlN2YyZWEyNzNlY2E1ZTEzMy4u
MzQ3YjY1MTJkY2Y0MDE5ZWI2YjQ4OThhMGUxZDc0NDVkNGU2M2RkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAg
LTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3
IHsKIHByb3RlY3RlZDoKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBkYTdhNDUzMTE0MTI4ZjJiYzY4
MzQ5Y2M2YmM1YTYzMTY3MzJkYTJlLi4xYjZkYTU2MWViN2NlYjEzMTJhYTY0OGNkMmU0OTNiNTgy
YjliNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCi0gICAgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgOiBBcnJheUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQorICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CkBAIC01OCwxMCArNTgsMTAgQEAgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgaWYgKCF2ZXJp
ZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKQorICAgIEFTU0VSVChidWZmZXIpOworICAgIGlmICghQXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKICAgICAgICAgfHwgIXZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKSkgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05NCw3ICs5NCw4IEBA
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAogICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwogICAgIGNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0
aCk7CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0g
ICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPihidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwogICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzgxNDlmNmYxNTg0YWExYTlhOTZhNDU3MTcwY2MxYjA1MmU4NDcwZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiVHlwZWRBcnJheUJhc2UuaCIKLSNpbmNsdWRlIDxsaW1pdHM+
Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotLy8gQmFzZSBjbGFzcyBmb3IgYWxsIFdl
YkdMPFQ+QXJyYXkgdHlwZXMgaG9sZGluZyBpbnRlZ3JhbAotLy8gKG5vbi1mbG9hdGluZy1wb2lu
dCkgdmFsdWVzLgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVkQXJyYXlCYXNlPFQ+IHsK
LXB1YmxpYzoKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFt
cCBOYU4gdG8gMAotICAgICAgICAgICAgdmFsdWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91Ymxl
IGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAv
LyBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcyB3aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5
LgotICAgICAgICBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0
PFQ+KHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgSW50ZWdyYWxUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBUeXBlZEFy
cmF5QmFzZTxUPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLSAgICB7Ci0gICAgfQotCi19
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5kZXggN2E3ZmFhYzc3NmEzYzM3MmZiZmZhNWMyNmJmNjE4
MTFiYTY2MWZkMC4uYjI0YjZkYjQ2YTVlYTA5NGRlOGJhODNiYWM4MDIyYWFkOThiN2M0NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlcjo6c19pbmZvID0gewogICAgICJBcnJheUJ1ZmZlciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNBcnJheUJ1ZmZlcil9OwogCi1KU0FycmF5QnVmZmVyOjpKU0Fy
cmF5QnVmZmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyKQorSlNBcnJheUJ1ZmZlcjo6SlNBcnJheUJ1ZmZlcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIp
CiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ltcGwoYXJyYXlCdWZmZXIuZ2V0
KCkpCiB7CkBAIC01MCwxMiArNTAsMTEgQEAgdm9pZCBKU0FycmF5QnVmZmVyOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB9CiAKIEpTQXJyYXlC
dWZmZXIqIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIpCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBKU0Fy
cmF5QnVmZmVyKiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0FycmF5QnVmZmVyPih2bS5oZWFwKSkKLSAgICAgICAgSlNBcnJheUJ1ZmZlcih2bSwgc3RydWN0
dXJlLCBidWZmZXIpOworICAgICAgICBKU0FycmF5QnVmZmVyKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRleCA1OTI4N2UxN2NiZDc1ZWE4YTFi
ZTc2Y2Y5M2M1N2Y4ZGQ3MTIwYzQzLi45MTQyN2E5MGJkNTlkMzk3ZTYxYzZlM2U2NDM4YTUyYmQ5
YmRiYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5oCkBAIC0zNiwxMiArMzYsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciBmaW5hbCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU0Fy
cmF5QnVmZmVyKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4pOworICAg
IEpTQXJyYXlCdWZmZXIoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogICAgIAogcHVi
bGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZWdpc3RlciB0aGUgbmV3IHdyYXBwZXIg
d2l0aCB0aGUgdm0ncyBUeXBlZEFycmF5Q29udHJvbGxlci4KLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgSlNBcnJheUJ1ZmZlciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0FycmF5QnVm
ZmVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogCiAg
ICAgQXJyYXlCdWZmZXIqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5jcHAKaW5kZXggYjgwM2Q5NTU5ZDI3YzNmYzQxNmQxNWU5ZGUzZDcwYzhmNmIwZDQ2
ZS4uM2M3NmJmOTVjMjRlMmRlZDUwZGNmNGFiYjc3MTQ5MTNmZTRlNTAzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZl
clN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIAotICAgIEpTQXJyYXlC
dWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdC
dWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1ZmZlcikpOwogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBhM2IzODg4M2VkNzFmNGVmYjk4
NjM3NTQzNTZlNGM3M2MxZjdhYjdmLi43NmI3ZmNkMWYzNzljZmJiNTU4NzQxN2MyNzhkZDUwNTlm
MjMzMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBhcnJheUJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC0xMTYsNyArMTE2LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciwKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBt
X3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTUx
ZDUxZGJlYjFmMTE0ZDcyNzI4NGE4MGI4YmI1MTI1ZDBhZThjLi40NDdjODNhM2VlMTdhZGNmM2Jh
YWQ0NjkwYjU1MWRjNGU4OGI5YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIEpT
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRl
eHQoCi0gICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LAorICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCiAg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAg
ICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0
cnVjdGlvbkNvbnRleHQoCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwKKyAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwK
ICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZp
ZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9zdHJ1Y3R1cmU7IH0KQEAgLTE2Miw4ICsxNjIsOCBAQCBjbGFzcyBKU0FycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBBcnJheUJ1ZmZlciogcG9zc2li
bHlTaGFyZWRCdWZmZXIoKTsKICAgICBKU0FycmF5QnVmZmVyKiB1bnNoYXJlZEpTQnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYyk7CiAgICAgSlNBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRKU0J1ZmZl
cihFeGVjU3RhdGUqIGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB1bnNo
YXJlZEltcGwoKTsKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFy
ZWRJbXBsKCk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdW5zaGFyZWRJbXBsKCk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFyZWRJbXBsKCk7CiAgICAgYm9v
bCBpc05ldXRlcmVkKCkgeyByZXR1cm4gaGFzQXJyYXlCdWZmZXIoKSAmJiAhdmVjdG9yKCk7IH0K
ICAgICB2b2lkIG5ldXRlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCBiOTk1NjdkNDc0
NWNjZWE4Y2M2NzdmZjU3ZmZlMmU3NjI3ZThiYjhjLi5kNWM3MjdmNzRhZjdjZWQzYzNhZmI1MmM3
ZWFkN2FlOTlmNmE4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtNjEsMTQgKzYxLDE0IEBAIGlu
bGluZSBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OmV4aXN0aW5nQnVmZmVySW5CdXR0
ZXJmbHkoKQogICAgIHJldHVybiBidXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIoKS0+YXJyYXlC
dWZmZXIoKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5
QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKK2lubGluZSBSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKIHsKICAgICBy
ZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0VHlwZWRBcnJheUltcGwodGhpcyk7CiB9CiAKLWlubGlu
ZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnVuc2hhcmVk
SW1wbCgpCitpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6
OnVuc2hhcmVkSW1wbCgpCiB7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJlc3Vs
dCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJl
c3VsdCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQt
PmlzU2hhcmVkKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAzZWY4MzFkNThkNjJmOGVjMDBiNTkwNzM3MzY2NTZh
OTcwYTUyMzc3Li5hY2RkNGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTI1MCwxMyArMjUwLDEz
IEBAIGJvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVyCiBBcnJheUJ1ZmZlciogSlNDZWxsOjpzbG93RG93
bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyopCitSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0NlbGw6OmdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB1
aW50MzJfdCBKU0NlbGw6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBjNDVlZWEzMGU5ODhj
OTcxZjQzMDg1OGEyOWY1N2VjNDkyYmZiOTc3Li4xNDY0YmI1MWQ0MmNlMmMyNzA2OTlkNDUyMDlh
ZWJhNWZlYzdiMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAt
MjUzLDcgKzI1Myw3IEBAIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXJyYXlCdWZmZXIq
IHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJy
YXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJW
aWV3Kik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXgg
ZjRhZmViYjkwZWU3NDRmNDI2MGVjMjhkODUzYjBjZGU3ZDE3Yzg0NC4uMWY2N2ZiZGNhM2UwYzk5
Zjc5N2I1ZjY4MWYyZmIxYTAxMjQ4YTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBKU0RhdGFWaWV3OjpKU0Rh
dGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIq
IGJ1ZmZlcgogfQogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCi0gICAgRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
cGFzc2VkQnVmZmVyLAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwotICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2
ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVv
Zih1aW50OF90KSkpIHsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBpZiAoIUFycmF5QnVmZmVy
Vmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdl
IG9mIGJ1ZmZlciIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTYwLDcg
KzYwLDcgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAotICAgICAg
ICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0aW9u
Q29udGV4dDo6RGF0YVZpZXcpOworICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlci5jb3B5UmVmKCks
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsK
ICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgSlNEYXRhVmlldyogcmVzdWx0ID0KICAgICAgICAg
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmlldz4odm0uaGVhcCkpIEpTRGF0YVZp
ZXcodm0sIGNvbnRleHQsIGJ1ZmZlci5nZXQoKSk7CkBAIC05MiwxMiArOTIsMTIgQEAgYm9vbCBK
U0RhdGFWaWV3OjpzZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8RGF0YVZpZXc+IEpTRGF0YVZpZXc6OnBvc3Np
Ymx5U2hhcmVkVHlwZWRJbXBsKCkKK1JlZlB0cjxEYXRhVmlldz4gSlNEYXRhVmlldzo6cG9zc2li
bHlTaGFyZWRUeXBlZEltcGwoKQogewogICAgIHJldHVybiBEYXRhVmlldzo6Y3JlYXRlKHBvc3Np
Ymx5U2hhcmVkQnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQogCi1QYXNzUmVm
UHRyPERhdGFWaWV3PiBKU0RhdGFWaWV3Ojp1bnNoYXJlZFR5cGVkSW1wbCgpCitSZWZQdHI8RGF0
YVZpZXc+IEpTRGF0YVZpZXc6OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKICAgICByZXR1cm4gRGF0
YVZpZXc6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsK
IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBBcnJheUJ1ZmZlciogSlNEYXRhVmlldzo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmZmVyVmlldyopCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBh
c3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0RhdGFWaWV3OjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNEYXRh
Vmlldzo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqIG9iamVjdCkKIHsKICAg
ICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihvYmplY3QpOwog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IGNhZTNhOTI4ZGRiMWVh
OWY2ZjI3NGFlZjA4YTNmOGU0NGNmMjM1NGUuLmY0MjAzMmU5YzMxMTc3NWZmZjRkZjUwMDYzMzNi
MGNkNjUxMzk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgCiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAgICAgRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCisgICAgICAgIEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwKICAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0
aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2Ug
dG8KQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKICAgICB9CiAgICAgCi0gICAgUGFz
c1JlZlB0cjxEYXRhVmlldz4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKLSAgICBQYXNzUmVm
UHRyPERhdGFWaWV3PiB1bnNoYXJlZFR5cGVkSW1wbCgpOworICAgIFJlZlB0cjxEYXRhVmlldz4g
cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8RGF0YVZpZXc+IHVuc2hhcmVk
VHlwZWRJbXBsKCk7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9IFR5cGVEYXRhVmlldzsKIApAQCAtNzEsNyArNzEsNyBAQCBjbGFz
cyBKU0RhdGFWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICBzdGF0aWMgQXJyYXlCdWZm
ZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlC
dWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVk
QXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA2MTA5NzA2NjY4MGI3MTgxM2RjZDA5OTU1
Y2YzYjE5NWQ5MWU5OTQzLi44YTc2Y2FiOTc1NTQ5NTYyYWIzNzliY2RmMjBjNzZlOTk2NzA4YjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEwNyw5ICsxMDcsOSBAQCBjbGFzcyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgc3RhdGljIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdp
dGhGYXN0VmVjdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9p
ZCogdmVjdG9yKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IGltcGwpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVj
dHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gaW1wbCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsg
fQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQpAQCAtMjI1LDggKzIyNSw4IEBAIGNs
YXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsK
ICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgogICAgIGJvb2wg
c2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmpl
Y3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9i
c2VydmFibGUpOwogICAgIAotICAgIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5
cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7Ci0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8dHlwZW5h
bWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CisgICAgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjkxLDcgKzI5
MSw3IEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZm
ZXJWaWV3IHsKICAgICAvLyBBbGxvY2F0ZXMgdGhlIGZ1bGwtb24gbmF0aXZlIGJ1ZmZlciBhbmQg
bW92ZXMgZGF0YSBpbnRvIHRoZSBDIGhlYXAgaWYKICAgICAvLyBuZWNlc3NhcnkuIE5vdGUgdGhh
dCB0aGlzIG5ldmVyIGFsbG9jYXRlcyBpbiB0aGUgR0MgaGVhcC4KICAgICBzdGF0aWMgQXJyYXlC
dWZmZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJy
YXlCdWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAKIHByaXZhdGU6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJv
dyBvbiBlcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCmluZGV4IDQ0OGFiOTJjODRlNjc2MGI4NzU2MDQzN2U5NWFjYmU4YjNlN2UzN2UuLjNlZTk1
YTA5NTAwNzdjYTQ4ZGNiZDUxM2M4ZGFhMzg1YWE2N2VmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTM1LDcgKzEzNSw3IEBAIGlubGlu
ZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhF
eGVjU3RhdGUqIGV4ZWMsIFN0CiAgICAgICAgIH0KIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1ZmZl
ciwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gVmlld0NsYXNzOjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCmluZGV4IDYyMWRlMjU1OWFjMDZiNjU0MTM0YTVjODJhOTNmMDI1MGZhYjRjMjIu
LmYwMTk2NTliYzI1MDYzMmRiNTJhNzRhZTVlYWM4NzZiYzY2OTk1NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCkBAIC05NywxNCArOTcsMTQgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXQKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IHBhc3NlZEJ1ZmZlciwKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUpKSB7CisgICAg
QVNTRVJUKGJ1ZmZlcik7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdl
TGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkxlbmd0aCBv
dXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJCeXRlIG9mZnNldCBp
cyBub3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIENv
bnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2bSwgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVPZmZz
ZXQsIGxlbmd0aCk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9CiAgICAgICAgIG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFw
KSkKQEAgLTEyMywxMCArMTIzLDkgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBpbXBs
KQorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4mJiBpbXBsKQogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBDb25zdHJ1Y3Rpb25Db250ZXh0
IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBpbXBsLT5ieXRlT2Zmc2V0KCksIGltcGwt
Pmxlbmd0aCgpKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVy
ZSwgaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKSwgaW1wbC0+Ynl0ZU9mZnNldCgpLCBpbXBs
LT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCkBAIC0xMzgsOSArMTM3LDkgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCi0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gaW1wbCkKKyAg
ICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCkKIHsKLSAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBpbXBsKTsKKyAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTMyMiwxMyArMzIxLDEzIEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1w
bCgpCitSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpCiB7CiAgICAgcmV0dXJu
IEFkYXB0b3I6OlZpZXdUeXBlOjpjcmVhdGUocG9zc2libHlTaGFyZWRCdWZmZXIoKSwgYnl0ZU9m
ZnNldCgpLCBsZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1QYXNz
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwoKQorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwoKQogewogICAgIHJldHVybiBBZGFwdG9yOjpWaWV3VHlwZTo6Y3JlYXRlKHVuc2hhcmVk
QnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQpAQCAtNTkwLDggKzU4OSw3IEBA
IEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Omdl
dFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KiBvYmplY3QpCiB7CiAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5
cGVkSW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmgKaW5kZXggODc0YmFhNjIxYjMwNjQyYTcwM2I4YTgwNmFkMzdjNTk2ZGUxMTYxMi4uMmNiY2Fk
Mzk1M2RkOTcxNjllYmIzMTVhZWVlZTY2NzM3YjI1YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBAIC01NTYsNyArNTU2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKFZNJnYKIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCi0gICAgICAgICAgICBleGVj
LCBzdHJ1Y3R1cmUsIGFycmF5QnVmZmVyLAorICAgICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBX
VEZNb3ZlKGFycmF5QnVmZmVyKSwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmJ5dGVPZmZzZXQo
KSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemUsCiAgICAgICAgICAgICBsZW5ndGgp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwCmluZGV4IGI4OGQ5ZjQyZDdkZGM1NmRlZmNhMjcyZmIwZjBjMGY3NTQzYWJlOWYuLjE2
OTMwOGVmM2IxMjMzMTQxYmY5MzlmZGM5YzMyZTc3ZTA2MDFkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCkBAIC00OSw5ICs0OSw5IEBA
IE1BS0VfU19JTkZPKFVpbnQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZP
KEZsb2F0NjQpOwogCi1KU1VpbnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgcGFz
c2VkQnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitKU1VpbnQ4
QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEpTVWludDhBcnJheTo6Y3JlYXRl
KGV4ZWMsIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPFJlZlB0cjxBcnJheUJ1ZmZlcj4+KHBhc3Nl
ZEJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIEpTVWludDhBcnJheTo6
Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5
QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTY4NzYxMTZmMjE2ZjA3ZmI4
NDExOTJkYTM0MmIzYWE4M2Y5NzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlCYXNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVibGlj
IEFycmF5QnVmZmVyVmlldyB7Ci1wdWJsaWM6Ci0gICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihiYXNlQWRkcmVzcygpKTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRB
cnJheUJhc2U8VD4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1
cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29s
IHNldFJhbmdlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZz
ZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhTGVuZ3RoICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXpl
b2YoVCkpOwotICAgIH0KLQotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAq
IHNpemVvZihUKSwgbGVuZ3RoICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlk
ZGVuIGZyb20gQXJyYXlCdWZmZXJWaWV3LiBUaGlzIG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YK
LSAgICAvLyBydWxlcyBhYm91dCBpbmhlcml0YW5jZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNs
YXNzZXMsIGFuZAotICAgIC8vIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRv
IHN1YmNsYXNzZXMuCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2xlbmd0aDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwot
ICAgIH0KLQotICAgIC8vIEludm9rZWQgYnkgdGhlIGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBw
ZXJmb3JtIHJhbmdlIGNoZWNrczsgY2FsbGVyCi0gICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRv
aW5nIHNvIGFuZCByZXR1cm5pbmcgdW5kZWZpbmVkIGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAg
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAg
ICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVy
ZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJy
YXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7
Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVmZmVyLmdldCgpKQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5y
ZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNs
YXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoY29uc3QgVCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9
IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKLSAgICAgICAgaWYgKGEpCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgYS0+
c2V0KGksIGFycmF5W2ldKTsKLSAgICAgICAgcmV0dXJuIGEucmVsZWFzZSgpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUmVmUHRyPFN1YmNsYXNz
PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZihidWZmZXIpOwotICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdlPFQ+KGJ1ZiwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRp
YyBSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVm
ZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBj
cmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIFJlZlB0cjxTdWJjbGFzcz4gc3ViYXJy
YXlJbXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG9mZnNldCwgbGVuZ3RoOwotICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQs
IGVuZCwgbV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOwotICAgICAgICBjbGFtcE9mZnNldEFu
ZE51bUVsZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgp
OwotICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5n
dGgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQotICAgIHsKLSAgICAgICAg
QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKTsKLSAgICAgICAgbV9sZW5ndGggPSAwOwotICAgIH0K
LQotICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmly
dHVhbCBmdW5jdGlvbiBpbiBzdWJjbGFzc2VzLAotICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBw
cm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi11c2luZyBKU0M6OlR5cGVkQXJyYXlCYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggNGE3NDFiNzk5MWNjZWZiMDUyZjViOTQ3M2Y4NjlkMTEwYTgxOWUxZi4uYzk5MDRj
MDkxZjYwYWNiMzE4YTBhNDQ3N2U1NzMyYTc5MjY5YTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xODU2LDM0
ICsxODU2LDM0IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJh
eUJ1ZmZlcih2bSwgYXJyYXlCdWZmZXJPYmopOwogICAgICAgICBzd2l0Y2ggKGFycmF5QnVmZmVy
Vmlld1N1YnRhZykgewogICAgICAgICBjYXNlIERhdGFWaWV3VGFnOgotICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gZ2V0SlNWYWx1ZShEYXRhVmlldzo6Y3JlYXRlKGFycmF5QnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9
IGdldEpTVmFsdWUoRGF0YVZpZXc6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBJbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRv
SlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGNhc2UgVWludDhBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6Y3JlYXRl
KGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6
Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQ4Q2xhbXBlZEFycmF5
VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFs
T2JqZWN0LCBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFy
cmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlC
dWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5OjpjcmVh
dGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAg
YXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5
OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDE2QXJyYXlUYWc6
Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmpl
Y3QsIFVpbnQxNkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIEludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pT
KG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcg
PSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDMyQXJyYXk6
OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAg
ICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQz
MkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgRmxvYXQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEZsb2F0MzJBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIEZsb2F0NjRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVy
VmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5OjpjcmVhdGUo
YXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDY0QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGI3NGNhYjQ3MTZiYTkx
MmJlOWY2NWY5MmQ4ZDU5OWIxMmJhZjM1M2UuLjZmYjc3YzA3YTJmYTcyMDkyY2JlZTcwODFmYTIw
ZmZlMzM0MDk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNzIsNyArNzIsOCBAQCBF
eGNlcHRpb25PcjxSZWY8Rm9udEZhY2U+PiBGb250RmFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBmYQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fSwKICAgICAgICAgWyZdIChSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikgLT4gRXhj
ZXB0aW9uT3I8dm9pZD4gewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKTsKKyAgICAgICAgICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gSlNDOjpVaW50
OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogICAg
ICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHBvcHVsYXRlRm9udEZh
Y2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5nKCksIGFycmF5QnVmZmVyVmlldy5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
aW5kZXggN2FiN2VjYmU2MTRhNWM0ZjEzY2U2NjNkYmRmMjlkMmQ3NjVhMmZmZS4uMDE3OThjOTI2
N2VmOTQ1ZTcyNjdlODI4YjNkYjRhNDc3MTBmN2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTEwMjgsNyArMTAy
OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJ
S2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBp
bml0RGF0YUJ1ZmZlciA9IGluaXREYXRhLT51bnNoYXJlZEJ1ZmZlcigpOwogCiAgICAgLy8gVXNl
IGEgRGF0YVZpZXcgdG8gcmVhZCB1aW50MzIgdmFsdWVzIGZyb20gdGhlIGJ1ZmZlciwgYXMgVWlu
dDMyQXJyYXkgcmVxdWlyZXMgdGhlIHJlYWRzIGJlIGFsaWduZWQgb24gNC1ieXRlIGJvdW5kYXJp
ZXMuIAotICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFW
aWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFW
aWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKTsKICAgICB1aW50MzJfdCBvZmZzZXQgPSAwOwogICAgIGJvb2wgc3RhdHVz
ID0gdHJ1ZTsKIApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQK
ICAgICBpZiAoIXN0YXR1cyB8fCBvZmZzZXQgKyBrZXlVUklMZW5ndGggPiBpbml0RGF0YS0+bGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50MTZBcnJheT4g
a2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCBvZmZzZXQs
IGtleVVSSUxlbmd0aCk7CisgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVp
bnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleVVS
SUxlbmd0aCk7CiAgICAgaWYgKCFrZXlVUklBcnJheSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xMDQ5LDcgKzEwNDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdAogICAgIGlmICgh
c3RhdHVzIHx8IG9mZnNldCArIGtleUlETGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5SURBcnJheSA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7
CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGtleUlEQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUo
aW5pdERhdGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleUlETGVuZ3RoKTsKICAgICBpZiAo
IWtleUlEQXJyYXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA2MSw3ICsxMDYxLDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJ
REFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBpZiAoIXN0YXR1cyB8fCBvZmZzZXQgKyBj
ZXJ0aWZpY2F0ZUxlbmd0aCA+IGluaXREYXRhLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgY2VydGlmaWNhdGUgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZm
ZXIsIG9mZnNldCwgY2VydGlmaWNhdGVMZW5ndGgpOworICAgIGNlcnRpZmljYXRlID0gVWludDhB
cnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRl
TGVuZ3RoKTsKICAgICBpZiAoIWNlcnRpZmljYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCmluZGV4IGNiZDBjM2M1YjQyMzA3MDhlOWIxZjZjZDVjN2UzOTY4NmU4
ODZkZTQuLmU0ZDBmOTE2OWQ0MjU0YjI5ZGUzMzg0NTdhMjY5ZjRiMDM0NWNiMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcApAQCAtMTkxMSwxMyArMTkxMSwxNCBAQCBib29sIEFWRldyYXBwZXI6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UgogICAgICAgICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6
IGtleVVSSV0KICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcik7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKLSAgICAgICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
IFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUs
IHRydWUpOwogCi0gICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBVaW50
MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0LCBrZXlVUkkubGVuZ3RoKCkpOworICAg
ICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAg
IGtleVVSSUFycmF5LT5zZXRSYW5nZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
U3RyaW5nVmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJ
Lmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBSZWZQdHI8
VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIs
IDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBieXRl
TGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFC
dWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKICAgICAgICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+
a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCAyNjE1NmFjMWY3MzIzYzY2OGE4M2Y2ZDg2NDM4MWZmMmQ3MDM1MTBkLi40MTA5
OTRiZWVjM2E0ZjE0YzQ1MWI1ZDhmZWVmYWY1OGMyNmE0N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTAwLDcg
KzEwMCw4IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6
Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYKICAgICBkZXN0aW5hdGlvblVSTCA9IFN0
cmluZygpOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBrZXlSZXF1ZXN0QnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShba2V5UmVxdWVzdC5nZXQoKSBieXRlc10sIFtrZXlSZXF1ZXN0Lmdl
dCgpIGxlbmd0aF0pOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoa2V5UmVxdWVzdEJ1
ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoID0ga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIHJldHVybiBV
aW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0
aCk7CiB9CiAKIHZvaWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE2OGZhZDFjNmYxNjhhOThjNmM4YWIyYTliMDA4
NTc1MzlmYTZkZmMuLmM1MmZlZjcwOTc5NDQyODVjYzQ0MTNmNGU3MzcxYjExNmE0ZTAxYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTc3MCwxMyArMTc3MCwxNCBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNv
dXJjZShBVkFzc2V0UgogICAgICAgICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJ
IHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVS
SS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
aW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsK
LSAgICAgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZp
ZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci5ieXRlTGVu
Z3RoKCk7CisgICAgICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6
OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBieXRlTGVuZ3Ro
KTsKICAgICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRy
dWUpOwogCi0gICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBVaW50MTZB
cnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAg
ICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtl
eVVSSUFycmF5LT5zZXRSYW5nZShTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIGtleVVSSS5sZW5ndGgoKSAvIHNpemVvZih1bnNpZ25lZCBjaGFyKSwgMCk7CiAKLSAg
ICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKGlu
aXREYXRhQnVmZmVyLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAg
UmVmUHRyPFVpbnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUo
aW5pdERhdGFCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKICAgICAgICAgaWYgKCFwbGF5ZXIoKS0+
a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301818</attachid>
            <date>2017-02-16 13:51:15 -0800</date>
            <delta_ts>2017-02-16 13:51:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168455-20170217064837.patch</filename>
            <type>text/plain</type>
            <size>58854</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZmVlNGE4ODBkM2MzYzI2ZmIyOGVlZDIzYjI0ODExMzAwYzA3NTRlLi44ODhiNGFkMjg1MTY4MjZi
MmU1Yzc4MjA3NDJiNWY2ZWYxY2ZlYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaW5hbGx5IGRyb3BzIGFsbCB0aGUgUGFzc1JlZlB0ciBpbiBKU0MuCisgICAgICAgIFdlIGNo
YW5nZWQgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gdG8gUmVmUHRyPEFycmF5QnVmZmVyPiYmLgor
ICAgICAgICBTaW5jZSBBcnJheUJ1ZmZlciBtYXkgYmUgbnVsbHB0ciBpZiB0aGUgYXJyYXkgaXMg
bmV1dGVyZWQsCisgICAgICAgIHdlIGhvbGQgaXQgYXMgUmVmUHRyPD4gaW5zdGVhZCBvZiBSZWY8
Pi4KKworICAgICAgICBBbmQgd2UgYWxzbyBkcm9wcyAyIGZpbGVzLCBUeXBlZEFycmF5QmFzZS5o
IGFuZCBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmguCisgICAgICAgIFRoZXkgYXJlIG5vdCB1c2Vk
IChhbmQgdGhleSBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgcHJvamVjdCBmaWxlKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6CisgICAgICAgIChK
U0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSk6CisgICAgICAg
ICogcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6
SlNBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAg
ICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpw
b3NzaWJseVNoYXJlZFR5cGVkSW1wbCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnVuc2hh
cmVkVHlwZWRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Z2V0VHlwZWRBcnJheUlt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Z2V0VHlwZWRBcnJheUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisKIDIwMTctMDItMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0
b3IgQWNjZXNzQ2FzZSB0byBiZSBtb3JlIGxpa2UgQjNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyN2Nk
ZjIyNGIwYzg1ODNlYWRkYThkZGU5MjhlYTg3ZjU4NDE0NjcuLjVhYTVmNDUwNTYzYjcyZWY2YmQw
OGUwZjE1Nzg1YzlmNmQzOGUwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0w
Mi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
SlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0cmFjdEtleVVSSUtl
eUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisKIDIwMTctMDItMTYg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVzb3Vy
Y2UgVGltaW5nXSBTdXBwb3J0IFJlc291cmNlIFRpbWluZyBpbiBXb3JrZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmlu
ZGV4IDZhZjQ5MmVmNjA4OWUzYTBlZDM4M2E5MDgwMmU2N2QwY2YxZmY0ZTkuLmVlMWY4YWVhMzQ2
N2Y2OThhOGJmNjk3YWYyNGYyZTAwNzVjZjdhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJp
bnRlcnByZXRlci9DYWxsRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAx
NmMwNDI4YTlhZGNjYzhkZTQ0NDExNmMyMDI4YmE3YTg0ZDhjNDUzLi4yNGZiZGUxNWU1YjBlNDg5
M2Q1NTk5Nzc5NTExMzE1MWEyNmMyNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjU1Niw3
ICsyNTU2LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMKICAgICB9CiAgICAgCiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3Nh
Z2UtPnJlbGVhc2VDb250ZW50cygpKTsKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJh
eUJ1ZmZlclN0cnVjdHVyZShuYXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCkpLCBuYXRpdmVCdWZm
ZXIpOworICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBuYXRpdmVCdWZm
ZXItPnNoYXJpbmdNb2RlKCk7CisgICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpOwogICAgIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKaW5kZXggYzBiZWZjNDhhMGRhNzliMzcwZmFhZDEwMjU0OWNhMDc0Y2MwOWI0My4uOWZlZDdj
Nzg2YjZiZTk3YTMxZTU5NDM1MjZjYmJkYmViNjA1MGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0yOSwxMSArMjksMTEg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygK
LSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0
ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAg
ICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKIHsKICAgICBtX2Jhc2VBZGRyZXNzID0gbV9idWZmZXIgPyAoc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fYnVmZmVyLT5kYXRhKCkpICsgbV9ieXRlT2Zmc2V0KSA6IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDU1ZjM0NmUzYTQz
NTFlNmU0M2VjMGM2NzBlMmU1ZDMxYzFkNjhhNTAuLmU3NmU2ZTI2NTJhY2Y5YWNiMzg0OWUzNDU1
ODljY2Q4OWMzMmU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5
cGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDgsMTYgKzQ3LDE2IEBAIGNsYXNzIEFycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgICAgICByZXR1
cm4gIW1fYnVmZmVyIHx8IG1fYnVmZmVyLT5pc05ldXRlcmVkKCk7CiAgICAgfQogICAgIAotICAg
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChpc05ldXRlcmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbV9idWZmZXI7CiAgICAgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QK
KyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IHBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gcG9zc2libHlTaGFy
ZWRCdWZmZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+aXNTaGFyZWQoKSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTAwLDkgKzk5LDkgQEAgY2xhc3Mg
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7CiAK
ICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMKICAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgc3RhdGlj
IGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBzaXplOwpAQCAtMTE0LDcgKzExMyw3IEBAIGNsYXNzIEFycmF5QnVmZmVyVmll
dyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgIHZpcnR1YWwgSlNB
cnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAg
ICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KTsKIAogICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3
KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKQEAgLTEzMCwyMCArMTI5LDIwIEBAIGNsYXNzIEFy
cmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAg
IC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlp
bmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
dm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAotICAgICAgICBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIsCisgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCiAgICAg
ICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKICAgICAgICAgdW5zaWduZWQgKm9mZnNldCwK
ICAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQg
bWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZzZXQgPSBi
dWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxl
bmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNl
dCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgKm9m
ZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOworICAgICAgICB1
bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNl
dCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmlu
Z0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAppbmRleCAyYjIxNTdjZWMyY2NjMzYxOGE5MTQxZTk3MmQ3YjUx
MzJlYTVmNTExLi40ODBhZWEyMjBmNDdlOGYyNTljZWQ5MTU5NTJkN2ViODg1NmE1MTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtOTksNyArOTksNyBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgQXJyYXlCdWZmZXIqICgqU2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeSkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBTbG93RG93bkFuZFdh
c3RlTWVtb3J5IHNsb3dEb3duQW5kV2FzdGVNZW1vcnk7CiAgICAgCi0gICAgdHlwZWRlZiBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gKCpHZXRUeXBlZEFycmF5SW1wbCkoSlNBcnJheUJ1ZmZl
clZpZXcqKTsKKyAgICB0eXBlZGVmIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ICgqR2V0VHlwZWRB
cnJheUltcGwpKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgR2V0VHlwZWRBcnJheUltcGwgZ2V0
VHlwZWRBcnJheUltcGw7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpQcmV2ZW50RXh0ZW5zaW9uc0Z1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGIxMGNhNDAzZTViZDBmMjYwODRlOWNjNzRmOWMw
ZTM2YTJkYzg5ZGIuLjNiNTg3MWJhM2JlMmExZWJjZjQxYjNkN2I3NGVhZjlmNjM2ZWRlOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTMyLDIyICsz
MiwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKLSAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQpCitEYXRh
Vmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZN
b3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkK
IHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCkpOwogfQogCi1SZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gcGFzc2VkQnVmZmVyKQorUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgcmV0dXJuIGNyZWF0ZShidWZmZXIsIDAsIGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRl
TGVuZ3RoKCk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5n
dGgpOwogfQogCiBKU0FycmF5QnVmZmVyVmlldyogRGF0YVZpZXc6OndyYXAoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmgKaW5kZXggMjI4MTQ3OTVlM2FiNzI2YWQ2NjZlNjk2ZTNkMGU4ZDAx
ODQ1MmMzMC4uNjYzNjNhNzU0MjMzOGRjYmM4YTdlYmRmNTBjOWJlYzA4NDc3YjdjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0yNywxNyArMjcsMTYgQEAK
IAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9GbGlwQnl0ZXMu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgRGF0YVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHByb3RlY3RlZDoKLSAgICBE
YXRhVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAKIHB1YmxpYzoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYp
OwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKaW5kZXggZmQ0OGM5Y2NiNTZlYmNjMGE1MDA4MDBlN2YyZWEyNzNlY2E1ZTEzMy4u
MzQ3YjY1MTJkY2Y0MDE5ZWI2YjQ4OThhMGUxZDc0NDVkNGU2M2RkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAg
LTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3
IHsKIHByb3RlY3RlZDoKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBkYTdhNDUzMTE0MTI4ZjJiYzY4
MzQ5Y2M2YmM1YTYzMTY3MzJkYTJlLi4xYjZkYTU2MWViN2NlYjEzMTJhYTY0OGNkMmU0OTNiNTgy
YjliNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCi0gICAgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgOiBBcnJheUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQorICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CkBAIC01OCwxMCArNTgsMTAgQEAgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgaWYgKCF2ZXJp
ZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKQorICAgIEFTU0VSVChidWZmZXIpOworICAgIGlmICghQXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKICAgICAgICAgfHwgIXZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKSkgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05NCw3ICs5NCw4IEBA
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAogICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwogICAgIGNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0
aCk7CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0g
ICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPihidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwogICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzgxNDlmNmYxNTg0YWExYTlhOTZhNDU3MTcwY2MxYjA1MmU4NDcwZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiVHlwZWRBcnJheUJhc2UuaCIKLSNpbmNsdWRlIDxsaW1pdHM+
Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotLy8gQmFzZSBjbGFzcyBmb3IgYWxsIFdl
YkdMPFQ+QXJyYXkgdHlwZXMgaG9sZGluZyBpbnRlZ3JhbAotLy8gKG5vbi1mbG9hdGluZy1wb2lu
dCkgdmFsdWVzLgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVkQXJyYXlCYXNlPFQ+IHsK
LXB1YmxpYzoKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFt
cCBOYU4gdG8gMAotICAgICAgICAgICAgdmFsdWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91Ymxl
IGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAv
LyBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcyB3aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5
LgotICAgICAgICBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0
PFQ+KHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgSW50ZWdyYWxUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBUeXBlZEFy
cmF5QmFzZTxUPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLSAgICB7Ci0gICAgfQotCi19
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5kZXggN2E3ZmFhYzc3NmEzYzM3MmZiZmZhNWMyNmJmNjE4
MTFiYTY2MWZkMC4uYjI0YjZkYjQ2YTVlYTA5NGRlOGJhODNiYWM4MDIyYWFkOThiN2M0NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlcjo6c19pbmZvID0gewogICAgICJBcnJheUJ1ZmZlciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNBcnJheUJ1ZmZlcil9OwogCi1KU0FycmF5QnVmZmVyOjpKU0Fy
cmF5QnVmZmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyKQorSlNBcnJheUJ1ZmZlcjo6SlNBcnJheUJ1ZmZlcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIp
CiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ltcGwoYXJyYXlCdWZmZXIuZ2V0
KCkpCiB7CkBAIC01MCwxMiArNTAsMTEgQEAgdm9pZCBKU0FycmF5QnVmZmVyOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB9CiAKIEpTQXJyYXlC
dWZmZXIqIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIpCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBKU0Fy
cmF5QnVmZmVyKiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0FycmF5QnVmZmVyPih2bS5oZWFwKSkKLSAgICAgICAgSlNBcnJheUJ1ZmZlcih2bSwgc3RydWN0
dXJlLCBidWZmZXIpOworICAgICAgICBKU0FycmF5QnVmZmVyKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRleCA1OTI4N2UxN2NiZDc1ZWE4YTFi
ZTc2Y2Y5M2M1N2Y4ZGQ3MTIwYzQzLi45MTQyN2E5MGJkNTlkMzk3ZTYxYzZlM2U2NDM4YTUyYmQ5
YmRiYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5oCkBAIC0zNiwxMiArMzYsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciBmaW5hbCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU0Fy
cmF5QnVmZmVyKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4pOworICAg
IEpTQXJyYXlCdWZmZXIoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogICAgIAogcHVi
bGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZWdpc3RlciB0aGUgbmV3IHdyYXBwZXIg
d2l0aCB0aGUgdm0ncyBUeXBlZEFycmF5Q29udHJvbGxlci4KLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgSlNBcnJheUJ1ZmZlciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0FycmF5QnVm
ZmVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogCiAg
ICAgQXJyYXlCdWZmZXIqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5jcHAKaW5kZXggYjgwM2Q5NTU5ZDI3YzNmYzQxNmQxNWU5ZGUzZDcwYzhmNmIwZDQ2
ZS4uM2M3NmJmOTVjMjRlMmRlZDUwZGNmNGFiYjc3MTQ5MTNmZTRlNTAzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZl
clN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIAotICAgIEpTQXJyYXlC
dWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdC
dWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1ZmZlcikpOwogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBhM2IzODg4M2VkNzFmNGVmYjk4
NjM3NTQzNTZlNGM3M2MxZjdhYjdmLi43NmI3ZmNkMWYzNzljZmJiNTU4NzQxN2MyNzhkZDUwNTlm
MjMzMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBhcnJheUJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC0xMTYsNyArMTE2LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciwKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBt
X3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTUx
ZDUxZGJlYjFmMTE0ZDcyNzI4NGE4MGI4YmI1MTI1ZDBhZThjLi40NDdjODNhM2VlMTdhZGNmM2Jh
YWQ0NjkwYjU1MWRjNGU4OGI5YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIEpT
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRl
eHQoCi0gICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LAorICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCiAg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAg
ICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0
cnVjdGlvbkNvbnRleHQoCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwKKyAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwK
ICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZp
ZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9zdHJ1Y3R1cmU7IH0KQEAgLTE2Miw4ICsxNjIsOCBAQCBjbGFzcyBKU0FycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBBcnJheUJ1ZmZlciogcG9zc2li
bHlTaGFyZWRCdWZmZXIoKTsKICAgICBKU0FycmF5QnVmZmVyKiB1bnNoYXJlZEpTQnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYyk7CiAgICAgSlNBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRKU0J1ZmZl
cihFeGVjU3RhdGUqIGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB1bnNo
YXJlZEltcGwoKTsKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFy
ZWRJbXBsKCk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdW5zaGFyZWRJbXBsKCk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFyZWRJbXBsKCk7CiAgICAgYm9v
bCBpc05ldXRlcmVkKCkgeyByZXR1cm4gaGFzQXJyYXlCdWZmZXIoKSAmJiAhdmVjdG9yKCk7IH0K
ICAgICB2b2lkIG5ldXRlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCBiOTk1NjdkNDc0
NWNjZWE4Y2M2NzdmZjU3ZmZlMmU3NjI3ZThiYjhjLi5kNWM3MjdmNzRhZjdjZWQzYzNhZmI1MmM3
ZWFkN2FlOTlmNmE4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtNjEsMTQgKzYxLDE0IEBAIGlu
bGluZSBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OmV4aXN0aW5nQnVmZmVySW5CdXR0
ZXJmbHkoKQogICAgIHJldHVybiBidXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIoKS0+YXJyYXlC
dWZmZXIoKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5
QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKK2lubGluZSBSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKIHsKICAgICBy
ZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0VHlwZWRBcnJheUltcGwodGhpcyk7CiB9CiAKLWlubGlu
ZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnVuc2hhcmVk
SW1wbCgpCitpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6
OnVuc2hhcmVkSW1wbCgpCiB7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJlc3Vs
dCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJl
c3VsdCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQt
PmlzU2hhcmVkKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAzZWY4MzFkNThkNjJmOGVjMDBiNTkwNzM3MzY2NTZh
OTcwYTUyMzc3Li5hY2RkNGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTI1MCwxMyArMjUwLDEz
IEBAIGJvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVyCiBBcnJheUJ1ZmZlciogSlNDZWxsOjpzbG93RG93
bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyopCitSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0NlbGw6OmdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB1
aW50MzJfdCBKU0NlbGw6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBjNDVlZWEzMGU5ODhj
OTcxZjQzMDg1OGEyOWY1N2VjNDkyYmZiOTc3Li4xNDY0YmI1MWQ0MmNlMmMyNzA2OTlkNDUyMDlh
ZWJhNWZlYzdiMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAt
MjUzLDcgKzI1Myw3IEBAIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXJyYXlCdWZmZXIq
IHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJy
YXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJW
aWV3Kik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXgg
ZjRhZmViYjkwZWU3NDRmNDI2MGVjMjhkODUzYjBjZGU3ZDE3Yzg0NC4uMWY2N2ZiZGNhM2UwYzk5
Zjc5N2I1ZjY4MWYyZmIxYTAxMjQ4YTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBKU0RhdGFWaWV3OjpKU0Rh
dGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIq
IGJ1ZmZlcgogfQogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCi0gICAgRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
cGFzc2VkQnVmZmVyLAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwotICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2
ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVv
Zih1aW50OF90KSkpIHsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBpZiAoIUFycmF5QnVmZmVy
Vmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdl
IG9mIGJ1ZmZlciIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTYwLDcg
KzYwLDcgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAotICAgICAg
ICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0aW9u
Q29udGV4dDo6RGF0YVZpZXcpOworICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlci5jb3B5UmVmKCks
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsK
ICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgSlNEYXRhVmlldyogcmVzdWx0ID0KICAgICAgICAg
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmlldz4odm0uaGVhcCkpIEpTRGF0YVZp
ZXcodm0sIGNvbnRleHQsIGJ1ZmZlci5nZXQoKSk7CkBAIC05MiwxMiArOTIsMTIgQEAgYm9vbCBK
U0RhdGFWaWV3OjpzZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8RGF0YVZpZXc+IEpTRGF0YVZpZXc6OnBvc3Np
Ymx5U2hhcmVkVHlwZWRJbXBsKCkKK1JlZlB0cjxEYXRhVmlldz4gSlNEYXRhVmlldzo6cG9zc2li
bHlTaGFyZWRUeXBlZEltcGwoKQogewogICAgIHJldHVybiBEYXRhVmlldzo6Y3JlYXRlKHBvc3Np
Ymx5U2hhcmVkQnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQogCi1QYXNzUmVm
UHRyPERhdGFWaWV3PiBKU0RhdGFWaWV3Ojp1bnNoYXJlZFR5cGVkSW1wbCgpCitSZWZQdHI8RGF0
YVZpZXc+IEpTRGF0YVZpZXc6OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKICAgICByZXR1cm4gRGF0
YVZpZXc6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsK
IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBBcnJheUJ1ZmZlciogSlNEYXRhVmlldzo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmZmVyVmlldyopCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBh
c3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0RhdGFWaWV3OjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNEYXRh
Vmlldzo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqIG9iamVjdCkKIHsKICAg
ICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihvYmplY3QpOwog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IGNhZTNhOTI4ZGRiMWVh
OWY2ZjI3NGFlZjA4YTNmOGU0NGNmMjM1NGUuLmY0MjAzMmU5YzMxMTc3NWZmZjRkZjUwMDYzMzNi
MGNkNjUxMzk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgCiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAgICAgRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCisgICAgICAgIEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwKICAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0
aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2Ug
dG8KQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKICAgICB9CiAgICAgCi0gICAgUGFz
c1JlZlB0cjxEYXRhVmlldz4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKLSAgICBQYXNzUmVm
UHRyPERhdGFWaWV3PiB1bnNoYXJlZFR5cGVkSW1wbCgpOworICAgIFJlZlB0cjxEYXRhVmlldz4g
cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8RGF0YVZpZXc+IHVuc2hhcmVk
VHlwZWRJbXBsKCk7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9IFR5cGVEYXRhVmlldzsKIApAQCAtNzEsNyArNzEsNyBAQCBjbGFz
cyBKU0RhdGFWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICBzdGF0aWMgQXJyYXlCdWZm
ZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlC
dWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVk
QXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA2MTA5NzA2NjY4MGI3MTgxM2RjZDA5OTU1
Y2YzYjE5NWQ5MWU5OTQzLi44YTc2Y2FiOTc1NTQ5NTYyYWIzNzliY2RmMjBjNzZlOTk2NzA4YjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEwNyw5ICsxMDcsOSBAQCBjbGFzcyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgc3RhdGljIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdp
dGhGYXN0VmVjdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9p
ZCogdmVjdG9yKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IGltcGwpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVj
dHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gaW1wbCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsg
fQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQpAQCAtMjI1LDggKzIyNSw4IEBAIGNs
YXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsK
ICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgogICAgIGJvb2wg
c2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmpl
Y3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9i
c2VydmFibGUpOwogICAgIAotICAgIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5
cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7Ci0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8dHlwZW5h
bWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CisgICAgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjkxLDcgKzI5
MSw3IEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZm
ZXJWaWV3IHsKICAgICAvLyBBbGxvY2F0ZXMgdGhlIGZ1bGwtb24gbmF0aXZlIGJ1ZmZlciBhbmQg
bW92ZXMgZGF0YSBpbnRvIHRoZSBDIGhlYXAgaWYKICAgICAvLyBuZWNlc3NhcnkuIE5vdGUgdGhh
dCB0aGlzIG5ldmVyIGFsbG9jYXRlcyBpbiB0aGUgR0MgaGVhcC4KICAgICBzdGF0aWMgQXJyYXlC
dWZmZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJy
YXlCdWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAKIHByaXZhdGU6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJv
dyBvbiBlcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCmluZGV4IDQ0OGFiOTJjODRlNjc2MGI4NzU2MDQzN2U5NWFjYmU4YjNlN2UzN2UuLjNlZTk1
YTA5NTAwNzdjYTQ4ZGNiZDUxM2M4ZGFhMzg1YWE2N2VmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTM1LDcgKzEzNSw3IEBAIGlubGlu
ZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhF
eGVjU3RhdGUqIGV4ZWMsIFN0CiAgICAgICAgIH0KIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1ZmZl
ciwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gVmlld0NsYXNzOjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCmluZGV4IDYyMWRlMjU1OWFjMDZiNjU0MTM0YTVjODJhOTNmMDI1MGZhYjRjMjIu
LmYwMTk2NTliYzI1MDYzMmRiNTJhNzRhZTVlYWM4NzZiYzY2OTk1NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCkBAIC05NywxNCArOTcsMTQgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXQKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IHBhc3NlZEJ1ZmZlciwKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUpKSB7CisgICAg
QVNTRVJUKGJ1ZmZlcik7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdl
TGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkxlbmd0aCBv
dXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJCeXRlIG9mZnNldCBp
cyBub3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIENv
bnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2bSwgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVPZmZz
ZXQsIGxlbmd0aCk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9CiAgICAgICAgIG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFw
KSkKQEAgLTEyMywxMCArMTIzLDkgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBpbXBs
KQorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4mJiBpbXBsKQogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBDb25zdHJ1Y3Rpb25Db250ZXh0
IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBpbXBsLT5ieXRlT2Zmc2V0KCksIGltcGwt
Pmxlbmd0aCgpKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVy
ZSwgaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKSwgaW1wbC0+Ynl0ZU9mZnNldCgpLCBpbXBs
LT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCkBAIC0xMzgsOSArMTM3LDkgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCi0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gaW1wbCkKKyAg
ICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCkKIHsKLSAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBpbXBsKTsKKyAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTMyMiwxMyArMzIxLDEzIEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1w
bCgpCitSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpCiB7CiAgICAgcmV0dXJu
IEFkYXB0b3I6OlZpZXdUeXBlOjpjcmVhdGUocG9zc2libHlTaGFyZWRCdWZmZXIoKSwgYnl0ZU9m
ZnNldCgpLCBsZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1QYXNz
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwoKQorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwoKQogewogICAgIHJldHVybiBBZGFwdG9yOjpWaWV3VHlwZTo6Y3JlYXRlKHVuc2hhcmVk
QnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQpAQCAtNTkwLDggKzU4OSw3IEBA
IEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Omdl
dFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KiBvYmplY3QpCiB7CiAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5
cGVkSW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmgKaW5kZXggODc0YmFhNjIxYjMwNjQyYTcwM2I4YTgwNmFkMzdjNTk2ZGUxMTYxMi4uMmNiY2Fk
Mzk1M2RkOTcxNjllYmIzMTVhZWVlZTY2NzM3YjI1YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBAIC01NTYsNyArNTU2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKFZNJnYKIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCi0gICAgICAgICAgICBleGVj
LCBzdHJ1Y3R1cmUsIGFycmF5QnVmZmVyLAorICAgICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBX
VEZNb3ZlKGFycmF5QnVmZmVyKSwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmJ5dGVPZmZzZXQo
KSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemUsCiAgICAgICAgICAgICBsZW5ndGgp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwCmluZGV4IGI4OGQ5ZjQyZDdkZGM1NmRlZmNhMjcyZmIwZjBjMGY3NTQzYWJlOWYuLjE2
OTMwOGVmM2IxMjMzMTQxYmY5MzlmZGM5YzMyZTc3ZTA2MDFkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCkBAIC00OSw5ICs0OSw5IEBA
IE1BS0VfU19JTkZPKFVpbnQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZP
KEZsb2F0NjQpOwogCi1KU1VpbnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgcGFz
c2VkQnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitKU1VpbnQ4
QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEpTVWludDhBcnJheTo6Y3JlYXRl
KGV4ZWMsIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPFJlZlB0cjxBcnJheUJ1ZmZlcj4+KHBhc3Nl
ZEJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIEpTVWludDhBcnJheTo6
Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5
QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTY4NzYxMTZmMjE2ZjA3ZmI4
NDExOTJkYTM0MmIzYWE4M2Y5NzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlCYXNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVibGlj
IEFycmF5QnVmZmVyVmlldyB7Ci1wdWJsaWM6Ci0gICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihiYXNlQWRkcmVzcygpKTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRB
cnJheUJhc2U8VD4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1
cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29s
IHNldFJhbmdlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZz
ZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhTGVuZ3RoICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXpl
b2YoVCkpOwotICAgIH0KLQotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAq
IHNpemVvZihUKSwgbGVuZ3RoICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlk
ZGVuIGZyb20gQXJyYXlCdWZmZXJWaWV3LiBUaGlzIG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YK
LSAgICAvLyBydWxlcyBhYm91dCBpbmhlcml0YW5jZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNs
YXNzZXMsIGFuZAotICAgIC8vIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRv
IHN1YmNsYXNzZXMuCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2xlbmd0aDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwot
ICAgIH0KLQotICAgIC8vIEludm9rZWQgYnkgdGhlIGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBw
ZXJmb3JtIHJhbmdlIGNoZWNrczsgY2FsbGVyCi0gICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRv
aW5nIHNvIGFuZCByZXR1cm5pbmcgdW5kZWZpbmVkIGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAg
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAg
ICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVy
ZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJy
YXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7
Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVmZmVyLmdldCgpKQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5y
ZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNs
YXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoY29uc3QgVCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9
IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKLSAgICAgICAgaWYgKGEpCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgYS0+
c2V0KGksIGFycmF5W2ldKTsKLSAgICAgICAgcmV0dXJuIGEucmVsZWFzZSgpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUmVmUHRyPFN1YmNsYXNz
PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZihidWZmZXIpOwotICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdlPFQ+KGJ1ZiwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRp
YyBSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVm
ZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBj
cmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIFJlZlB0cjxTdWJjbGFzcz4gc3ViYXJy
YXlJbXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG9mZnNldCwgbGVuZ3RoOwotICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQs
IGVuZCwgbV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOwotICAgICAgICBjbGFtcE9mZnNldEFu
ZE51bUVsZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgp
OwotICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5n
dGgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQotICAgIHsKLSAgICAgICAg
QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKTsKLSAgICAgICAgbV9sZW5ndGggPSAwOwotICAgIH0K
LQotICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmly
dHVhbCBmdW5jdGlvbiBpbiBzdWJjbGFzc2VzLAotICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBw
cm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi11c2luZyBKU0M6OlR5cGVkQXJyYXlCYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggNGE3NDFiNzk5MWNjZWZiMDUyZjViOTQ3M2Y4NjlkMTEwYTgxOWUxZi4uYzk5MDRj
MDkxZjYwYWNiMzE4YTBhNDQ3N2U1NzMyYTc5MjY5YTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xODU2LDM0
ICsxODU2LDM0IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJh
eUJ1ZmZlcih2bSwgYXJyYXlCdWZmZXJPYmopOwogICAgICAgICBzd2l0Y2ggKGFycmF5QnVmZmVy
Vmlld1N1YnRhZykgewogICAgICAgICBjYXNlIERhdGFWaWV3VGFnOgotICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gZ2V0SlNWYWx1ZShEYXRhVmlldzo6Y3JlYXRlKGFycmF5QnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9
IGdldEpTVmFsdWUoRGF0YVZpZXc6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBJbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRv
SlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGNhc2UgVWludDhBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6Y3JlYXRl
KGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6
Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQ4Q2xhbXBlZEFycmF5
VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFs
T2JqZWN0LCBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFy
cmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlC
dWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5OjpjcmVh
dGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAg
YXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5
OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDE2QXJyYXlUYWc6
Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmpl
Y3QsIFVpbnQxNkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIEludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pT
KG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcg
PSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDMyQXJyYXk6
OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAg
ICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQz
MkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgRmxvYXQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEZsb2F0MzJBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIEZsb2F0NjRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVy
VmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5OjpjcmVhdGUo
YXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDY0QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGI3NGNhYjQ3MTZiYTkx
MmJlOWY2NWY5MmQ4ZDU5OWIxMmJhZjM1M2UuLjZmYjc3YzA3YTJmYTcyMDkyY2JlZTcwODFmYTIw
ZmZlMzM0MDk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNzIsNyArNzIsOCBAQCBF
eGNlcHRpb25PcjxSZWY8Rm9udEZhY2U+PiBGb250RmFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBmYQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fSwKICAgICAgICAgWyZdIChSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikgLT4gRXhj
ZXB0aW9uT3I8dm9pZD4gewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKTsKKyAgICAgICAgICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gSlNDOjpVaW50
OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogICAg
ICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHBvcHVsYXRlRm9udEZh
Y2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5nKCksIGFycmF5QnVmZmVyVmlldy5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
aW5kZXggN2FiN2VjYmU2MTRhNWM0ZjEzY2U2NjNkYmRmMjlkMmQ3NjVhMmZmZS4uMDE3OThjOTI2
N2VmOTQ1ZTcyNjdlODI4YjNkYjRhNDc3MTBmN2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTEwMjgsNyArMTAy
OCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJ
S2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBp
bml0RGF0YUJ1ZmZlciA9IGluaXREYXRhLT51bnNoYXJlZEJ1ZmZlcigpOwogCiAgICAgLy8gVXNl
IGEgRGF0YVZpZXcgdG8gcmVhZCB1aW50MzIgdmFsdWVzIGZyb20gdGhlIGJ1ZmZlciwgYXMgVWlu
dDMyQXJyYXkgcmVxdWlyZXMgdGhlIHJlYWRzIGJlIGFsaWduZWQgb24gNC1ieXRlIGJvdW5kYXJp
ZXMuIAotICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFW
aWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpOworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFW
aWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpKTsKICAgICB1aW50MzJfdCBvZmZzZXQgPSAwOwogICAgIGJvb2wgc3RhdHVz
ID0gdHJ1ZTsKIApAQCAtMTAzNyw3ICsxMDM3LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQK
ICAgICBpZiAoIXN0YXR1cyB8fCBvZmZzZXQgKyBrZXlVUklMZW5ndGggPiBpbml0RGF0YS0+bGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50MTZBcnJheT4g
a2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCBvZmZzZXQs
IGtleVVSSUxlbmd0aCk7CisgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVp
bnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleVVS
SUxlbmd0aCk7CiAgICAgaWYgKCFrZXlVUklBcnJheSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC0xMDQ5LDcgKzEwNDksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdAogICAgIGlmICgh
c3RhdHVzIHx8IG9mZnNldCArIGtleUlETGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5SURBcnJheSA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7
CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGtleUlEQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUo
aW5pdERhdGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleUlETGVuZ3RoKTsKICAgICBpZiAo
IWtleUlEQXJyYXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA2MSw3ICsxMDYxLDcg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJ
REFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBpZiAoIXN0YXR1cyB8fCBvZmZzZXQgKyBj
ZXJ0aWZpY2F0ZUxlbmd0aCA+IGluaXREYXRhLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgY2VydGlmaWNhdGUgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZm
ZXIsIG9mZnNldCwgY2VydGlmaWNhdGVMZW5ndGgpOworICAgIGNlcnRpZmljYXRlID0gVWludDhB
cnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRl
TGVuZ3RoKTsKICAgICBpZiAoIWNlcnRpZmljYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCmluZGV4IGNiZDBjM2M1YjQyMzA3MDhlOWIxZjZjZDVjN2UzOTY4NmU4
ODZkZTQuLmU0ZDBmOTE2OWQ0MjU0YjI5ZGUzMzg0NTdhMjY5ZjRiMDM0NWNiMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcApAQCAtMTkxMSwxMyArMTkxMSwxNCBAQCBib29sIEFWRldyYXBwZXI6OnNob3Vs
ZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
UgogICAgICAgICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6
IGtleVVSSV0KICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAq
IHNpemVvZihVQ2hhcik7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKLSAgICAgICAgUmVm
UHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
IFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUs
IHRydWUpOwogCi0gICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBVaW50
MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0LCBrZXlVUkkubGVuZ3RoKCkpOworICAg
ICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAg
IGtleVVSSUFycmF5LT5zZXRSYW5nZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4o
U3RyaW5nVmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJ
Lmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBSZWZQdHI8
VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIs
IDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBieXRl
TGVuZ3RoID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFC
dWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKICAgICAgICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+
a2V5TmVlZGVkKGluaXREYXRhLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2Jq
Qy5tbQppbmRleCAyNjE1NmFjMWY3MzIzYzY2OGE4M2Y2ZDg2NDM4MWZmMmQ3MDM1MTBkLi40MTA5
OTRiZWVjM2E0ZjE0YzQ1MWI1ZDhmZWVmYWY1OGMyNmE0N2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZG
b3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTAwLDcg
KzEwMCw4IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6
Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYKICAgICBkZXN0aW5hdGlvblVSTCA9IFN0
cmluZygpOwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBrZXlSZXF1ZXN0QnVmZmVyID0gQXJy
YXlCdWZmZXI6OmNyZWF0ZShba2V5UmVxdWVzdC5nZXQoKSBieXRlc10sIFtrZXlSZXF1ZXN0Lmdl
dCgpIGxlbmd0aF0pOwotICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoa2V5UmVxdWVzdEJ1
ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoID0ga2V5UmVxdWVzdEJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIHJldHVybiBV
aW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0
aCk7CiB9CiAKIHZvaWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE2OGZhZDFjNmYxNjhhOThjNmM4YWIyYTliMDA4
NTc1MzlmYTZkZmMuLmYwMzhkYTA1YTg3YTM1ZDRjMWZkY2E0NzZmYWY5MmNhMjQzMTRhMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTc3MCwxOSArMTc3MCwyMiBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNv
dXJjZShBVkFzc2V0UgogICAgICAgICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJ
IHNpemUgYnl0ZXM6IGtleVVSSV0KICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVS
SS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
aW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsK
LSAgICAgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZp
ZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgo
KSk7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpOworICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlND
OjpEYXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgYnl0ZUxlbmd0
aCk7CiAgICAgICAgIGluaXREYXRhVmlldy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0
cnVlKTsKIAotICAgICAgICBSZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2
QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgNCwga2V5VVJJLmxlbmd0aCgpKTsKKyAgICAg
ICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUo
aW5pdERhdGFCdWZmZXIuY29weVJlZigpLCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBr
ZXlVUklBcnJheS0+c2V0UmFuZ2UoU3RyaW5nVmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFj
dGVycygpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCi0g
ICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShp
bml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAg
IFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGluaXREYXRhQnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGlmICghcGxheWVyKCkt
PmtleU5lZWRlZChpbml0RGF0YS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgbV9rZXlVUklUb1JlcXVlc3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSBlbHNlIGlmIChzY2hlbWUgPT0gImNsZWFya2V5Iikg
eworICAgIH0KKworICAgIGlmIChzY2hlbWUgPT0gImNsZWFya2V5IikgewogICAgICAgICBTdHJp
bmcga2V5SUQgPSBbW1thdlJlcXVlc3QgcmVxdWVzdF0gVVJMXSByZXNvdXJjZVNwZWNpZmllcl07
CiAgICAgICAgIFN0cmluZ1ZpZXcga2V5SURWaWV3KGtleUlEKTsKICAgICAgICAgQ1N0cmluZyB1
dGY4RW5jb2RlZEtleUlkID0gVVRGOEVuY29kaW5nKCkuZW5jb2RlKGtleUlEVmlldywgVVJMRW5j
b2RlZEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301871</attachid>
            <date>2017-02-16 19:37:35 -0800</date>
            <delta_ts>2017-02-16 19:37:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168455-20170217123457.patch</filename>
            <type>text/plain</type>
            <size>59343</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZmVlNGE4ODBkM2MzYzI2ZmIyOGVlZDIzYjI0ODExMzAwYzA3NTRlLi44ODhiNGFkMjg1MTY4MjZi
MmU1Yzc4MjA3NDJiNWY2ZWYxY2ZlYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaW5hbGx5IGRyb3BzIGFsbCB0aGUgUGFzc1JlZlB0ciBpbiBKU0MuCisgICAgICAgIFdlIGNo
YW5nZWQgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gdG8gUmVmUHRyPEFycmF5QnVmZmVyPiYmLgor
ICAgICAgICBTaW5jZSBBcnJheUJ1ZmZlciBtYXkgYmUgbnVsbHB0ciBpZiB0aGUgYXJyYXkgaXMg
bmV1dGVyZWQsCisgICAgICAgIHdlIGhvbGQgaXQgYXMgUmVmUHRyPD4gaW5zdGVhZCBvZiBSZWY8
Pi4KKworICAgICAgICBBbmQgd2UgYWxzbyBkcm9wcyAyIGZpbGVzLCBUeXBlZEFycmF5QmFzZS5o
IGFuZCBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmguCisgICAgICAgIFRoZXkgYXJlIG5vdCB1c2Vk
IChhbmQgdGhleSBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgcHJvamVjdCBmaWxlKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6CisgICAgICAgIChK
U0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSk6CisgICAgICAg
ICogcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6
SlNBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAg
ICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpw
b3NzaWJseVNoYXJlZFR5cGVkSW1wbCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnVuc2hh
cmVkVHlwZWRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Z2V0VHlwZWRBcnJheUlt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Z2V0VHlwZWRBcnJheUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisKIDIwMTctMDItMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0
b3IgQWNjZXNzQ2FzZSB0byBiZSBtb3JlIGxpa2UgQjNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyN2Nk
ZjIyNGIwYzg1ODNlYWRkYThkZGU5MjhlYTg3ZjU4NDE0NjcuLjVhYTVmNDUwNTYzYjcyZWY2YmQw
OGUwZjE1Nzg1YzlmNmQzOGUwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0w
Mi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
SlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0cmFjdEtleVVSSUtl
eUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisKIDIwMTctMDItMTYg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVzb3Vy
Y2UgVGltaW5nXSBTdXBwb3J0IFJlc291cmNlIFRpbWluZyBpbiBXb3JrZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmlu
ZGV4IDZhZjQ5MmVmNjA4OWUzYTBlZDM4M2E5MDgwMmU2N2QwY2YxZmY0ZTkuLmVlMWY4YWVhMzQ2
N2Y2OThhOGJmNjk3YWYyNGYyZTAwNzVjZjdhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJp
bnRlcnByZXRlci9DYWxsRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAx
NmMwNDI4YTlhZGNjYzhkZTQ0NDExNmMyMDI4YmE3YTg0ZDhjNDUzLi4yNGZiZGUxNWU1YjBlNDg5
M2Q1NTk5Nzc5NTExMzE1MWEyNmMyNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjU1Niw3
ICsyNTU2LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMKICAgICB9CiAgICAgCiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3Nh
Z2UtPnJlbGVhc2VDb250ZW50cygpKTsKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJh
eUJ1ZmZlclN0cnVjdHVyZShuYXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCkpLCBuYXRpdmVCdWZm
ZXIpOworICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBuYXRpdmVCdWZm
ZXItPnNoYXJpbmdNb2RlKCk7CisgICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpOwogICAgIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKaW5kZXggYzBiZWZjNDhhMGRhNzliMzcwZmFhZDEwMjU0OWNhMDc0Y2MwOWI0My4uOWZlZDdj
Nzg2YjZiZTk3YTMxZTU5NDM1MjZjYmJkYmViNjA1MGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0yOSwxMSArMjksMTEg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygK
LSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0
ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAg
ICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKIHsKICAgICBtX2Jhc2VBZGRyZXNzID0gbV9idWZmZXIgPyAoc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fYnVmZmVyLT5kYXRhKCkpICsgbV9ieXRlT2Zmc2V0KSA6IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDU1ZjM0NmUzYTQz
NTFlNmU0M2VjMGM2NzBlMmU1ZDMxYzFkNjhhNTAuLmU3NmU2ZTI2NTJhY2Y5YWNiMzg0OWUzNDU1
ODljY2Q4OWMzMmU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5
cGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDgsMTYgKzQ3LDE2IEBAIGNsYXNzIEFycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgICAgICByZXR1
cm4gIW1fYnVmZmVyIHx8IG1fYnVmZmVyLT5pc05ldXRlcmVkKCk7CiAgICAgfQogICAgIAotICAg
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChpc05ldXRlcmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbV9idWZmZXI7CiAgICAgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QK
KyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IHBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gcG9zc2libHlTaGFy
ZWRCdWZmZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+aXNTaGFyZWQoKSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTAwLDkgKzk5LDkgQEAgY2xhc3Mg
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7CiAK
ICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMKICAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgc3RhdGlj
IGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBzaXplOwpAQCAtMTE0LDcgKzExMyw3IEBAIGNsYXNzIEFycmF5QnVmZmVyVmll
dyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgIHZpcnR1YWwgSlNB
cnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAg
ICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KTsKIAogICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3
KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKQEAgLTEzMCwyMCArMTI5LDIwIEBAIGNsYXNzIEFy
cmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAg
IC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlp
bmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
dm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAotICAgICAgICBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIsCisgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCiAgICAg
ICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKICAgICAgICAgdW5zaWduZWQgKm9mZnNldCwK
ICAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQg
bWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZzZXQgPSBi
dWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxl
bmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNl
dCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgKm9m
ZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOworICAgICAgICB1
bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNl
dCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmlu
Z0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAppbmRleCAyYjIxNTdjZWMyY2NjMzYxOGE5MTQxZTk3MmQ3YjUx
MzJlYTVmNTExLi40ODBhZWEyMjBmNDdlOGYyNTljZWQ5MTU5NTJkN2ViODg1NmE1MTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtOTksNyArOTksNyBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgQXJyYXlCdWZmZXIqICgqU2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeSkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBTbG93RG93bkFuZFdh
c3RlTWVtb3J5IHNsb3dEb3duQW5kV2FzdGVNZW1vcnk7CiAgICAgCi0gICAgdHlwZWRlZiBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gKCpHZXRUeXBlZEFycmF5SW1wbCkoSlNBcnJheUJ1ZmZl
clZpZXcqKTsKKyAgICB0eXBlZGVmIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ICgqR2V0VHlwZWRB
cnJheUltcGwpKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgR2V0VHlwZWRBcnJheUltcGwgZ2V0
VHlwZWRBcnJheUltcGw7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpQcmV2ZW50RXh0ZW5zaW9uc0Z1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGIxMGNhNDAzZTViZDBmMjYwODRlOWNjNzRmOWMw
ZTM2YTJkYzg5ZGIuLjNiNTg3MWJhM2JlMmExZWJjZjQxYjNkN2I3NGVhZjlmNjM2ZWRlOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTMyLDIyICsz
MiwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKLSAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQpCitEYXRh
Vmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZN
b3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkK
IHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCkpOwogfQogCi1SZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gcGFzc2VkQnVmZmVyKQorUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgcmV0dXJuIGNyZWF0ZShidWZmZXIsIDAsIGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRl
TGVuZ3RoKCk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5n
dGgpOwogfQogCiBKU0FycmF5QnVmZmVyVmlldyogRGF0YVZpZXc6OndyYXAoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmgKaW5kZXggMjI4MTQ3OTVlM2FiNzI2YWQ2NjZlNjk2ZTNkMGU4ZDAx
ODQ1MmMzMC4uNjYzNjNhNzU0MjMzOGRjYmM4YTdlYmRmNTBjOWJlYzA4NDc3YjdjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0yNywxNyArMjcsMTYgQEAK
IAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9GbGlwQnl0ZXMu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgRGF0YVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHByb3RlY3RlZDoKLSAgICBE
YXRhVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAKIHB1YmxpYzoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYp
OwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKaW5kZXggZmQ0OGM5Y2NiNTZlYmNjMGE1MDA4MDBlN2YyZWEyNzNlY2E1ZTEzMy4u
MzQ3YjY1MTJkY2Y0MDE5ZWI2YjQ4OThhMGUxZDc0NDVkNGU2M2RkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAg
LTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3
IHsKIHByb3RlY3RlZDoKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBkYTdhNDUzMTE0MTI4ZjJiYzY4
MzQ5Y2M2YmM1YTYzMTY3MzJkYTJlLi4xYjZkYTU2MWViN2NlYjEzMTJhYTY0OGNkMmU0OTNiNTgy
YjliNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCi0gICAgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgOiBBcnJheUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQorICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CkBAIC01OCwxMCArNTgsMTAgQEAgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgaWYgKCF2ZXJp
ZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKQorICAgIEFTU0VSVChidWZmZXIpOworICAgIGlmICghQXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKICAgICAgICAgfHwgIXZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKSkgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05NCw3ICs5NCw4IEBA
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAogICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwogICAgIGNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0
aCk7CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0g
ICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPihidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwogICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzgxNDlmNmYxNTg0YWExYTlhOTZhNDU3MTcwY2MxYjA1MmU4NDcwZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiVHlwZWRBcnJheUJhc2UuaCIKLSNpbmNsdWRlIDxsaW1pdHM+
Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotLy8gQmFzZSBjbGFzcyBmb3IgYWxsIFdl
YkdMPFQ+QXJyYXkgdHlwZXMgaG9sZGluZyBpbnRlZ3JhbAotLy8gKG5vbi1mbG9hdGluZy1wb2lu
dCkgdmFsdWVzLgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVkQXJyYXlCYXNlPFQ+IHsK
LXB1YmxpYzoKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFt
cCBOYU4gdG8gMAotICAgICAgICAgICAgdmFsdWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91Ymxl
IGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAv
LyBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcyB3aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5
LgotICAgICAgICBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0
PFQ+KHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgSW50ZWdyYWxUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBUeXBlZEFy
cmF5QmFzZTxUPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLSAgICB7Ci0gICAgfQotCi19
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5kZXggN2E3ZmFhYzc3NmEzYzM3MmZiZmZhNWMyNmJmNjE4
MTFiYTY2MWZkMC4uYjI0YjZkYjQ2YTVlYTA5NGRlOGJhODNiYWM4MDIyYWFkOThiN2M0NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlcjo6c19pbmZvID0gewogICAgICJBcnJheUJ1ZmZlciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNBcnJheUJ1ZmZlcil9OwogCi1KU0FycmF5QnVmZmVyOjpKU0Fy
cmF5QnVmZmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyKQorSlNBcnJheUJ1ZmZlcjo6SlNBcnJheUJ1ZmZlcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIp
CiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ltcGwoYXJyYXlCdWZmZXIuZ2V0
KCkpCiB7CkBAIC01MCwxMiArNTAsMTEgQEAgdm9pZCBKU0FycmF5QnVmZmVyOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB9CiAKIEpTQXJyYXlC
dWZmZXIqIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIpCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBKU0Fy
cmF5QnVmZmVyKiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0FycmF5QnVmZmVyPih2bS5oZWFwKSkKLSAgICAgICAgSlNBcnJheUJ1ZmZlcih2bSwgc3RydWN0
dXJlLCBidWZmZXIpOworICAgICAgICBKU0FycmF5QnVmZmVyKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRleCA1OTI4N2UxN2NiZDc1ZWE4YTFi
ZTc2Y2Y5M2M1N2Y4ZGQ3MTIwYzQzLi45MTQyN2E5MGJkNTlkMzk3ZTYxYzZlM2U2NDM4YTUyYmQ5
YmRiYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5oCkBAIC0zNiwxMiArMzYsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciBmaW5hbCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU0Fy
cmF5QnVmZmVyKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4pOworICAg
IEpTQXJyYXlCdWZmZXIoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogICAgIAogcHVi
bGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZWdpc3RlciB0aGUgbmV3IHdyYXBwZXIg
d2l0aCB0aGUgdm0ncyBUeXBlZEFycmF5Q29udHJvbGxlci4KLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgSlNBcnJheUJ1ZmZlciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0FycmF5QnVm
ZmVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogCiAg
ICAgQXJyYXlCdWZmZXIqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5jcHAKaW5kZXggYjgwM2Q5NTU5ZDI3YzNmYzQxNmQxNWU5ZGUzZDcwYzhmNmIwZDQ2
ZS4uM2M3NmJmOTVjMjRlMmRlZDUwZGNmNGFiYjc3MTQ5MTNmZTRlNTAzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZl
clN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIAotICAgIEpTQXJyYXlC
dWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdC
dWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1ZmZlcikpOwogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBhM2IzODg4M2VkNzFmNGVmYjk4
NjM3NTQzNTZlNGM3M2MxZjdhYjdmLi43NmI3ZmNkMWYzNzljZmJiNTU4NzQxN2MyNzhkZDUwNTlm
MjMzMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBhcnJheUJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC0xMTYsNyArMTE2LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciwKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBt
X3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTUx
ZDUxZGJlYjFmMTE0ZDcyNzI4NGE4MGI4YmI1MTI1ZDBhZThjLi40NDdjODNhM2VlMTdhZGNmM2Jh
YWQ0NjkwYjU1MWRjNGU4OGI5YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIEpT
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRl
eHQoCi0gICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LAorICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCiAg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAg
ICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0
cnVjdGlvbkNvbnRleHQoCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwKKyAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwK
ICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZp
ZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9zdHJ1Y3R1cmU7IH0KQEAgLTE2Miw4ICsxNjIsOCBAQCBjbGFzcyBKU0FycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBBcnJheUJ1ZmZlciogcG9zc2li
bHlTaGFyZWRCdWZmZXIoKTsKICAgICBKU0FycmF5QnVmZmVyKiB1bnNoYXJlZEpTQnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYyk7CiAgICAgSlNBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRKU0J1ZmZl
cihFeGVjU3RhdGUqIGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB1bnNo
YXJlZEltcGwoKTsKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFy
ZWRJbXBsKCk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdW5zaGFyZWRJbXBsKCk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFyZWRJbXBsKCk7CiAgICAgYm9v
bCBpc05ldXRlcmVkKCkgeyByZXR1cm4gaGFzQXJyYXlCdWZmZXIoKSAmJiAhdmVjdG9yKCk7IH0K
ICAgICB2b2lkIG5ldXRlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCBiOTk1NjdkNDc0
NWNjZWE4Y2M2NzdmZjU3ZmZlMmU3NjI3ZThiYjhjLi5kNWM3MjdmNzRhZjdjZWQzYzNhZmI1MmM3
ZWFkN2FlOTlmNmE4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtNjEsMTQgKzYxLDE0IEBAIGlu
bGluZSBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OmV4aXN0aW5nQnVmZmVySW5CdXR0
ZXJmbHkoKQogICAgIHJldHVybiBidXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIoKS0+YXJyYXlC
dWZmZXIoKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5
QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKK2lubGluZSBSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKIHsKICAgICBy
ZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0VHlwZWRBcnJheUltcGwodGhpcyk7CiB9CiAKLWlubGlu
ZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnVuc2hhcmVk
SW1wbCgpCitpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6
OnVuc2hhcmVkSW1wbCgpCiB7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJlc3Vs
dCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJl
c3VsdCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQt
PmlzU2hhcmVkKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAzZWY4MzFkNThkNjJmOGVjMDBiNTkwNzM3MzY2NTZh
OTcwYTUyMzc3Li5hY2RkNGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTI1MCwxMyArMjUwLDEz
IEBAIGJvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVyCiBBcnJheUJ1ZmZlciogSlNDZWxsOjpzbG93RG93
bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyopCitSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0NlbGw6OmdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB1
aW50MzJfdCBKU0NlbGw6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBjNDVlZWEzMGU5ODhj
OTcxZjQzMDg1OGEyOWY1N2VjNDkyYmZiOTc3Li4xNDY0YmI1MWQ0MmNlMmMyNzA2OTlkNDUyMDlh
ZWJhNWZlYzdiMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAt
MjUzLDcgKzI1Myw3IEBAIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXJyYXlCdWZmZXIq
IHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJy
YXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJW
aWV3Kik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXgg
ZjRhZmViYjkwZWU3NDRmNDI2MGVjMjhkODUzYjBjZGU3ZDE3Yzg0NC4uMWY2N2ZiZGNhM2UwYzk5
Zjc5N2I1ZjY4MWYyZmIxYTAxMjQ4YTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBKU0RhdGFWaWV3OjpKU0Rh
dGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIq
IGJ1ZmZlcgogfQogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCi0gICAgRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
cGFzc2VkQnVmZmVyLAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwotICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2
ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVv
Zih1aW50OF90KSkpIHsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBpZiAoIUFycmF5QnVmZmVy
Vmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdl
IG9mIGJ1ZmZlciIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTYwLDcg
KzYwLDcgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAotICAgICAg
ICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0aW9u
Q29udGV4dDo6RGF0YVZpZXcpOworICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlci5jb3B5UmVmKCks
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsK
ICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgSlNEYXRhVmlldyogcmVzdWx0ID0KICAgICAgICAg
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmlldz4odm0uaGVhcCkpIEpTRGF0YVZp
ZXcodm0sIGNvbnRleHQsIGJ1ZmZlci5nZXQoKSk7CkBAIC05MiwxMiArOTIsMTIgQEAgYm9vbCBK
U0RhdGFWaWV3OjpzZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8RGF0YVZpZXc+IEpTRGF0YVZpZXc6OnBvc3Np
Ymx5U2hhcmVkVHlwZWRJbXBsKCkKK1JlZlB0cjxEYXRhVmlldz4gSlNEYXRhVmlldzo6cG9zc2li
bHlTaGFyZWRUeXBlZEltcGwoKQogewogICAgIHJldHVybiBEYXRhVmlldzo6Y3JlYXRlKHBvc3Np
Ymx5U2hhcmVkQnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQogCi1QYXNzUmVm
UHRyPERhdGFWaWV3PiBKU0RhdGFWaWV3Ojp1bnNoYXJlZFR5cGVkSW1wbCgpCitSZWZQdHI8RGF0
YVZpZXc+IEpTRGF0YVZpZXc6OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKICAgICByZXR1cm4gRGF0
YVZpZXc6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsK
IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBBcnJheUJ1ZmZlciogSlNEYXRhVmlldzo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmZmVyVmlldyopCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBh
c3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0RhdGFWaWV3OjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNEYXRh
Vmlldzo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqIG9iamVjdCkKIHsKICAg
ICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihvYmplY3QpOwog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IGNhZTNhOTI4ZGRiMWVh
OWY2ZjI3NGFlZjA4YTNmOGU0NGNmMjM1NGUuLmY0MjAzMmU5YzMxMTc3NWZmZjRkZjUwMDYzMzNi
MGNkNjUxMzk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgCiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAgICAgRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCisgICAgICAgIEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwKICAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0
aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2Ug
dG8KQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKICAgICB9CiAgICAgCi0gICAgUGFz
c1JlZlB0cjxEYXRhVmlldz4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKLSAgICBQYXNzUmVm
UHRyPERhdGFWaWV3PiB1bnNoYXJlZFR5cGVkSW1wbCgpOworICAgIFJlZlB0cjxEYXRhVmlldz4g
cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8RGF0YVZpZXc+IHVuc2hhcmVk
VHlwZWRJbXBsKCk7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9IFR5cGVEYXRhVmlldzsKIApAQCAtNzEsNyArNzEsNyBAQCBjbGFz
cyBKU0RhdGFWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICBzdGF0aWMgQXJyYXlCdWZm
ZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlC
dWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVk
QXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA2MTA5NzA2NjY4MGI3MTgxM2RjZDA5OTU1
Y2YzYjE5NWQ5MWU5OTQzLi44YTc2Y2FiOTc1NTQ5NTYyYWIzNzliY2RmMjBjNzZlOTk2NzA4YjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEwNyw5ICsxMDcsOSBAQCBjbGFzcyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgc3RhdGljIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdp
dGhGYXN0VmVjdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9p
ZCogdmVjdG9yKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IGltcGwpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVj
dHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gaW1wbCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsg
fQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQpAQCAtMjI1LDggKzIyNSw4IEBAIGNs
YXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsK
ICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgogICAgIGJvb2wg
c2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmpl
Y3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9i
c2VydmFibGUpOwogICAgIAotICAgIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5
cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7Ci0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8dHlwZW5h
bWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CisgICAgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjkxLDcgKzI5
MSw3IEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZm
ZXJWaWV3IHsKICAgICAvLyBBbGxvY2F0ZXMgdGhlIGZ1bGwtb24gbmF0aXZlIGJ1ZmZlciBhbmQg
bW92ZXMgZGF0YSBpbnRvIHRoZSBDIGhlYXAgaWYKICAgICAvLyBuZWNlc3NhcnkuIE5vdGUgdGhh
dCB0aGlzIG5ldmVyIGFsbG9jYXRlcyBpbiB0aGUgR0MgaGVhcC4KICAgICBzdGF0aWMgQXJyYXlC
dWZmZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJy
YXlCdWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAKIHByaXZhdGU6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJv
dyBvbiBlcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCmluZGV4IDQ0OGFiOTJjODRlNjc2MGI4NzU2MDQzN2U5NWFjYmU4YjNlN2UzN2UuLjNlZTk1
YTA5NTAwNzdjYTQ4ZGNiZDUxM2M4ZGFhMzg1YWE2N2VmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTM1LDcgKzEzNSw3IEBAIGlubGlu
ZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhF
eGVjU3RhdGUqIGV4ZWMsIFN0CiAgICAgICAgIH0KIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1ZmZl
ciwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gVmlld0NsYXNzOjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCmluZGV4IDYyMWRlMjU1OWFjMDZiNjU0MTM0YTVjODJhOTNmMDI1MGZhYjRjMjIu
LmYwMTk2NTliYzI1MDYzMmRiNTJhNzRhZTVlYWM4NzZiYzY2OTk1NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCkBAIC05NywxNCArOTcsMTQgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXQKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IHBhc3NlZEJ1ZmZlciwKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUpKSB7CisgICAg
QVNTRVJUKGJ1ZmZlcik7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdl
TGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkxlbmd0aCBv
dXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJCeXRlIG9mZnNldCBp
cyBub3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIENv
bnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2bSwgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVPZmZz
ZXQsIGxlbmd0aCk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9CiAgICAgICAgIG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFw
KSkKQEAgLTEyMywxMCArMTIzLDkgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBpbXBs
KQorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4mJiBpbXBsKQogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBDb25zdHJ1Y3Rpb25Db250ZXh0
IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBpbXBsLT5ieXRlT2Zmc2V0KCksIGltcGwt
Pmxlbmd0aCgpKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVy
ZSwgaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKSwgaW1wbC0+Ynl0ZU9mZnNldCgpLCBpbXBs
LT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCkBAIC0xMzgsOSArMTM3LDkgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCi0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gaW1wbCkKKyAg
ICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCkKIHsKLSAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBpbXBsKTsKKyAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTMyMiwxMyArMzIxLDEzIEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1w
bCgpCitSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpCiB7CiAgICAgcmV0dXJu
IEFkYXB0b3I6OlZpZXdUeXBlOjpjcmVhdGUocG9zc2libHlTaGFyZWRCdWZmZXIoKSwgYnl0ZU9m
ZnNldCgpLCBsZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1QYXNz
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwoKQorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwoKQogewogICAgIHJldHVybiBBZGFwdG9yOjpWaWV3VHlwZTo6Y3JlYXRlKHVuc2hhcmVk
QnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQpAQCAtNTkwLDggKzU4OSw3IEBA
IEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Omdl
dFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KiBvYmplY3QpCiB7CiAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5
cGVkSW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmgKaW5kZXggODc0YmFhNjIxYjMwNjQyYTcwM2I4YTgwNmFkMzdjNTk2ZGUxMTYxMi4uMmNiY2Fk
Mzk1M2RkOTcxNjllYmIzMTVhZWVlZTY2NzM3YjI1YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBAIC01NTYsNyArNTU2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKFZNJnYKIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCi0gICAgICAgICAgICBleGVj
LCBzdHJ1Y3R1cmUsIGFycmF5QnVmZmVyLAorICAgICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBX
VEZNb3ZlKGFycmF5QnVmZmVyKSwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmJ5dGVPZmZzZXQo
KSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemUsCiAgICAgICAgICAgICBsZW5ndGgp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwCmluZGV4IGI4OGQ5ZjQyZDdkZGM1NmRlZmNhMjcyZmIwZjBjMGY3NTQzYWJlOWYuLjE2
OTMwOGVmM2IxMjMzMTQxYmY5MzlmZGM5YzMyZTc3ZTA2MDFkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCkBAIC00OSw5ICs0OSw5IEBA
IE1BS0VfU19JTkZPKFVpbnQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZP
KEZsb2F0NjQpOwogCi1KU1VpbnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgcGFz
c2VkQnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitKU1VpbnQ4
QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEpTVWludDhBcnJheTo6Y3JlYXRl
KGV4ZWMsIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPFJlZlB0cjxBcnJheUJ1ZmZlcj4+KHBhc3Nl
ZEJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIEpTVWludDhBcnJheTo6
Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5
QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTY4NzYxMTZmMjE2ZjA3ZmI4
NDExOTJkYTM0MmIzYWE4M2Y5NzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlCYXNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVibGlj
IEFycmF5QnVmZmVyVmlldyB7Ci1wdWJsaWM6Ci0gICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihiYXNlQWRkcmVzcygpKTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRB
cnJheUJhc2U8VD4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1
cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29s
IHNldFJhbmdlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZz
ZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhTGVuZ3RoICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXpl
b2YoVCkpOwotICAgIH0KLQotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAq
IHNpemVvZihUKSwgbGVuZ3RoICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlk
ZGVuIGZyb20gQXJyYXlCdWZmZXJWaWV3LiBUaGlzIG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YK
LSAgICAvLyBydWxlcyBhYm91dCBpbmhlcml0YW5jZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNs
YXNzZXMsIGFuZAotICAgIC8vIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRv
IHN1YmNsYXNzZXMuCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2xlbmd0aDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwot
ICAgIH0KLQotICAgIC8vIEludm9rZWQgYnkgdGhlIGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBw
ZXJmb3JtIHJhbmdlIGNoZWNrczsgY2FsbGVyCi0gICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRv
aW5nIHNvIGFuZCByZXR1cm5pbmcgdW5kZWZpbmVkIGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAg
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAg
ICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVy
ZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJy
YXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7
Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVmZmVyLmdldCgpKQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5y
ZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNs
YXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoY29uc3QgVCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9
IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKLSAgICAgICAgaWYgKGEpCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgYS0+
c2V0KGksIGFycmF5W2ldKTsKLSAgICAgICAgcmV0dXJuIGEucmVsZWFzZSgpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUmVmUHRyPFN1YmNsYXNz
PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZihidWZmZXIpOwotICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdlPFQ+KGJ1ZiwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRp
YyBSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVm
ZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBj
cmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIFJlZlB0cjxTdWJjbGFzcz4gc3ViYXJy
YXlJbXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG9mZnNldCwgbGVuZ3RoOwotICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQs
IGVuZCwgbV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOwotICAgICAgICBjbGFtcE9mZnNldEFu
ZE51bUVsZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgp
OwotICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5n
dGgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQotICAgIHsKLSAgICAgICAg
QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKTsKLSAgICAgICAgbV9sZW5ndGggPSAwOwotICAgIH0K
LQotICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmly
dHVhbCBmdW5jdGlvbiBpbiBzdWJjbGFzc2VzLAotICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBw
cm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi11c2luZyBKU0M6OlR5cGVkQXJyYXlCYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggNGE3NDFiNzk5MWNjZWZiMDUyZjViOTQ3M2Y4NjlkMTEwYTgxOWUxZi4uYzk5MDRj
MDkxZjYwYWNiMzE4YTBhNDQ3N2U1NzMyYTc5MjY5YTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xODU2LDM0
ICsxODU2LDM0IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJh
eUJ1ZmZlcih2bSwgYXJyYXlCdWZmZXJPYmopOwogICAgICAgICBzd2l0Y2ggKGFycmF5QnVmZmVy
Vmlld1N1YnRhZykgewogICAgICAgICBjYXNlIERhdGFWaWV3VGFnOgotICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gZ2V0SlNWYWx1ZShEYXRhVmlldzo6Y3JlYXRlKGFycmF5QnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9
IGdldEpTVmFsdWUoRGF0YVZpZXc6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBJbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRv
SlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGNhc2UgVWludDhBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6Y3JlYXRl
KGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6
Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQ4Q2xhbXBlZEFycmF5
VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFs
T2JqZWN0LCBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFy
cmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlC
dWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5OjpjcmVh
dGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAg
YXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5
OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDE2QXJyYXlUYWc6
Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmpl
Y3QsIFVpbnQxNkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIEludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pT
KG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcg
PSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDMyQXJyYXk6
OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAg
ICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQz
MkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgRmxvYXQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEZsb2F0MzJBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIEZsb2F0NjRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVy
VmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5OjpjcmVhdGUo
YXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDY0QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGI3NGNhYjQ3MTZiYTkx
MmJlOWY2NWY5MmQ4ZDU5OWIxMmJhZjM1M2UuLjZmYjc3YzA3YTJmYTcyMDkyY2JlZTcwODFmYTIw
ZmZlMzM0MDk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNzIsNyArNzIsOCBAQCBF
eGNlcHRpb25PcjxSZWY8Rm9udEZhY2U+PiBGb250RmFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBmYQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fSwKICAgICAgICAgWyZdIChSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikgLT4gRXhj
ZXB0aW9uT3I8dm9pZD4gewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKTsKKyAgICAgICAgICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gSlNDOjpVaW50
OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogICAg
ICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHBvcHVsYXRlRm9udEZh
Y2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5nKCksIGFycmF5QnVmZmVyVmlldy5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
aW5kZXggN2FiN2VjYmU2MTRhNWM0ZjEzY2U2NjNkYmRmMjlkMmQ3NjVhMmZmZS4uNmE3YWZmNzFj
NThiNDNiODJhYzBmYjVkOTA3Y2M1YWUyOTVhYjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVk
aWEuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGFWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9U
eXBlZEFycmF5SW5saW5lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVWludDE2QXJyYXkuaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpAQCAtMTAyOCw3ICsxMDI5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gaW5pdERhdGEtPnVuc2hhcmVkQnVmZmVy
KCk7CiAKICAgICAvLyBVc2UgYSBEYXRhVmlldyB0byByZWFkIHVpbnQzMiB2YWx1ZXMgZnJvbSB0
aGUgYnVmZmVyLCBhcyBVaW50MzJBcnJheSByZXF1aXJlcyB0aGUgcmVhZHMgYmUgYWxpZ25lZCBv
biA0LWJ5dGUgYm91bmRhcmllcy4gCi0gICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRh
VmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFC
dWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRh
VmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAs
IGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIHVpbnQzMl90IG9mZnNldCA9IDA7
CiAgICAgYm9vbCBzdGF0dXMgPSB0cnVlOwogCkBAIC0xMDM3LDcgKzEwMzgsNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2VydGlm
aWNhdGVGcm9tSW5pdERhdAogICAgIGlmICghc3RhdHVzIHx8IG9mZnNldCArIGtleVVSSUxlbmd0
aCA+IGluaXREYXRhLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVm
UHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERh
dGFCdWZmZXIsIG9mZnNldCwga2V5VVJJTGVuZ3RoKTsKKyAgICBSZWZQdHI8VWludDE2QXJyYXk+
IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVm
KCksIG9mZnNldCwga2V5VVJJTGVuZ3RoKTsKICAgICBpZiAoIWtleVVSSUFycmF5KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTEwNDksNyArMTA1MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRDZXJ0aWZpY2F0ZUZyb21J
bml0RGF0CiAgICAgaWYgKCFzdGF0dXMgfHwgb2Zmc2V0ICsga2V5SURMZW5ndGggPiBpbml0RGF0
YS0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50OEFy
cmF5PiBrZXlJREFycmF5ID0gVWludDhBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCBvZmZz
ZXQsIGtleUlETGVuZ3RoKTsKKyAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5SURBcnJheSA9IFVp
bnQ4QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIG9mZnNldCwga2V5SURM
ZW5ndGgpOwogICAgIGlmICgha2V5SURBcnJheSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0xMDYxLDcgKzEwNjIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
ZXh0cmFjdEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdAogICAgIGlmICghc3Rh
dHVzIHx8IG9mZnNldCArIGNlcnRpZmljYXRlTGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjZXJ0aWZpY2F0ZSA9IFVpbnQ4QXJyYXk6OmNy
ZWF0ZShpbml0RGF0YUJ1ZmZlciwgb2Zmc2V0LCBjZXJ0aWZpY2F0ZUxlbmd0aCk7CisgICAgY2Vy
dGlmaWNhdGUgPSBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIG9m
ZnNldCwgY2VydGlmaWNhdGVMZW5ndGgpOwogICAgIGlmICghY2VydGlmaWNhdGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggY2JkMGMzYzViNDIzMDcwOGU5
YjFmNmNkNWM3ZTM5Njg2ZTg4NmRlNC4uZTRkMGY5MTY5ZDQyNTRiMjlkZTMzODQ1N2EyNjlmNGIw
MzQ1Y2IyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC0xOTExLDEzICsxOTExLDE0IEBAIGJvb2wg
QVZGV3JhcHBlcjo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQ0ZBc3NldFJlc291
cmNlTG9hZGluZ1JlcXVlc3RSCiAgICAgICAgIC8vIFs0IGJ5dGVzOiBrZXlVUkkgc2l6ZV0sIFtr
ZXlVUkkgc2l6ZSBieXRlczoga2V5VVJJXQogICAgICAgICB1bnNpZ25lZCBrZXlVUklTaXplID0g
a2V5VVJJLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKICAgICAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBpbml0RGF0YUJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoNCArIGtleVVSSVNpemUs
IDEpOwotICAgICAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpE
YXRhVmlldzo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICAgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpT
Qzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGluaXREYXRh
QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJf
dD4oMCwga2V5VVJJU2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBr
ZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDQsIGtleVVS
SS5sZW5ndGgoKSk7CisgICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBV
aW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxl
bmd0aCgpKTsKICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDE2X3QqPihTdHJpbmdWaWV3KGtleVVSSSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
KCkuZ2V0KCkpLCBrZXlVUkkubGVuZ3RoKCkgLyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwog
Ci0gICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUo
V1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpZiAoIW1f
b3duZXItPnBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25BVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDI2MTU2YWMxZjczMjNjNjY4YTgzZjZkODY0Mzgx
ZmYyZDcwMzUxMGQuLjI5OTBmN2M4MzFlYjlhYTNkZTlmZjllYTQ4ZThmNmFhOGM0YzAzYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25P
YmpDLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldC5o
PgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRSZXNvdXJjZUxvYWRlci5oPgogI2ltcG9y
dCA8b2JqYy9vYmpjLXJ1bnRpbWUuaD4KKyNpbXBvcnQgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGlu
ZXMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUktf
T1BUSU9OQUwoQVZGb3VuZGF0aW9uKQpAQCAtMTAwLDcgKzEwMSw4IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQzo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYKICAgICBkZXN0aW5hdGlvblVSTCA9IFN0cmluZygpOwogCiAgICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBrZXlSZXF1ZXN0QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShba2V5UmVx
dWVzdC5nZXQoKSBieXRlc10sIFtrZXlSZXF1ZXN0LmdldCgpIGxlbmd0aF0pOwotICAgIHJldHVy
biBVaW50OEFycmF5OjpjcmVhdGUoa2V5UmVxdWVzdEJ1ZmZlciwgMCwga2V5UmVxdWVzdEJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0ga2V5UmVxdWVzdEJ1
ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIHJldHVybiBVaW50OEFycmF5OjpjcmVhdGUoV1RGTW92
ZShrZXlSZXF1ZXN0QnVmZmVyKSwgMCwgYnl0ZUxlbmd0aCk7CiB9CiAKIHZvaWQgQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM6OnJlbGVhc2VLZXlzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDE2OGZhZDFjNmYxNjhhOThjNmM4YWIyYTliMDA4NTc1MzlmYTZkZmMuLmYwMzhkYTA1YTg3
YTM1ZDRjMWZkY2E0NzZmYWY5MmNhMjQzMTRhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMTc3MCwxOSArMTc3MCwyMiBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFzc2V0UgogICAgICAgICAv
LyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0KICAg
ICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihVQ2hh
cik7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBBcnJheUJ1
ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKLSAgICAgICAgUmVmUHRyPEpTQzo6RGF0
YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZl
ciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgICAgICBSZWZQdHI8
SlNDOjpEYXRhVmlldz4gaW5pdERhdGFWaWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGluaXRE
YXRhQnVmZmVyLmNvcHlSZWYoKSwgMCwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGluaXREYXRhVmll
dy0+c2V0PHVpbnQzMl90PigwLCBrZXlVUklTaXplLCB0cnVlKTsKIAotICAgICAgICBSZWZQdHI8
VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1
ZmZlciwgNCwga2V5VVJJLmxlbmd0aCgpKTsKKyAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBr
ZXlVUklBcnJheSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigp
LCA0LCBrZXlVUkkubGVuZ3RoKCkpOwogICAgICAgICBrZXlVUklBcnJheS0+c2V0UmFuZ2UoU3Ry
aW5nVmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBrZXlVUkkubGVuZ3RoKCkg
LyBzaXplb2YodW5zaWduZWQgY2hhciksIDApOwogCi0gICAgICAgIFJlZlB0cjxVaW50OEFycmF5
PiBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgMCwgaW5pdERh
dGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0
RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGluaXREYXRhQnVmZmVyKSwgMCwgYnl0
ZUxlbmd0aCk7CiAgICAgICAgIGlmICghcGxheWVyKCktPmtleU5lZWRlZChpbml0RGF0YS5nZXQo
KSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgbV9rZXlVUklUb1JlcXVl
c3RNYXAuc2V0KGtleVVSSSwgYXZSZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fSBlbHNlIGlmIChzY2hlbWUgPT0gImNsZWFya2V5IikgeworICAgIH0KKworICAgIGlmIChzY2hl
bWUgPT0gImNsZWFya2V5IikgewogICAgICAgICBTdHJpbmcga2V5SUQgPSBbW1thdlJlcXVlc3Qg
cmVxdWVzdF0gVVJMXSByZXNvdXJjZVNwZWNpZmllcl07CiAgICAgICAgIFN0cmluZ1ZpZXcga2V5
SURWaWV3KGtleUlEKTsKICAgICAgICAgQ1N0cmluZyB1dGY4RW5jb2RlZEtleUlkID0gVVRGOEVu
Y29kaW5nKCkuZW5jb2RlKGtleUlEVmlldywgVVJMRW5jb2RlZEVudGl0aWVzRm9yVW5lbmNvZGFi
bGVzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301874</attachid>
            <date>2017-02-16 20:42:29 -0800</date>
            <delta_ts>2017-02-16 20:42:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168455-20170217133951.patch</filename>
            <type>text/plain</type>
            <size>59377</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZmVlNGE4ODBkM2MzYzI2ZmIyOGVlZDIzYjI0ODExMzAwYzA3NTRlLi44ODhiNGFkMjg1MTY4MjZi
MmU1Yzc4MjA3NDJiNWY2ZWYxY2ZlYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaW5hbGx5IGRyb3BzIGFsbCB0aGUgUGFzc1JlZlB0ciBpbiBKU0MuCisgICAgICAgIFdlIGNo
YW5nZWQgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gdG8gUmVmUHRyPEFycmF5QnVmZmVyPiYmLgor
ICAgICAgICBTaW5jZSBBcnJheUJ1ZmZlciBtYXkgYmUgbnVsbHB0ciBpZiB0aGUgYXJyYXkgaXMg
bmV1dGVyZWQsCisgICAgICAgIHdlIGhvbGQgaXQgYXMgUmVmUHRyPD4gaW5zdGVhZCBvZiBSZWY8
Pi4KKworICAgICAgICBBbmQgd2UgYWxzbyBkcm9wcyAyIGZpbGVzLCBUeXBlZEFycmF5QmFzZS5o
IGFuZCBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmguCisgICAgICAgIFRoZXkgYXJlIG5vdCB1c2Vk
IChhbmQgdGhleSBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgcHJvamVjdCBmaWxlKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6CisgICAgICAgIChK
U0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSk6CisgICAgICAg
ICogcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6
SlNBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAg
ICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpw
b3NzaWJseVNoYXJlZFR5cGVkSW1wbCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnVuc2hh
cmVkVHlwZWRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Z2V0VHlwZWRBcnJheUlt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Z2V0VHlwZWRBcnJheUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisKIDIwMTctMDItMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0
b3IgQWNjZXNzQ2FzZSB0byBiZSBtb3JlIGxpa2UgQjNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyN2Nk
ZjIyNGIwYzg1ODNlYWRkYThkZGU5MjhlYTg3ZjU4NDE0NjcuLjVhYTVmNDUwNTYzYjcyZWY2YmQw
OGUwZjE1Nzg1YzlmNmQzOGUwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0w
Mi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
SlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0cmFjdEtleVVSSUtl
eUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVz
b3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lv
bkFWRm91bmRhdGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6CisKIDIwMTctMDItMTYg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVzb3Vy
Y2UgVGltaW5nXSBTdXBwb3J0IFJlc291cmNlIFRpbWluZyBpbiBXb3JrZXJzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCmlu
ZGV4IDZhZjQ5MmVmNjA4OWUzYTBlZDM4M2E5MDgwMmU2N2QwY2YxZmY0ZTkuLmVlMWY4YWVhMzQ2
N2Y2OThhOGJmNjk3YWYyNGYyZTAwNzVjZjdhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC0yOSw3ICsyOSw2
IEBACiAjaW5jbHVkZSAiZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJp
bnRlcnByZXRlci9DYWxsRnJhbWUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAx
NmMwNDI4YTlhZGNjYzhkZTQ0NDExNmMyMDI4YmE3YTg0ZDhjNDUzLi4yNGZiZGUxNWU1YjBlNDg5
M2Q1NTk5Nzc5NTExMzE1MWEyNmMyNzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjU1Niw3
ICsyNTU2LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRvbGxhckFn
ZW50UmVjZWl2ZUJyb2FkY2FzdChFeGVjU3RhdGUqIGV4ZWMKICAgICB9CiAgICAgCiAgICAgUmVm
UHRyPEFycmF5QnVmZmVyPiBuYXRpdmVCdWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1lc3Nh
Z2UtPnJlbGVhc2VDb250ZW50cygpKTsKLSAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpT
QXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJh
eUJ1ZmZlclN0cnVjdHVyZShuYXRpdmVCdWZmZXItPnNoYXJpbmdNb2RlKCkpLCBuYXRpdmVCdWZm
ZXIpOworICAgIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUgPSBuYXRpdmVCdWZm
ZXItPnNoYXJpbmdNb2RlKCk7CisgICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUoc2hhcmluZ01vZGUpLCBXVEZNb3ZlKG5hdGl2ZUJ1ZmZlcikpOwogICAgIAog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNCdWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJW
aWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5j
cHAKaW5kZXggYzBiZWZjNDhhMGRhNzliMzcwZmFhZDEwMjU0OWNhMDc0Y2MwOWI0My4uOWZlZDdj
Nzg2YjZiZTk3YTMxZTU5NDM1MjZjYmJkYmViNjA1MGRhNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC0yOSwxMSArMjksMTEg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBBcnJheUJ1ZmZlclZpZXc6OkFycmF5QnVmZmVyVmlldygK
LSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsCisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0KQogICAgICAgICA6IG1fYnl0
ZU9mZnNldChieXRlT2Zmc2V0KQogICAgICAgICAsIG1faXNOZXV0ZXJhYmxlKHRydWUpCi0gICAg
ICAgICwgbV9idWZmZXIoYnVmZmVyKQorICAgICAgICAsIG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKIHsKICAgICBtX2Jhc2VBZGRyZXNzID0gbV9idWZmZXIgPyAoc3RhdGljX2Nhc3Q8Y2hhcio+
KG1fYnVmZmVyLT5kYXRhKCkpICsgbV9ieXRlT2Zmc2V0KSA6IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDU1ZjM0NmUzYTQz
NTFlNmU0M2VjMGM2NzBlMmU1ZDMxYzFkNjhhNTAuLmU3NmU2ZTI2NTJhY2Y5YWNiMzg0OWUzNDU1
ODljY2Q4OWMzMmU4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiVHlwZWRBcnJheVR5
cGUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDgsMTYgKzQ3LDE2IEBAIGNsYXNzIEFycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgICAgICByZXR1
cm4gIW1fYnVmZmVyIHx8IG1fYnVmZmVyLT5pc05ldXRlcmVkKCk7CiAgICAgfQogICAgIAotICAg
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKKyAg
ICBSZWZQdHI8QXJyYXlCdWZmZXI+IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7
CiAgICAgICAgIGlmIChpc05ldXRlcmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbV9idWZmZXI7CiAgICAgfQog
ICAgIAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QK
KyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHVuc2hhcmVkQnVmZmVyKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHJlc3VsdCA9IHBvc3NpYmx5U2hhcmVkQnVm
ZmVyKCk7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gcmVzdWx0ID0gcG9zc2libHlTaGFy
ZWRCdWZmZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdC0+aXNTaGFyZWQoKSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTAwLDkgKzk5LDkgQEAgY2xhc3Mg
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIFJlZkNvdW50ZWQ8QXJyYXlCdWZmZXJWaWV3PiB7CiAK
ICAgICAvLyBIZWxwZXIgdG8gdmVyaWZ5IHRoYXQgYSBnaXZlbiBzdWItcmFuZ2Ugb2YgYW4gQXJy
YXlCdWZmZXIgaXMKICAgICAvLyB3aXRoaW4gcmFuZ2UuCi0gICAgc3RhdGljIGJvb2wgdmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBudW1FbGVtZW50cywgc2l6ZV90IHNpemUpCisgICAgc3RhdGlj
IGJvb2wgdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoY29uc3QgQXJyYXlCdWZmZXImIGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHNpemVfdCBzaXplKQogICAg
IHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAg
ICAgaWYgKGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB1bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChieXRlTGVuZ3RoIC0gYnl0
ZU9mZnNldCkgLyBzaXplOwpAQCAtMTE0LDcgKzExMyw3IEBAIGNsYXNzIEFycmF5QnVmZmVyVmll
dyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAgIHZpcnR1YWwgSlNB
cnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSA9IDA7CiAg
ICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJWaWV3KFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0KTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBBcnJheUJ1ZmZlclZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25l
ZCBieXRlT2Zmc2V0KTsKIAogICAgIGlubGluZSBib29sIHNldEltcGwoQXJyYXlCdWZmZXJWaWV3
KiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKQEAgLTEzMCwyMCArMTI5LDIwIEBAIGNsYXNzIEFy
cmF5QnVmZmVyVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogICAg
IC8vIG91dHB1dCBvZmZzZXQgaXMgaW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHVuZGVybHlp
bmcgYnVmZmVyJ3Mgdmlldy4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICBzdGF0aWMg
dm9pZCBjbGFtcE9mZnNldEFuZE51bUVsZW1lbnRzKAotICAgICAgICBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiBidWZmZXIsCisgICAgICAgIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsCiAgICAg
ICAgIHVuc2lnbmVkIGFycmF5Qnl0ZU9mZnNldCwKICAgICAgICAgdW5zaWduZWQgKm9mZnNldCwK
ICAgICAgICAgdW5zaWduZWQgKm51bUVsZW1lbnRzKQogICAgIHsKICAgICAgICAgdW5zaWduZWQg
bWF4T2Zmc2V0ID0gKFVJTlRfTUFYIC0gYXJyYXlCeXRlT2Zmc2V0KSAvIHNpemVvZihUKTsKICAg
ICAgICAgaWYgKCpvZmZzZXQgPiBtYXhPZmZzZXQpIHsKLSAgICAgICAgICAgICpvZmZzZXQgPSBi
dWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgICAgICpvZmZzZXQgPSBidWZmZXIuYnl0ZUxl
bmd0aCgpOwogICAgICAgICAgICAgKm51bUVsZW1lbnRzID0gMDsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAqb2Zmc2V0ID0gYXJyYXlCeXRlT2Zmc2V0ICsgKm9mZnNl
dCAqIHNpemVvZihUKTsKLSAgICAgICAgKm9mZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpLCAqb2Zmc2V0KTsKLSAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVudHMgPSAo
YnVmZmVyLT5ieXRlTGVuZ3RoKCkgLSAqb2Zmc2V0KSAvIHNpemVvZihUKTsKKyAgICAgICAgKm9m
ZnNldCA9IHN0ZDo6bWluKGJ1ZmZlci5ieXRlTGVuZ3RoKCksICpvZmZzZXQpOworICAgICAgICB1
bnNpZ25lZCByZW1haW5pbmdFbGVtZW50cyA9IChidWZmZXIuYnl0ZUxlbmd0aCgpIC0gKm9mZnNl
dCkgLyBzaXplb2YoVCk7CiAgICAgICAgICpudW1FbGVtZW50cyA9IHN0ZDo6bWluKHJlbWFpbmlu
Z0VsZW1lbnRzLCAqbnVtRWxlbWVudHMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DbGFzc0luZm8uaAppbmRleCAyYjIxNTdjZWMyY2NjMzYxOGE5MTQxZTk3MmQ3YjUx
MzJlYTVmNTExLi40ODBhZWEyMjBmNDdlOGYyNTljZWQ5MTU5NTJkN2ViODg1NmE1MTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaApAQCAtOTksNyArOTksNyBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgQXJyYXlCdWZmZXIqICgqU2xvd0Rv
d25BbmRXYXN0ZU1lbW9yeSkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKICAgICBTbG93RG93bkFuZFdh
c3RlTWVtb3J5IHNsb3dEb3duQW5kV2FzdGVNZW1vcnk7CiAgICAgCi0gICAgdHlwZWRlZiBQYXNz
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gKCpHZXRUeXBlZEFycmF5SW1wbCkoSlNBcnJheUJ1ZmZl
clZpZXcqKTsKKyAgICB0eXBlZGVmIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+ICgqR2V0VHlwZWRB
cnJheUltcGwpKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgR2V0VHlwZWRBcnJheUltcGwgZ2V0
VHlwZWRBcnJheUltcGw7CiAKICAgICB0eXBlZGVmIGJvb2wgKCpQcmV2ZW50RXh0ZW5zaW9uc0Z1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwCmluZGV4IGIxMGNhNDAzZTViZDBmMjYwODRlOWNjNzRmOWMw
ZTM2YTJkYzg5ZGIuLjNiNTg3MWJhM2JlMmExZWJjZjQxYjNkN2I3NGVhZjlmNjM2ZWRlOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKQEAgLTMyLDIyICsz
MiwyMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotRGF0YVZpZXc6OkRhdGFWaWV3KFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkKLSAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5dGVPZmZzZXQpCitEYXRh
Vmlldzo6RGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZN
b3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAgICAgLCBtX2J5dGVMZW5ndGgoYnl0ZUxlbmd0aCkK
IHsKIH0KIAogUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKAotICAgIFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxl
bmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERh
dGFWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERhdGFWaWV3KFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCkpOwogfQogCi1SZWY8RGF0YVZpZXc+IERhdGFWaWV3OjpjcmVhdGUoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gcGFzc2VkQnVmZmVyKQorUmVmPERhdGFWaWV3PiBEYXRhVmlldzo6Y3JlYXRlKFJl
ZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgcmV0dXJuIGNyZWF0ZShidWZmZXIsIDAsIGJ1ZmZl
ci0+Ynl0ZUxlbmd0aCgpKTsKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYnVmZmVyLT5ieXRl
TGVuZ3RoKCk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ5dGVMZW5n
dGgpOwogfQogCiBKU0FycmF5QnVmZmVyVmlldyogRGF0YVZpZXc6OndyYXAoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGFWaWV3LmgKaW5kZXggMjI4MTQ3OTVlM2FiNzI2YWQ2NjZlNjk2ZTNkMGU4ZDAx
ODQ1MmMzMC4uNjYzNjNhNzU0MjMzOGRjYmM4YTdlYmRmNTBjOWJlYzA4NDc3YjdjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBAIC0yNywxNyArMjcsMTYgQEAK
IAogI2luY2x1ZGUgIkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9GbGlwQnl0ZXMu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgRGF0YVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3IHsKIHByb3RlY3RlZDoKLSAgICBE
YXRhVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CisgICAgRGF0YVZpZXcoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKTsKICAgICAKIHB1YmxpYzoK
LSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
Ci0gICAgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUmVm
UHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
OworICAgIHN0YXRpYyBSZWY8RGF0YVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYp
OwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFy
cmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3LmgKaW5kZXggZmQ0OGM5Y2NiNTZlYmNjMGE1MDA4MDBlN2YyZWEyNzNlY2E1ZTEzMy4u
MzQ3YjY1MTJkY2Y0MDE5ZWI2YjQ4OThhMGUxZDc0NDVkNGU2M2RkZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKQEAg
LTMzLDEyICszMywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0
b3I+CiBjbGFzcyBHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgQXJyYXlCdWZmZXJWaWV3
IHsKIHByb3RlY3RlZDoKLSAgICBHZW5lcmljVHlwZWRBcnJheVZpZXcoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
UmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3JlYXRlKGNvbnN0IHR5cGVuYW1lIEFkYXB0
b3I6OlR5cGUqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWZQdHI8R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CisgICAgc3RhdGljIFJlZlB0cjxHZW5l
cmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVk
IGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCiAgICAgc3RhdGljIFJlZlB0cjxH
ZW5lcmljVHlwZWRBcnJheVZpZXc+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3Ro
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
aWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCBkYTdhNDUzMTE0MTI4ZjJiYzY4
MzQ5Y2M2YmM1YTYzMTY3MzJkYTJlLi4xYjZkYTU2MWViN2NlYjEzMTJhYTY0OGNkMmU0OTNiNTgy
YjliNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCkBAIC0zMiw4ICszMiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+OjpHZW5lcmljVHlwZWRBcnJheVZpZXcoCi0gICAgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
Ci0gICAgOiBBcnJheUJ1ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQorICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0
aCkKKyAgICA6IEFycmF5QnVmZmVyVmlldyhXVEZNb3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQpCiAg
ICAgLCBtX2xlbmd0aChsZW5ndGgpCiB7CiB9CkBAIC01OCwxMCArNTgsMTAgQEAgUmVmUHRyPEdl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CiBSZWZQdHI8R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+PiBHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmNyZWF0ZSgKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsIHVuc2ln
bmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAg
UmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7Ci0gICAgaWYgKCF2ZXJp
ZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZW9mKHR5cGVu
YW1lIEFkYXB0b3I6OlR5cGUpKQorICAgIEFTU0VSVChidWZmZXIpOworICAgIGlmICghQXJyYXlC
dWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5n
dGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKICAgICAgICAgfHwgIXZlcmlmeUJ5
dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5
cGUpKSkgewogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05NCw3ICs5NCw4IEBA
IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c3ViYXJyYXkoaW50IHN0YXJ0LCBpbnQg
ZW5kKSBjb25zdAogICAgIHVuc2lnbmVkIG9mZnNldCwgbGVuZ3RoOwogICAgIGNhbGN1bGF0ZU9m
ZnNldEFuZExlbmd0aChzdGFydCwgZW5kLCB0aGlzLT5sZW5ndGgoKSwgJm9mZnNldCwgJmxlbmd0
aCk7CiAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7Ci0g
ICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPihidWZmZXIsIGJ5dGVP
ZmZzZXQoKSwgJm9mZnNldCwgJmxlbmd0aCk7CisgICAgQVNTRVJUKGJ1ZmZlcik7CisgICAgY2xh
bXBPZmZzZXRBbmROdW1FbGVtZW50czxBZGFwdG9yOjpUeXBlPigqYnVmZmVyLCBieXRlT2Zmc2V0
KCksICZvZmZzZXQsICZsZW5ndGgpOwogICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCBvZmZzZXQs
IGxlbmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGVncmFsVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzgxNDlmNmYxNTg0YWExYTlhOTZhNDU3MTcwY2MxYjA1MmU4NDcwZi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFn
bWEgb25jZQotCi0jaW5jbHVkZSAiVHlwZWRBcnJheUJhc2UuaCIKLSNpbmNsdWRlIDxsaW1pdHM+
Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotLy8gQmFzZSBjbGFzcyBmb3IgYWxsIFdl
YkdMPFQ+QXJyYXkgdHlwZXMgaG9sZGluZyBpbnRlZ3JhbAotLy8gKG5vbi1mbG9hdGluZy1wb2lu
dCkgdmFsdWVzLgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1j
bGFzcyBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlIDogcHVibGljIFR5cGVkQXJyYXlCYXNlPFQ+IHsK
LXB1YmxpYzoKLSAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgZG91YmxlIHZhbHVlKQotICAg
IHsKLSAgICAgICAgaWYgKGluZGV4ID49IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKSAvLyBDbGFt
cCBOYU4gdG8gMAotICAgICAgICAgICAgdmFsdWUgPSAwOwotICAgICAgICAvLyBUaGUgZG91Ymxl
IGNhc3QgaXMgbmVjZXNzYXJ5IHRvIGdldCB0aGUgY29ycmVjdCB3cmFwcGluZwotICAgICAgICAv
LyBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcyB3aXRoIEludDMyQXJyYXkgYW5kIFVpbnQzMkFycmF5
LgotICAgICAgICBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XSA9IHN0YXRpY19jYXN0
PFQ+KHN0YXRpY19jYXN0PGludDY0X3Q+KHZhbHVlKSk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgSW50ZWdyYWxUeXBlZEFycmF5QmFzZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICAgICAgOiBUeXBlZEFy
cmF5QmFzZTxUPihidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkKLSAgICB7Ci0gICAgfQotCi19
OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheUJ1ZmZlci5jcHAKaW5kZXggN2E3ZmFhYzc3NmEzYzM3MmZiZmZhNWMyNmJmNjE4
MTFiYTY2MWZkMC4uYjI0YjZkYjQ2YTVlYTA5NGRlOGJhODNiYWM4MDIyYWFkOThiN2M0NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjb25zdCBDbGFzc0luZm8gSlNBcnJheUJ1
ZmZlcjo6c19pbmZvID0gewogICAgICJBcnJheUJ1ZmZlciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNBcnJheUJ1ZmZlcil9OwogCi1KU0FycmF5QnVmZmVyOjpKU0Fy
cmF5QnVmZmVyKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IGFycmF5QnVmZmVyKQorSlNBcnJheUJ1ZmZlcjo6SlNBcnJheUJ1ZmZlcihWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIp
CiAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2ltcGwoYXJyYXlCdWZmZXIuZ2V0
KCkpCiB7CkBAIC01MCwxMiArNTAsMTEgQEAgdm9pZCBKU0FycmF5QnVmZmVyOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB9CiAKIEpTQXJyYXlC
dWZmZXIqIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIpCisgICAgVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlcikKIHsK
LSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBKU0Fy
cmF5QnVmZmVyKiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0FycmF5QnVmZmVyPih2bS5oZWFwKSkKLSAgICAgICAgSlNBcnJheUJ1ZmZlcih2bSwgc3RydWN0
dXJlLCBidWZmZXIpOworICAgICAgICBKU0FycmF5QnVmZmVyKHZtLCBzdHJ1Y3R1cmUsIFdURk1v
dmUoYnVmZmVyKSk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaAppbmRleCA1OTI4N2UxN2NiZDc1ZWE4YTFi
ZTc2Y2Y5M2M1N2Y4ZGQ3MTIwYzQzLi45MTQyN2E5MGJkNTlkMzk3ZTYxYzZlM2U2NDM4YTUyYmQ5
YmRiYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
ci5oCkBAIC0zNiwxMiArMzYsMTIgQEAgY2xhc3MgSlNBcnJheUJ1ZmZlciBmaW5hbCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKICAgICAKIHByb3RlY3RlZDoKLSAgICBKU0Fy
cmF5QnVmZmVyKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4pOworICAg
IEpTQXJyYXlCdWZmZXIoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogICAgIAogcHVi
bGljOgogICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZWdpc3RlciB0aGUgbmV3IHdyYXBwZXIg
d2l0aCB0aGUgdm0ncyBUeXBlZEFycmF5Q29udHJvbGxlci4KLSAgICBKU19FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgSlNBcnJheUJ1ZmZlciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4pOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0FycmF5QnVm
ZmVyKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwogCiAg
ICAgQXJyYXlCdWZmZXIqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5jcHAKaW5kZXggYjgwM2Q5NTU5ZDI3YzNmYzQxNmQxNWU5ZGUzZDcwYzhmNmIwZDQ2
ZS4uM2M3NmJmOTVjMjRlMmRlZDUwZGNmNGFiYjc3MTQ5MTNmZTRlNTAzOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlw
ZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBjYWxsZWUtPmdsb2JhbE9iamVjdCgpLT5hcnJheUJ1ZmZl
clN0cnVjdHVyZShuZXdCdWZmZXItPnNoYXJpbmdNb2RlKCkpOwogICAgIAotICAgIEpTQXJyYXlC
dWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBuZXdC
dWZmZXIpOworICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0
ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1ZmZlcikpOwogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCBhM2IzODg4M2VkNzFmNGVmYjk4
NjM3NTQzNTZlNGM3M2MxZjdhYjdmLi43NmI3ZmNkMWYzNzljZmJiNTU4NzQxN2MyNzhkZDUwNTlm
MjMzMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNv
bnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGFycmF5
QnVmZmVyLAorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBhcnJheUJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCkBAIC0xMTYsNyArMTE2LDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNv
bnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRleHQoCiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciwKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyLAogICAgIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZpZXdUYWcpCiAgICAgOiBt
X3N0cnVjdHVyZShzdHJ1Y3R1cmUpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaAppbmRleCA3ZTUx
ZDUxZGJlYjFmMTE0ZDcyNzI4NGE4MGI4YmI1MTI1ZDBhZThjLi40NDdjODNhM2VlMTdhZGNmM2Jh
YWQ0NjkwYjU1MWRjNGU4OGI5YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKQEAgLTEyMiwxMiArMTIyLDEyIEBAIGNsYXNzIEpT
QXJyYXlCdWZmZXJWaWV3IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBDb25z
dHJ1Y3Rpb25Db250ZXh0KFN0cnVjdHVyZSosIHVpbnQzMl90IGxlbmd0aCwgdm9pZCogdmVjdG9y
KTsKICAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIENvbnN0cnVjdGlvbkNvbnRl
eHQoCi0gICAgICAgICAgICBWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+
LAorICAgICAgICAgICAgVk0mLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCiAg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgICAg
ICAKICAgICAgICAgZW51bSBEYXRhVmlld1RhZyB7IERhdGFWaWV3IH07CiAgICAgICAgIENvbnN0
cnVjdGlvbkNvbnRleHQoCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiwKKyAgICAgICAgICAgIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwK
ICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgRGF0YVZp
ZXdUYWcpOwogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9zdHJ1Y3R1cmU7IH0KQEAgLTE2Miw4ICsxNjIsOCBAQCBjbGFzcyBKU0FycmF5QnVmZmVy
VmlldyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBBcnJheUJ1ZmZlciogcG9zc2li
bHlTaGFyZWRCdWZmZXIoKTsKICAgICBKU0FycmF5QnVmZmVyKiB1bnNoYXJlZEpTQnVmZmVyKEV4
ZWNTdGF0ZSogZXhlYyk7CiAgICAgSlNBcnJheUJ1ZmZlciogcG9zc2libHlTaGFyZWRKU0J1ZmZl
cihFeGVjU3RhdGUqIGV4ZWMpOwotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB1bnNo
YXJlZEltcGwoKTsKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFy
ZWRJbXBsKCk7CisgICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdW5zaGFyZWRJbXBsKCk7Cisg
ICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gcG9zc2libHlTaGFyZWRJbXBsKCk7CiAgICAgYm9v
bCBpc05ldXRlcmVkKCkgeyByZXR1cm4gaGFzQXJyYXlCdWZmZXIoKSAmJiAhdmVjdG9yKCk7IH0K
ICAgICB2b2lkIG5ldXRlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAppbmRleCBiOTk1NjdkNDc0
NWNjZWE4Y2M2NzdmZjU3ZmZlMmU3NjI3ZThiYjhjLi5kNWM3MjdmNzRhZjdjZWQzYzNhZmI1MmM3
ZWFkN2FlOTlmNmE4NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaApAQCAtNjEsMTQgKzYxLDE0IEBAIGlu
bGluZSBBcnJheUJ1ZmZlciogSlNBcnJheUJ1ZmZlclZpZXc6OmV4aXN0aW5nQnVmZmVySW5CdXR0
ZXJmbHkoKQogICAgIHJldHVybiBidXR0ZXJmbHkoKS0+aW5kZXhpbmdIZWFkZXIoKS0+YXJyYXlC
dWZmZXIoKTsKIH0KIAotaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0FycmF5
QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKK2lubGluZSBSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBKU0FycmF5QnVmZmVyVmlldzo6cG9zc2libHlTaGFyZWRJbXBsKCkKIHsKICAgICBy
ZXR1cm4gbWV0aG9kVGFibGUoKS0+Z2V0VHlwZWRBcnJheUltcGwodGhpcyk7CiB9CiAKLWlubGlu
ZSBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnVuc2hhcmVk
SW1wbCgpCitpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6
OnVuc2hhcmVkSW1wbCgpCiB7Ci0gICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJlc3Vs
dCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHJl
c3VsdCA9IHBvc3NpYmx5U2hhcmVkSW1wbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQt
PmlzU2hhcmVkKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAppbmRleCAzZWY4MzFkNThkNjJmOGVjMDBiNTkwNzM3MzY2NTZh
OTcwYTUyMzc3Li5hY2RkNGU4OGMwYWYxNGEwOWY3NmJlMmEzYWE1YTE5MGVhNmI4MGUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTI1MCwxMyArMjUwLDEz
IEBAIGJvb2wgSlNDZWxsOjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVyCiBBcnJheUJ1ZmZlciogSlNDZWxsOjpzbG93RG93
bkFuZFdhc3RlTWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyopCitSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0NlbGw6OmdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KikKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB1
aW50MzJfdCBKU0NlbGw6OmdldEVudW1lcmFibGVMZW5ndGgoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAppbmRleCBjNDVlZWEzMGU5ODhj
OTcxZjQzMDg1OGEyOWY1N2VjNDkyYmZiOTc3Li4xNDY0YmI1MWQ0MmNlMmMyNzA2OTlkNDUyMDlh
ZWJhNWZlYzdiMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAt
MjUzLDcgKzI1Myw3IEBAIGNsYXNzIEpTQ2VsbCA6IHB1YmxpYyBIZWFwQ2VsbCB7CiAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3RCeUluZGV4KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgQXJyYXlCdWZmZXIq
IHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJy
YXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJW
aWV3Kik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKaW5kZXgg
ZjRhZmViYjkwZWU3NDRmNDI2MGVjMjhkODUzYjBjZGU3ZDE3Yzg0NC4uMWY2N2ZiZGNhM2UwYzk5
Zjc5N2I1ZjY4MWYyZmIxYTAxMjQ4YTkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBKU0RhdGFWaWV3OjpKU0Rh
dGFWaWV3KFZNJiB2bSwgQ29uc3RydWN0aW9uQ29udGV4dCYgY29udGV4dCwgQXJyYXlCdWZmZXIq
IGJ1ZmZlcgogfQogCiBKU0RhdGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoCi0gICAgRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4g
cGFzc2VkQnVmZmVyLAorICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgdW5zaWduZWQgYnl0ZU9mZnNldCwg
dW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwotICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2
ZXJpZnlTdWJSYW5nZUxlbmd0aChidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVv
Zih1aW50OF90KSkpIHsKKyAgICBBU1NFUlQoYnVmZmVyKTsKKyAgICBpZiAoIUFycmF5QnVmZmVy
Vmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewogICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgc2NvcGUs
IGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJMZW5ndGggb3V0IG9mIHJhbmdl
IG9mIGJ1ZmZlciIpKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTYwLDcg
KzYwLDcgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KAotICAgICAg
ICBzdHJ1Y3R1cmUsIGJ1ZmZlciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgQ29uc3RydWN0aW9u
Q29udGV4dDo6RGF0YVZpZXcpOworICAgICAgICBzdHJ1Y3R1cmUsIGJ1ZmZlci5jb3B5UmVmKCks
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsK
ICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgSlNEYXRhVmlldyogcmVzdWx0ID0KICAgICAgICAg
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNEYXRhVmlldz4odm0uaGVhcCkpIEpTRGF0YVZp
ZXcodm0sIGNvbnRleHQsIGJ1ZmZlci5nZXQoKSk7CkBAIC05MiwxMiArOTIsMTIgQEAgYm9vbCBK
U0RhdGFWaWV3OjpzZXRJbmRleChFeGVjU3RhdGUqLCB1bnNpZ25lZCwgSlNWYWx1ZSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8RGF0YVZpZXc+IEpTRGF0YVZpZXc6OnBvc3Np
Ymx5U2hhcmVkVHlwZWRJbXBsKCkKK1JlZlB0cjxEYXRhVmlldz4gSlNEYXRhVmlldzo6cG9zc2li
bHlTaGFyZWRUeXBlZEltcGwoKQogewogICAgIHJldHVybiBEYXRhVmlldzo6Y3JlYXRlKHBvc3Np
Ymx5U2hhcmVkQnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQogCi1QYXNzUmVm
UHRyPERhdGFWaWV3PiBKU0RhdGFWaWV3Ojp1bnNoYXJlZFR5cGVkSW1wbCgpCitSZWZQdHI8RGF0
YVZpZXc+IEpTRGF0YVZpZXc6OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKICAgICByZXR1cm4gRGF0
YVZpZXc6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCksIGxlbmd0aCgpKTsK
IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBBcnJheUJ1ZmZlciogSlNEYXRhVmlldzo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmZmVyVmlldyopCiAgICAgcmV0dXJuIDA7CiB9CiAKLVBh
c3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBKU0RhdGFWaWV3OjpnZXRUeXBlZEFycmF5SW1wbChK
U0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNEYXRh
Vmlldzo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqIG9iamVjdCkKIHsKICAg
ICBKU0RhdGFWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTRGF0YVZpZXcqPihvYmplY3QpOwog
ICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCmluZGV4IGNhZTNhOTI4ZGRiMWVh
OWY2ZjI3NGFlZjA4YTNmOGU0NGNmMjM1NGUuLmY0MjAzMmU5YzMxMTc3NWZmZjRkZjUwMDYzMzNi
MGNkNjUxMzk4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3
LmgKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgCiBwdWJsaWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpT
RGF0YVZpZXcqIGNyZWF0ZSgKLSAgICAgICAgRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCisgICAgICAgIEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwKICAgICAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgCiAgICAgLy8gRHVtbXkgbWV0
aG9kcywgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgd29yazsgdGhlc2UgYXJlIGp1c3QgaW4gcGxhY2Ug
dG8KQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBKU0FycmF5QnVm
ZmVyVmlldyB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlcjsKICAgICB9CiAgICAgCi0gICAgUGFz
c1JlZlB0cjxEYXRhVmlldz4gcG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKLSAgICBQYXNzUmVm
UHRyPERhdGFWaWV3PiB1bnNoYXJlZFR5cGVkSW1wbCgpOworICAgIFJlZlB0cjxEYXRhVmlldz4g
cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8RGF0YVZpZXc+IHVuc2hhcmVk
VHlwZWRJbXBsKCk7CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IFR5cGVkQXJyYXlUeXBlIFR5cGVk
QXJyYXlTdG9yYWdlVHlwZSA9IFR5cGVEYXRhVmlldzsKIApAQCAtNzEsNyArNzEsNyBAQCBjbGFz
cyBKU0RhdGFWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsKICAgICBzdGF0aWMgdm9p
ZCBnZXRPd25Ob25JbmRleFByb3BlcnR5TmFtZXMoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAKICAgICBzdGF0aWMgQXJyYXlCdWZm
ZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlC
dWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVk
QXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAgICAgCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAppbmRleCA2MTA5NzA2NjY4MGI3MTgxM2RjZDA5OTU1
Y2YzYjE5NWQ5MWU5OTQzLi44YTc2Y2FiOTc1NTQ5NTYyYWIzNzliY2RmMjBjNzZlOTk2NzA4YjAy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3LmgKQEAgLTEwNyw5ICsxMDcsOSBAQCBjbGFzcyBKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgc3RhdGljIEpTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWdu
ZWQgbGVuZ3RoKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVdp
dGhGYXN0VmVjdG9yKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCwgdm9p
ZCogdmVjdG9yKTsKICAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZVVu
aW5pdGlhbGl6ZWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0
ZShWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IGltcGwpOwotICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKFN0cnVj
dHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3
VHlwZT4gaW1wbCk7CisgICAgc3RhdGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldyogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiYmIGltcGwpOworICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyog
Y3JlYXRlKFN0cnVjdHVyZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiYmIGltcGwpOwogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aCAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsg
fQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemVPZihtX2xlbmd0aCwg
c2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpKTsgfQpAQCAtMjI1LDggKzIyNSw4IEBAIGNs
YXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZmZXJWaWV3IHsK
ICAgICAvLyB0aGVuIGl0IHdpbGwgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLgogICAgIGJvb2wg
c2V0KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIG9mZnNldCwgSlNPYmplY3QqLCB1bnNpZ25lZCBvYmpl
Y3RPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCwgQ29weVR5cGUgdHlwZSA9IENvcHlUeXBlOjpVbm9i
c2VydmFibGUpOwogICAgIAotICAgIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5
cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7Ci0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBB
ZGFwdG9yOjpWaWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKKyAgICBSZWZQdHI8dHlwZW5h
bWUgQWRhcHRvcjo6Vmlld1R5cGU+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCk7CisgICAgUmVm
UHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiB1bnNoYXJlZFR5cGVkSW1wbCgpOwogCiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewpAQCAtMjkxLDcgKzI5
MSw3IEBAIGNsYXNzIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3IDogcHVibGljIEpTQXJyYXlCdWZm
ZXJWaWV3IHsKICAgICAvLyBBbGxvY2F0ZXMgdGhlIGZ1bGwtb24gbmF0aXZlIGJ1ZmZlciBhbmQg
bW92ZXMgZGF0YSBpbnRvIHRoZSBDIGhlYXAgaWYKICAgICAvLyBuZWNlc3NhcnkuIE5vdGUgdGhh
dCB0aGlzIG5ldmVyIGFsbG9jYXRlcyBpbiB0aGUgR0MgaGVhcC4KICAgICBzdGF0aWMgQXJyYXlC
dWZmZXIqIHNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1ZmZlclZpZXcqKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5cGVkQXJyYXlJbXBsKEpTQXJy
YXlCdWZmZXJWaWV3Kik7CisgICAgc3RhdGljIFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGdldFR5
cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3Kik7CiAKIHByaXZhdGU6CiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGFuZCBmYWxzZSBvbiBlcnJvcjsgaXQgd2lsbCB0aHJv
dyBvbiBlcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5l
cy5oCmluZGV4IDQ0OGFiOTJjODRlNjc2MGI4NzU2MDQzN2U5NWFjYmU4YjNlN2UzN2UuLjNlZTk1
YTA5NTAwNzdjYTQ4ZGNiZDUxM2M4ZGFhMzg1YWE2N2VmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTM1LDcgKzEzNSw3IEBAIGlubGlu
ZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhF
eGVjU3RhdGUqIGV4ZWMsIFN0CiAgICAgICAgIH0KIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7
Ci0gICAgICAgIHJldHVybiBWaWV3Q2xhc3M6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIGJ1ZmZl
ciwgb2Zmc2V0LCBsZW5ndGgpOworICAgICAgICByZXR1cm4gVmlld0NsYXNzOjpjcmVhdGUoZXhl
Yywgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIG9mZnNldCwgbGVuZ3RoKTsKICAgICB9CiAg
ICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW5saW5lcy5oCmluZGV4IDYyMWRlMjU1OWFjMDZiNjU0MTM0YTVjODJhOTNmMDI1MGZhYjRjMjIu
LmYwMTk2NTliYzI1MDYzMmRiNTJhNzRhZTVlYWM4NzZiYzY2OTk1NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oCkBAIC05NywxNCArOTcsMTQgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGVVbmlu
aXQKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAotICAg
IEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXI+IHBhc3NlZEJ1ZmZlciwKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVP
ZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1ZmZlcjsKICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZih0
eXBlbmFtZSBBZGFwdG9yOjpUeXBlKTsKLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5
U3ViUmFuZ2VMZW5ndGgoYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemUpKSB7CisgICAg
QVNTRVJUKGJ1ZmZlcik7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdl
TGVuZ3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCwgc2l6ZSkpIHsKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZXhlYywgIkxlbmd0aCBv
dXQgb2YgcmFuZ2Ugb2YgYnVmZmVyIikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CkBAIC0xMTIsNyArMTEyLDcgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJCeXRlIG9mZnNldCBp
cyBub3QgYWxpZ25lZCIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIENv
bnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCh2bSwgc3RydWN0dXJlLCBidWZmZXIsIGJ5dGVPZmZz
ZXQsIGxlbmd0aCk7CisgICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1
cmUsIFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHJlc3VsdCA9CiAgICAgICAgIG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Pih2bS5oZWFw
KSkKQEAgLTEyMywxMCArMTIzLDkgQEAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4q
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBpbXBs
KQorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjx0eXBlbmFtZSBBZGFw
dG9yOjpWaWV3VHlwZT4mJiBpbXBsKQogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKTsKLSAgICBDb25zdHJ1Y3Rpb25Db250ZXh0
IGNvbnRleHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBpbXBsLT5ieXRlT2Zmc2V0KCksIGltcGwt
Pmxlbmd0aCgpKTsKKyAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRleHQodm0sIHN0cnVjdHVy
ZSwgaW1wbC0+cG9zc2libHlTaGFyZWRCdWZmZXIoKSwgaW1wbC0+Ynl0ZU9mZnNldCgpLCBpbXBs
LT5sZW5ndGgoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3KiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0dl
bmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCkBAIC0xMzgsOSArMTM3LDkgQEAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5lcmljVHlwZWRB
cnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVh
dGUoCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCi0gICAgUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gaW1wbCkKKyAg
ICBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCkKIHsKLSAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBpbXBsKTsKKyAgICByZXR1
cm4gY3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRvcj4KQEAgLTMyMiwxMyArMzIxLDEzIEBAIGJv
b2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNldCgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KLVBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1w
bCgpCitSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IEpTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3PEFkYXB0b3I+Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpCiB7CiAgICAgcmV0dXJu
IEFkYXB0b3I6OlZpZXdUeXBlOjpjcmVhdGUocG9zc2libHlTaGFyZWRCdWZmZXIoKSwgYnl0ZU9m
ZnNldCgpLCBsZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1QYXNz
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBlZEltcGwoKQorUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6
OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwoKQogewogICAgIHJldHVybiBBZGFwdG9yOjpWaWV3VHlwZTo6Y3JlYXRlKHVuc2hhcmVk
QnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQpAQCAtNTkwLDggKzU4OSw3IEBA
IEFycmF5QnVmZmVyKiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2xvd0Rvd25B
bmRXYXN0ZU1lbW9yeShKU0FycmF5QnVmCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+
Ci1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4KLUpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyogb2JqZWN0KQorUmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46Omdl
dFR5cGVkQXJyYXlJbXBsKEpTQXJyYXlCdWZmZXJWaWV3KiBvYmplY3QpCiB7CiAgICAgSlNHZW5l
cmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJh
eVZpZXcqPihvYmplY3QpOwogICAgIHJldHVybiB0aGlzT2JqZWN0LT5wb3NzaWJseVNoYXJlZFR5
cGVkSW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmgKaW5kZXggODc0YmFhNjIxYjMwNjQyYTcwM2I4YTgwNmFkMzdjNTk2ZGUxMTYxMi4uMmNiY2Fk
Mzk1M2RkOTcxNjllYmIzMTVhZWVlZTY2NzM3YjI1YzE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCkBAIC01NTYsNyArNTU2LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKFZNJnYKIAogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoVmlld0NsYXNzOjpjcmVhdGUoCi0gICAgICAgICAgICBleGVj
LCBzdHJ1Y3R1cmUsIGFycmF5QnVmZmVyLAorICAgICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBX
VEZNb3ZlKGFycmF5QnVmZmVyKSwKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmJ5dGVPZmZzZXQo
KSArIG9mZnNldCAqIFZpZXdDbGFzczo6ZWxlbWVudFNpemUsCiAgICAgICAgICAgICBsZW5ndGgp
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJh
eXMuY3BwCmluZGV4IGI4OGQ5ZjQyZDdkZGM1NmRlZmNhMjcyZmIwZjBjMGY3NTQzYWJlOWYuLjE2
OTMwOGVmM2IxMjMzMTQxYmY5MzlmZGM5YzMyZTc3ZTA2MDFkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheXMuY3BwCkBAIC00OSw5ICs0OSw5IEBA
IE1BS0VfU19JTkZPKFVpbnQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDMyKTsKIE1BS0VfU19JTkZP
KEZsb2F0NjQpOwogCi1KU1VpbnQ4QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgcGFz
c2VkQnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCitKU1VpbnQ4
QXJyYXkqIGNyZWF0ZVVpbnQ4VHlwZWRBcnJheShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEpTVWludDhBcnJheTo6Y3JlYXRl
KGV4ZWMsIHN0cnVjdHVyZSwgc3RkOjpmb3J3YXJkPFJlZlB0cjxBcnJheUJ1ZmZlcj4+KHBhc3Nl
ZEJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CisgICAgcmV0dXJuIEpTVWludDhBcnJheTo6
Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5n
dGgpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlCYXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5
QmFzZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTY4NzYxMTZmMjE2ZjA3ZmI4
NDExOTJkYTM0MmIzYWE4M2Y5NzFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJyYXlCYXNl
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMpIDIw
MTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCi0jaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCi0KLW5hbWVzcGFjZSBKU0Mg
ewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIFR5cGVkQXJyYXlCYXNlIDogcHVibGlj
IEFycmF5QnVmZmVyVmlldyB7Ci1wdWJsaWM6Ci0gICAgVCogZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFQqPihiYXNlQWRkcmVzcygpKTsgfQotCi0gICAgYm9vbCBzZXQoVHlwZWRB
cnJheUJhc2U8VD4qIGFycmF5LCB1bnNpZ25lZCBvZmZzZXQpCi0gICAgewotICAgICAgICByZXR1
cm4gc2V0SW1wbChhcnJheSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBib29s
IHNldFJhbmdlKGNvbnN0IFQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB1bnNpZ25lZCBvZmZz
ZXQpCi0gICAgewotICAgICAgICByZXR1cm4gc2V0UmFuZ2VJbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBkYXRhTGVuZ3RoICogc2l6ZW9mKFQpLCBvZmZzZXQgKiBzaXpl
b2YoVCkpOwotICAgIH0KLQotICAgIGJvb2wgemVyb1JhbmdlKHVuc2lnbmVkIG9mZnNldCwgc2l6
ZV90IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB6ZXJvUmFuZ2VJbXBsKG9mZnNldCAq
IHNpemVvZihUKSwgbGVuZ3RoICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICAvLyBPdmVycmlk
ZGVuIGZyb20gQXJyYXlCdWZmZXJWaWV3LiBUaGlzIG11c3QgYmUgcHVibGljIGJlY2F1c2Ugb2YK
LSAgICAvLyBydWxlcyBhYm91dCBpbmhlcml0YW5jZSBvZiBtZW1iZXJzIGluIHRlbXBsYXRlIGNs
YXNzZXMsIGFuZAotICAgIC8vIGJlY2F1c2UgaXQgaXMgYWNjZXNzZWQgdmlhIHBvaW50ZXJzIHRv
IHN1YmNsYXNzZXMuCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2xlbmd0aDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5n
dGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVuZ3RoICogc2l6ZW9mKFQpOwot
ICAgIH0KLQotICAgIC8vIEludm9rZWQgYnkgdGhlIGluZGV4ZWQgZ2V0dGVyLiBEb2VzIG5vdCBw
ZXJmb3JtIHJhbmdlIGNoZWNrczsgY2FsbGVyCi0gICAgLy8gaXMgcmVzcG9uc2libGUgZm9yIGRv
aW5nIHNvIGFuZCByZXR1cm5pbmcgdW5kZWZpbmVkIGFzIG5lY2Vzc2FyeS4KLSAgICBUIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklU
WV9JTVBMSUNBVElPTihpbmRleCA8IFR5cGVkQXJyYXlCYXNlPFQ+OjptX2xlbmd0aCk7Ci0gICAg
ICAgIHJldHVybiBUeXBlZEFycmF5QmFzZTxUPjo6ZGF0YSgpW2luZGV4XTsKLSAgICB9Ci0KLSAg
ICBib29sIGNoZWNrSW5ib3VuZERhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBwb3MpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG9mZnNldCA8PSBtX2xlbmd0aAotICAgICAgICAg
ICAgJiYgb2Zmc2V0ICsgcG9zIDw9IG1fbGVuZ3RoCi0gICAgICAgICAgICAvLyBjaGVjayBvdmVy
ZmxvdwotICAgICAgICAgICAgJiYgb2Zmc2V0ICsgcG9zID49IG9mZnNldCk7Ci0gICAgfQotCi1w
cm90ZWN0ZWQ6Ci0gICAgVHlwZWRBcnJheUJhc2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogQXJy
YXlCdWZmZXJWaWV3KGJ1ZmZlciwgYnl0ZU9mZnNldCkKLSAgICAgICAgLCBtX2xlbmd0aChsZW5n
dGgpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7
Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0
ZShsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVmZmVyLmdldCgpKQotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBjcmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5y
ZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNs
YXNzPgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN1YmNsYXNzPiBjcmVhdGUoY29uc3QgVCogYXJy
YXksIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxTdWJjbGFzcz4gYSA9
IGNyZWF0ZTxTdWJjbGFzcz4obGVuZ3RoKTsKLSAgICAgICAgaWYgKGEpCi0gICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgYS0+
c2V0KGksIGFycmF5W2ldKTsKLSAgICAgICAgcmV0dXJuIGEucmVsZWFzZSgpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUmVmUHRyPFN1YmNsYXNz
PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zm
c2V0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+
IGJ1ZihidWZmZXIpOwotICAgICAgICBpZiAoIXZlcmlmeVN1YlJhbmdlPFQ+KGJ1ZiwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3ViY2xhc3MoYnVmLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgbGVu
Z3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIHN0YXRp
YyBSZWZQdHI8U3ViY2xhc3M+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6
Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIHNpemVvZihUKSk7Ci0gICAgICAgIGlmICghYnVm
ZmVyLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBj
cmVhdGU8U3ViY2xhc3M+KGJ1ZmZlci5yZWxlYXNlKCksIDAsIGxlbmd0aCk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPGNsYXNzIFN1YmNsYXNzPgotICAgIFJlZlB0cjxTdWJjbGFzcz4gc3ViYXJy
YXlJbXBsKGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IG9mZnNldCwgbGVuZ3RoOwotICAgICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQs
IGVuZCwgbV9sZW5ndGgsICZvZmZzZXQsICZsZW5ndGgpOwotICAgICAgICBjbGFtcE9mZnNldEFu
ZE51bUVsZW1lbnRzPFQ+KGJ1ZmZlcigpLCBtX2J5dGVPZmZzZXQsICZvZmZzZXQsICZsZW5ndGgp
OwotICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIoKSwgb2Zmc2V0LCBsZW5n
dGgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBuZXV0ZXIoKQotICAgIHsKLSAgICAgICAg
QXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKTsKLSAgICAgICAgbV9sZW5ndGggPSAwOwotICAgIH0K
LQotICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUgdG8gYWNjZXNzIHRoaXMgdmlhIGEgdmly
dHVhbCBmdW5jdGlvbiBpbiBzdWJjbGFzc2VzLAotICAgIC8vIHdoaWNoIGlzIHdoeSBpdCBpcyBw
cm90ZWN0ZWQgcmF0aGVyIHRoYW4gcHJpdmF0ZS4KLSAgICB1bnNpZ25lZCBtX2xlbmd0aDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi11c2luZyBKU0M6OlR5cGVkQXJyYXlCYXNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggNGE3NDFiNzk5MWNjZWZiMDUyZjViOTQ3M2Y4NjlkMTEwYTgxOWUxZi4uYzk5MDRj
MDkxZjYwYWNiMzE4YTBhNDQ3N2U1NzMyYTc5MjY5YTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xODU2LDM0
ICsxODU2LDM0IEBAIGNsYXNzIENsb25lRGVzZXJpYWxpemVyIDogQ2xvbmVCYXNlIHsKICAgICAg
ICAgUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciA9IHRvUG9zc2libHlTaGFyZWRBcnJh
eUJ1ZmZlcih2bSwgYXJyYXlCdWZmZXJPYmopOwogICAgICAgICBzd2l0Y2ggKGFycmF5QnVmZmVy
Vmlld1N1YnRhZykgewogICAgICAgICBjYXNlIERhdGFWaWV3VGFnOgotICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gZ2V0SlNWYWx1ZShEYXRhVmlldzo6Y3JlYXRlKGFycmF5QnVmZmVyLCBi
eXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9
IGdldEpTVmFsdWUoRGF0YVZpZXc6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9m
ZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Y2FzZSBJbnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDhBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRv
SlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJh
eUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGNhc2UgVWludDhBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVm
ZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6Y3JlYXRl
KGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhBcnJheTo6
Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVpbnQ4Q2xhbXBlZEFycmF5
VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFs
T2JqZWN0LCBVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFy
cmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlC
dWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5OjpjcmVh
dGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAg
YXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJbnQxNkFycmF5
OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgVWludDE2QXJyYXlUYWc6
Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmpl
Y3QsIFVpbnQxNkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRl
T2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICBjYXNlIEludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pT
KG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcg
PSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIEludDMyQXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBVaW50MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDMyQXJyYXk6
OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAg
ICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQz
MkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCku
Z2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgRmxvYXQzMkFy
cmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xv
YmFsT2JqZWN0LCBGbG9hdDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwg
bGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhl
YywgbV9nbG9iYWxPYmplY3QsIEZsb2F0MzJBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZm
ZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICBjYXNlIEZsb2F0NjRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVy
VmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5OjpjcmVhdGUo
YXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJy
YXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9hdDY0QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGI3NGNhYjQ3MTZiYTkx
MmJlOWY2NWY5MmQ4ZDU5OWIxMmJhZjM1M2UuLjZmYjc3YzA3YTJmYTcyMDkyY2JlZTcwODFmYTIw
ZmZlMzM0MDk3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNzIsNyArNzIsOCBAQCBF
eGNlcHRpb25PcjxSZWY8Rm9udEZhY2U+PiBGb250RmFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBmYQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fSwKICAgICAgICAgWyZdIChSZWZQdHI8QXJyYXlCdWZmZXI+JiBhcnJheUJ1ZmZlcikgLT4gRXhj
ZXB0aW9uT3I8dm9pZD4gewotICAgICAgICAgICAgYXV0byBhcnJheUJ1ZmZlclZpZXcgPSBKU0M6
OlVpbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgMCwgYXJyYXlCdWZmZXItPmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKTsKKyAgICAgICAgICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gSlNDOjpVaW50
OEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogICAg
ICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHBvcHVsYXRlRm9udEZh
Y2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5nKCksIGFycmF5QnVmZmVyVmlldy5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAK
aW5kZXggN2FiN2VjYmU2MTRhNWM0ZjEzY2U2NjNkYmRmMjlkMmQ3NjVhMmZmZS4uMThkMjNlMjFm
YTFjN2VkZWIzNDhiZjMwMWU1OTA0ZWZkZTViYzcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAKQEAgLTQyLDYgKzQyLDgg
QEAKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVk
aWEuaD4KICNpbmNsdWRlIDxydW50aW1lL0RhdGFWaWV3Lmg+CisjaW5jbHVkZSA8cnVudGltZS9I
ZWFwSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMuaD4KICNp
bmNsdWRlIDxydW50aW1lL1VpbnQxNkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEwMjgsNyArMTAzMCw3IEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURB
bmRDZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0
YUJ1ZmZlciA9IGluaXREYXRhLT51bnNoYXJlZEJ1ZmZlcigpOwogCiAgICAgLy8gVXNlIGEgRGF0
YVZpZXcgdG8gcmVhZCB1aW50MzIgdmFsdWVzIGZyb20gdGhlIGJ1ZmZlciwgYXMgVWludDMyQXJy
YXkgcmVxdWlyZXMgdGhlIHJlYWRzIGJlIGFsaWduZWQgb24gNC1ieXRlIGJvdW5kYXJpZXMuIAot
ICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3Ojpj
cmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwor
ICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3Ojpj
cmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxl
bmd0aCgpKTsKICAgICB1aW50MzJfdCBvZmZzZXQgPSAwOwogICAgIGJvb2wgc3RhdHVzID0gdHJ1
ZTsKIApAQCAtMTAzNyw3ICsxMDM5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBp
ZiAoIXN0YXR1cyB8fCBvZmZzZXQgKyBrZXlVUklMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJ
QXJyYXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCBvZmZzZXQsIGtleVVS
SUxlbmd0aCk7CisgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFy
cmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleVVSSUxlbmd0
aCk7CiAgICAgaWYgKCFrZXlVUklBcnJheSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0x
MDQ5LDcgKzEwNTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0
cmFjdEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdAogICAgIGlmICghc3RhdHVz
IHx8IG9mZnNldCArIGtleUlETGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5SURBcnJheSA9IFVpbnQ4
QXJyYXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CisgICAg
UmVmUHRyPFVpbnQ4QXJyYXk+IGtleUlEQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERh
dGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleUlETGVuZ3RoKTsKICAgICBpZiAoIWtleUlE
QXJyYXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA2MSw3ICsxMDYzLDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJREFuZENl
cnRpZmljYXRlRnJvbUluaXREYXQKICAgICBpZiAoIXN0YXR1cyB8fCBvZmZzZXQgKyBjZXJ0aWZp
Y2F0ZUxlbmd0aCA+IGluaXREYXRhLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgY2VydGlmaWNhdGUgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIG9m
ZnNldCwgY2VydGlmaWNhdGVMZW5ndGgpOworICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6
Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3Ro
KTsKICAgICBpZiAoIWNlcnRpZmljYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCmluZGV4IGNiZDBjM2M1YjQyMzA3MDhlOWIxZjZjZDVjN2UzOTY4NmU4ODZkZTQu
LmU0ZDBmOTE2OWQ0MjU0YjI5ZGUzMzg0NTdhMjY5ZjRiMDM0NWNiMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNG
LmNwcApAQCAtMTkxMSwxMyArMTkxMSwxNCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRG
b3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAg
ICAgICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVS
SV0KICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVv
ZihVQ2hhcik7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBB
cnJheUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKLSAgICAgICAgUmVmUHRyPEpT
Qzo6RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0
YUJ1ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIFJlZlB0
cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5p
dERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsK
ICAgICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUp
OwogCi0gICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJh
eTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAgICBS
ZWZQdHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0
RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtleVVS
SUFycmF5LT5zZXRSYW5nZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oU3RyaW5n
VmlldyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0
aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBSZWZQdHI8VWludDhB
cnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGlu
aXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3Ro
ID0gaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJy
YXk+IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIp
LCAwLCBieXRlTGVuZ3RoKTsKICAgICAgICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVl
ZGVkKGluaXREYXRhLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpp
bmRleCAyNjE1NmFjMWY3MzIzYzY2OGE4M2Y2ZDg2NDM4MWZmMmQ3MDM1MTBkLi4yOTkwZjdjODMx
ZWI5YWEzZGU5ZmY5ZWE0OGU4ZjZhYThjNGMwM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzgsNiArMzgsNyBA
QAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXQuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkFzc2V0UmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+
CisjaW1wb3J0IDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDx3dGYvTWFp
blRocmVhZC5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikK
QEAgLTEwMCw3ICsxMDEsOCBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRh
dGlvbk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmCiAgICAgZGVzdGluYXRp
b25VUkwgPSBTdHJpbmcoKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1
ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5
UmVxdWVzdC5nZXQoKSBsZW5ndGhdKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKGtl
eVJlcXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAg
ICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAs
IGJ5dGVMZW5ndGgpOwogfQogCiB2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpyZWxl
YXNlS2V5cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNjhmYWQxYzZmMTY4YTk4YzZj
OGFiMmE5YjAwODU3NTM5ZmE2ZGZjLi5mMDM4ZGEwNWE4N2EzNWQ0YzFmZGNhNDc2ZmFmOTJjYTI0
MzE0YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE3NzAsMTkgKzE3NzAsMjIgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXpl
XSwgW2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNp
emUgPSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwogICAgICAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJ
U2l6ZSwgMSk7Ci0gICAgICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBK
U0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5i
eXRlTGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZm
ZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRh
VmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAs
IGJ5dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5
VVJJU2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJh
eSA9IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgo
KSk7CisgICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJh
eTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsK
ICAgICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIp
LCAwKTsKIAotICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkp
OworICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVh
dGUoV1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpZiAo
IXBsYXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlVUkksIGF2UmVx
dWVzdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAoc2NoZW1lID09ICJj
bGVhcmtleSIpIHsKKyAgICB9CisKKyAgICBpZiAoc2NoZW1lID09ICJjbGVhcmtleSIpIHsKICAg
ICAgICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gcmVzb3VyY2VT
cGVjaWZpZXJdOwogICAgICAgICBTdHJpbmdWaWV3IGtleUlEVmlldyhrZXlJRCk7CiAgICAgICAg
IENTdHJpbmcgdXRmOEVuY29kZWRLZXlJZCA9IFVURjhFbmNvZGluZygpLmVuY29kZShrZXlJRFZp
ZXcsIFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301876</attachid>
            <date>2017-02-16 20:59:16 -0800</date>
            <delta_ts>2017-02-16 20:59:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168455-20170217135638.patch</filename>
            <type>text/plain</type>
            <size>59488</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyNTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MWFiZWJhZWZiMjg5OWVlMjhjYjM1NWFkNWE3YmU4ZTNlMmMxNTE3Li4yNmE5YTg0MTYzYWE1OTM1
NjQzNjY5NGQ0MWJiMDBjY2FhYTc1ZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NSBAQAorMjAxNy0wMi0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBEcm9wIFBhc3NSZWZQdHIgZnJvbSBBcnJheUJ1ZmZlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NDU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBmaW5hbGx5IGRyb3BzIGFsbCB0aGUgUGFzc1JlZlB0ciBpbiBKU0MuCisgICAgICAgIFdlIGNo
YW5nZWQgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gdG8gUmVmUHRyPEFycmF5QnVmZmVyPiYmLgor
ICAgICAgICBTaW5jZSBBcnJheUJ1ZmZlciBtYXkgYmUgbnVsbHB0ciBpZiB0aGUgYXJyYXkgaXMg
bmV1dGVyZWQsCisgICAgICAgIHdlIGhvbGQgaXQgYXMgUmVmUHRyPD4gaW5zdGVhZCBvZiBSZWY8
Pi4KKworICAgICAgICBBbmQgd2UgYWxzbyBkcm9wcyAyIGZpbGVzLCBUeXBlZEFycmF5QmFzZS5o
IGFuZCBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmguCisgICAgICAgIFRoZXkgYXJlIG5vdCB1c2Vk
IChhbmQgdGhleSBhcmUgbm90IHJlZmVyZW5jZWQgZnJvbSB0aGUgcHJvamVjdCBmaWxlKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0KToKKyAg
ICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyVmlldzo6QXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5oOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEJ1ZmZlcik6
CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlclZpZXc6OmNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHMp
OgorICAgICAgICAqIHJ1bnRpbWUvQ2xhc3NJbmZvLmg6CisgICAgICAgICogcnVudGltZS9EYXRh
Vmlldy5jcHA6CisgICAgICAgIChKU0M6OkRhdGFWaWV3OjpEYXRhVmlldyk6CisgICAgICAgIChK
U0M6OkRhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OkdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzdWJhcnJheSk6CisgICAgICAg
ICogcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9KU0FycmF5QnVmZmVyLmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlcjo6
SlNBcnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyLmg6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1
Y3Rpb25Db250ZXh0KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCk6CisgICAgICAgIChKU0M6
OkpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlND
ZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzbG93RG93bkFuZFdhc3RlTWVtb3J5KToK
KyAgICAgICAgKEpTQzo6SlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbCk6CisgICAgICAgICogcnVu
dGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXcuY3BwOgorICAgICAg
ICAoSlNDOjpKU0RhdGFWaWV3OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0RhdGFWaWV3Ojpw
b3NzaWJseVNoYXJlZFR5cGVkSW1wbCk6CisgICAgICAgIChKU0M6OkpTRGF0YVZpZXc6OnVuc2hh
cmVkVHlwZWRJbXBsKToKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Z2V0VHlwZWRBcnJheUlt
cGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwpOgorICAg
ICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6dW5zaGFyZWRUeXBl
ZEltcGwpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6
Z2V0VHlwZWRBcnJheUltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1R5
cGVkQXJyYXlzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlVWludDhUeXBlZEFycmF5KToKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlCYXNlLmg6IFJlbW92ZWQuCisKIDIwMTctMDItMTYg
IEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJU
SU9OIEZBSUxFRDogdm0uaGVhcC5tdXRhdG9yU3RhdGUoKSA9PSBNdXRhdG9yU3RhdGU6OlJ1bm5p
bmcgfHwgdm0uYXBpTG9jaygpLm93bmVyVGhyZWFkKCkgIT0gc3RkOjp0aGlzX3RocmVhZDo6Z2V0
X2lkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA3ZDZhYzQxZjFjOTE4MDkyNjYyNzE0M2QzYmFjZWM5Y2M5MmY5
YzQ0Li5hMWRlNzYzNTBmMjRhYTcyODk4MmMyMjdhYTE0YWEwNzgxNzI1MWMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDItMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0pTQ10gRHJvcCBQYXNzUmVmUHRyIGZyb20gQXJyYXlC
dWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
ODQ1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKiBjc3Mv
Rm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6
c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpnZW5lcmF0ZUtleVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGluZ09m
UmVzb3VyY2UpOgorCiAyMDE3LTAyLTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgPGlucHV0Pi5sYWJlbHMgaXMgZW1wdHkgaWYgdHlwZSBjaGFuZ2VzIGZyb20g
dGV4dC0+aGlkZGVuLT5jaGVja2JveApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaAppbmRleCA2YWY0OTJlZjYwODllM2EwZWQz
ODNhOTA4MDJlNjdkMGNmMWZmNGU5Li5lZTFmOGFlYTM0NjdmNjk4YThiZjY5N2FmMjRmMmUwMDc1
Y2Y3YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0ph
dmFTY3JpcHRDYWxsRnJhbWUuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgImRlYnVnZ2Vy
L0RlYnVnZ2VyQ2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0
aW9uLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggNGE2MDI2MWU0MTYxNDg3ZjZiM2E0MzBj
MjBlMGMxMjE3MTQwYWEwMy4uMDU3YmE0MWE5ZTA5OWRmYmViODkyOGU2YzdmM2FhY2UyNGVmOTE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTI1NTMsNyArMjU1Myw4IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Eb2xsYXJBZ2VudFJlY2VpdmVCcm9hZGNhc3QoRXhl
Y1N0YXRlKiBleGVjCiAgICAgfQogICAgIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbmF0aXZl
QnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtZXNzYWdlLT5yZWxlYXNlQ29udGVudHMoKSk7
Ci0gICAgSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0s
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmF0aXZl
QnVmZmVyLT5zaGFyaW5nTW9kZSgpKSwgbmF0aXZlQnVmZmVyKTsKKyAgICBBcnJheUJ1ZmZlclNo
YXJpbmdNb2RlIHNoYXJpbmdNb2RlID0gbmF0aXZlQnVmZmVyLT5zaGFyaW5nTW9kZSgpOworICAg
IEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmFycmF5QnVmZmVyU3RydWN0dXJlKHNoYXJpbmdNb2Rl
KSwgV1RGTW92ZShuYXRpdmVCdWZmZXIpKTsKICAgICAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzQnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4IGMwYmVmYzQ4YTBkYTc5
YjM3MGZhYWQxMDI1NDljYTA3NGNjMDliNDMuLjlmZWQ3Yzc4NmI2YmU5N2EzMWU1OTQzNTI2Y2Ji
ZGJlYjYwNTBkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5QnVmZmVyVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3LmNwcApAQCAtMjksMTEgKzI5LDExIEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
QXJyYXlCdWZmZXJWaWV3OjpBcnJheUJ1ZmZlclZpZXcoCi0gICAgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gYnVmZmVyLAorICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIsCiAgICAgdW5z
aWduZWQgYnl0ZU9mZnNldCkKICAgICAgICAgOiBtX2J5dGVPZmZzZXQoYnl0ZU9mZnNldCkKICAg
ICAgICAgLCBtX2lzTmV1dGVyYWJsZSh0cnVlKQotICAgICAgICAsIG1fYnVmZmVyKGJ1ZmZlcikK
KyAgICAgICAgLCBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgbV9iYXNlQWRkcmVz
cyA9IG1fYnVmZmVyID8gKHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSArIG1f
Ynl0ZU9mZnNldCkgOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclZpZXcuaAppbmRleCA1NWYzNDZlM2E0MzUxZTZlNDNlYzBjNjcwZTJlNWQzMWMx
ZDY4YTUwLi5lNzZlNmUyNjUyYWNmOWFjYjM4NDllMzQ1NTg5Y2NkODljMzJlODJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaApAQCAtMjks
NyArMjksNiBAQAogI2luY2x1ZGUgIlR5cGVkQXJyYXlUeXBlLmgiCiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAg
LTQ4LDE2ICs0NywxNiBAQCBjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRl
ZDxBcnJheUJ1ZmZlclZpZXc+IHsKICAgICAgICAgcmV0dXJuICFtX2J1ZmZlciB8fCBtX2J1ZmZl
ci0+aXNOZXV0ZXJlZCgpOwogICAgIH0KICAgICAKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
PiBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBw
b3NzaWJseVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNOZXV0ZXJl
ZCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgcmV0dXJuIG1fYnVmZmVyOwogICAgIH0KICAgICAKLSAgICBQYXNzUmVmUHRyPEFy
cmF5QnVmZmVyPiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CisgICAgUmVmUHRyPEFycmF5QnVmZmVy
PiB1bnNoYXJlZEJ1ZmZlcigpIGNvbnN0CiAgICAgewotICAgICAgICBQYXNzUmVmUHRyPEFycmF5
QnVmZmVyPiByZXN1bHQgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOworICAgICAgICBSZWZQdHI8
QXJyYXlCdWZmZXI+IHJlc3VsdCA9IHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKCFyZXN1bHQtPmlzU2hhcmVkKCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KQEAgLTEwMCw5ICs5OSw5IEBAIGNsYXNzIEFycmF5QnVmZmVyVmlldyA6IHB1Ymxp
YyBSZWZDb3VudGVkPEFycmF5QnVmZmVyVmlldz4gewogCiAgICAgLy8gSGVscGVyIHRvIHZlcmlm
eSB0aGF0IGEgZ2l2ZW4gc3ViLXJhbmdlIG9mIGFuIEFycmF5QnVmZmVyIGlzCiAgICAgLy8gd2l0
aGluIHJhbmdlLgotICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVuZ3RoKFBhc3NSZWZQ
dHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbnVt
RWxlbWVudHMsIHNpemVfdCBzaXplKQorICAgIHN0YXRpYyBib29sIHZlcmlmeVN1YlJhbmdlTGVu
Z3RoKGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2ln
bmVkIG51bUVsZW1lbnRzLCBzaXplX3Qgc2l6ZSkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGggPSBidWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgYnl0ZUxl
bmd0aCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKCk7CiAgICAgICAgIGlmIChieXRlT2Zmc2V0ID4gYnl0
ZUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgdW5zaWduZWQgcmVt
YWluaW5nRWxlbWVudHMgPSAoYnl0ZUxlbmd0aCAtIGJ5dGVPZmZzZXQpIC8gc2l6ZTsKQEAgLTEx
NCw3ICsxMTMsNyBAQCBjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxB
cnJheUJ1ZmZlclZpZXc+IHsKICAgICB2aXJ0dWFsIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KikgPSAwOwogICAgIAogcHJvdGVjdGVkOgotICAgIEpT
X0VYUE9SVF9QUklWQVRFIEFycmF5QnVmZmVyVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwg
dW5zaWduZWQgYnl0ZU9mZnNldCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgQXJyYXlCdWZmZXJW
aWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCk7CiAKICAgICBp
bmxpbmUgYm9vbCBzZXRJbXBsKEFycmF5QnVmZmVyVmlldyosIHVuc2lnbmVkIGJ5dGVPZmZzZXQp
OwogCkBAIC0xMzAsMjAgKzEyOSwyMCBAQCBjbGFzcyBBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMg
UmVmQ291bnRlZDxBcnJheUJ1ZmZlclZpZXc+IHsKICAgICAvLyBvdXRwdXQgb2Zmc2V0IGlzIGlu
IG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlcidzIHZpZXcuCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgc3RhdGljIHZvaWQgY2xhbXBPZmZzZXRBbmROdW1F
bGVtZW50cygKLSAgICAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLAorICAgICAg
ICBjb25zdCBBcnJheUJ1ZmZlciYgYnVmZmVyLAogICAgICAgICB1bnNpZ25lZCBhcnJheUJ5dGVP
ZmZzZXQsCiAgICAgICAgIHVuc2lnbmVkICpvZmZzZXQsCiAgICAgICAgIHVuc2lnbmVkICpudW1F
bGVtZW50cykKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIG1heE9mZnNldCA9IChVSU5UX01BWCAt
IGFycmF5Qnl0ZU9mZnNldCkgLyBzaXplb2YoVCk7CiAgICAgICAgIGlmICgqb2Zmc2V0ID4gbWF4
T2Zmc2V0KSB7Ci0gICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7Cisg
ICAgICAgICAgICAqb2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGgoKTsKICAgICAgICAgICAgICpu
dW1FbGVtZW50cyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Km9mZnNldCA9IGFycmF5Qnl0ZU9mZnNldCArICpvZmZzZXQgKiBzaXplb2YoVCk7Ci0gICAgICAg
ICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXItPmJ5dGVMZW5ndGgoKSwgKm9mZnNldCk7Ci0gICAg
ICAgIHVuc2lnbmVkIHJlbWFpbmluZ0VsZW1lbnRzID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0g
Km9mZnNldCkgLyBzaXplb2YoVCk7CisgICAgICAgICpvZmZzZXQgPSBzdGQ6Om1pbihidWZmZXIu
Ynl0ZUxlbmd0aCgpLCAqb2Zmc2V0KTsKKyAgICAgICAgdW5zaWduZWQgcmVtYWluaW5nRWxlbWVu
dHMgPSAoYnVmZmVyLmJ5dGVMZW5ndGgoKSAtICpvZmZzZXQpIC8gc2l6ZW9mKFQpOwogICAgICAg
ICAqbnVtRWxlbWVudHMgPSBzdGQ6Om1pbihyZW1haW5pbmdFbGVtZW50cywgKm51bUVsZW1lbnRz
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Ns
YXNzSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKaW5k
ZXggMmIyMTU3Y2VjMmNjYzM2MThhOTE0MWU5NzJkN2I1MTMyZWE1ZjUxMS4uNDgwYWVhMjIwZjQ3
ZThmMjU5Y2VkOTE1OTUyZDdlYjg4NTZhNTEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmgKQEAgLTk5LDcgKzk5LDcgQEAgc3RydWN0IE1ldGhvZFRhYmxlIHsK
ICAgICB0eXBlZGVmIEFycmF5QnVmZmVyKiAoKlNsb3dEb3duQW5kV2FzdGVNZW1vcnkpKEpTQXJy
YXlCdWZmZXJWaWV3Kik7CiAgICAgU2xvd0Rvd25BbmRXYXN0ZU1lbW9yeSBzbG93RG93bkFuZFdh
c3RlTWVtb3J5OwogICAgIAotICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+
ICgqR2V0VHlwZWRBcnJheUltcGwpKEpTQXJyYXlCdWZmZXJWaWV3Kik7CisgICAgdHlwZWRlZiBS
ZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiAoKkdldFR5cGVkQXJyYXlJbXBsKShKU0FycmF5QnVmZmVy
VmlldyopOwogICAgIEdldFR5cGVkQXJyYXlJbXBsIGdldFR5cGVkQXJyYXlJbXBsOwogCiAgICAg
dHlwZWRlZiBib29sICgqUHJldmVudEV4dGVuc2lvbnNGdW5jdGlvblB0cikoSlNPYmplY3QqLCBF
eGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmNwcApp
bmRleCBiMTBjYTQwM2U1YmQwZjI2MDg0ZTljYzc0ZjljMGUzNmEyZGM4OWRiLi4zYjU4NzFiYTNi
ZTJhMWViY2Y0MWIzZDdiNzRlYWY5ZjYzNmVkZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0YVZpZXcuY3BwCkBAIC0zMiwyMiArMzIsMjIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLURhdGFWaWV3OjpEYXRhVmlldyhQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIs
IHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCi0gICAgOiBBcnJheUJ1
ZmZlclZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0KQorRGF0YVZpZXc6OkRhdGFWaWV3KFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBidWZmZXIsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpCisgICAgOiBBcnJheUJ1ZmZlclZpZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0
KQogICAgICwgbV9ieXRlTGVuZ3RoKGJ5dGVMZW5ndGgpCiB7CiB9CiAKIFJlZjxEYXRhVmlldz4g
RGF0YVZpZXc6OmNyZWF0ZSgKLSAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIsIHVu
c2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCisgICAgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0
aCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVmlldyhidWZmZXIsIGJ5dGVPZmZz
ZXQsIGJ5dGVMZW5ndGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhVmlldyhXVEZN
b3ZlKGJ1ZmZlciksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKIH0KIAotUmVmPERhdGFWaWV3
PiBEYXRhVmlldzo6Y3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBhc3NlZEJ1ZmZlcikK
K1JlZjxEYXRhVmlldz4gRGF0YVZpZXc6OmNyZWF0ZShSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVm
ZmVyKQogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gcGFzc2VkQnVmZmVyOwot
ICAgIHJldHVybiBjcmVhdGUoYnVmZmVyLCAwLCBidWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAg
dW5zaWduZWQgYnl0ZUxlbmd0aCA9IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOworICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShidWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKIH0KIAogSlNBcnJheUJ1ZmZl
clZpZXcqIERhdGFWaWV3Ojp3cmFwKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCmluZGV4
IDIyODE0Nzk1ZTNhYjcyNmFkNjY2ZTY5NmUzZDBlOGQwMTg0NTJjMzAuLjY2MzYzYTc1NDIzMzhk
Y2JjOGE3ZWJkZjUwYzliZWMwODQ3N2I3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0YVZpZXcuaApAQCAtMjcsMTcgKzI3LDE2IEBACiAKICNpbmNsdWRlICJBcnJheUJ1ZmZl
clZpZXcuaCIKICNpbmNsdWRlIDx3dGYvRmxpcEJ5dGVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIERhdGFWaWV3IDogcHVibGljIEFy
cmF5QnVmZmVyVmlldyB7CiBwcm90ZWN0ZWQ6Ci0gICAgRGF0YVZpZXcoUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOworICAg
IERhdGFWaWV3KFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5z
aWduZWQgYnl0ZUxlbmd0aCk7CiAgICAgCiBwdWJsaWM6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
c3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNp
Z25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwotICAgIHN0YXRpYyBSZWY8RGF0YVZp
ZXc+IGNyZWF0ZShQYXNzUmVmUHRyPEFycmF5QnVmZmVyPik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxEYXRhVmlldz4gY3JlYXRlKFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICBzdGF0aWMgUmVmPERhdGFW
aWV3PiBjcmVhdGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICAKICAgICB1bnNpZ25lZCBi
eXRlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCmluZGV4IGZkNDhjOWNj
YjU2ZWJjYzBhNTAwODAwZTdmMmVhMjczZWNhNWUxMzMuLjM0N2I2NTEyZGNmNDAxOWViNmI0ODk4
YTBlMWQ3NDQ1ZDRlNjNkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0zMywxMiArMzMsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogY2xhc3MgR2VuZXJpY1R5cGVk
QXJyYXlWaWV3IDogcHVibGljIEFycmF5QnVmZmVyVmlldyB7CiBwcm90ZWN0ZWQ6Ci0gICAgR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRl
T2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOworICAgIEdlbmVyaWNUeXBlZEFycmF5VmlldyhSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CiAKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGljIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJh
eVZpZXc+IGNyZWF0ZShjb25zdCB0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKiBhcnJheSwgdW5zaWdu
ZWQgbGVuZ3RoKTsKLSAgICBzdGF0aWMgUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5Vmlldz4gY3Jl
YXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpOworICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBjcmVh
dGUoUmVmUHRyPEFycmF5QnVmZmVyPiYmLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBs
ZW5ndGgpOwogICAgIAogICAgIHN0YXRpYyBSZWZQdHI8R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBj
cmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJ
bmxpbmVzLmgKaW5kZXggZGE3YTQ1MzExNDEyOGYyYmM2ODM0OWNjNmJjNWE2MzE2NzMyZGEyZS4u
MWI2ZGE1NjFlYjdjZWIxMzEyYWE2NDhjZDJlNDkzYjU4MmI5YjZiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaApAQCAtMzIsOCArMzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6R2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KAotICAgIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5z
aWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQotICAgIDogQXJyYXlCdWZmZXJWaWV3
KGJ1ZmZlciwgYnl0ZU9mZnNldCkKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyLCB1
bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCisgICAgOiBBcnJheUJ1ZmZlclZp
ZXcoV1RGTW92ZShidWZmZXIpLCBieXRlT2Zmc2V0KQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQog
ewogfQpAQCAtNTgsMTAgKzU4LDEwIEBAIFJlZlB0cjxHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRh
cHRvcj4+IEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBBZGFwdG9yPgogUmVmUHRyPEdlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9y
Pj4gR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpjcmVhdGUoCi0gICAgUGFzc1JlZlB0
cjxBcnJheUJ1ZmZlcj4gcGFzc2VkQnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpCisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogewotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVm
ZmVyID0gcGFzc2VkQnVmZmVyOwotICAgIGlmICghdmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVmZmVy
LCBieXRlT2Zmc2V0LCBsZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkKKyAg
ICBBU1NFUlQoYnVmZmVyKTsKKyAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFu
Z2VMZW5ndGgoKmJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoLCBzaXplb2YodHlwZW5hbWUgQWRh
cHRvcjo6VHlwZSkpCiAgICAgICAgIHx8ICF2ZXJpZnlCeXRlT2Zmc2V0QWxpZ25tZW50KGJ5dGVP
ZmZzZXQsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBlKSkpIHsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtOTQsNyArOTQsOCBAQCBHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OnN1YmFycmF5KGludCBzdGFydCwgaW50IGVuZCkgY29uc3QKICAgICB1bnNpZ25l
ZCBvZmZzZXQsIGxlbmd0aDsKICAgICBjYWxjdWxhdGVPZmZzZXRBbmRMZW5ndGgoc3RhcnQsIGVu
ZCwgdGhpcy0+bGVuZ3RoKCksICZvZmZzZXQsICZsZW5ndGgpOwogICAgIEFycmF5QnVmZmVyKiBi
dWZmZXIgPSBwb3NzaWJseVNoYXJlZEJ1ZmZlcigpOwotICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxl
bWVudHM8QWRhcHRvcjo6VHlwZT4oYnVmZmVyLCBieXRlT2Zmc2V0KCksICZvZmZzZXQsICZsZW5n
dGgpOworICAgIEFTU0VSVChidWZmZXIpOworICAgIGNsYW1wT2Zmc2V0QW5kTnVtRWxlbWVudHM8
QWRhcHRvcjo6VHlwZT4oKmJ1ZmZlciwgYnl0ZU9mZnNldCgpLCAmb2Zmc2V0LCAmbGVuZ3RoKTsK
ICAgICByZXR1cm4gY3JlYXRlKGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlZ3JhbFR5cGVkQXJyYXlCYXNl
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTQ5ZjZmMTU4NGFhMWE5YTk2YTQ1
NzE3MGNjMWIwNTJlODQ3MGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZWdyYWxUeXBlZEFycmF5
QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKGMp
IDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlR5
cGVkQXJyYXlCYXNlLmgiCi0jaW5jbHVkZSA8bGltaXRzPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+Ci0KLS8vIEJhc2UgY2xhc3MgZm9yIGFsbCBXZWJHTDxUPkFycmF5IHR5cGVzIGhvbGRp
bmcgaW50ZWdyYWwKLS8vIChub24tZmxvYXRpbmctcG9pbnQpIHZhbHVlcy4KLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgSW50ZWdyYWxUeXBlZEFycmF5
QmFzZSA6IHB1YmxpYyBUeXBlZEFycmF5QmFzZTxUPiB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXQo
dW5zaWduZWQgaW5kZXgsIGRvdWJsZSB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+
PSBUeXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkgLy8gQ2xhbXAgTmFOIHRvIDAKLSAgICAgICAgICAg
IHZhbHVlID0gMDsKLSAgICAgICAgLy8gVGhlIGRvdWJsZSBjYXN0IGlzIG5lY2Vzc2FyeSB0byBn
ZXQgdGhlIGNvcnJlY3Qgd3JhcHBpbmcKLSAgICAgICAgLy8gZm9yIG91dC1vZi1yYW5nZSB2YWx1
ZXMgd2l0aCBJbnQzMkFycmF5IGFuZCBVaW50MzJBcnJheS4KLSAgICAgICAgVHlwZWRBcnJheUJh
c2U8VD46OmRhdGEoKVtpbmRleF0gPSBzdGF0aWNfY2FzdDxUPihzdGF0aWNfY2FzdDxpbnQ2NF90
Pih2YWx1ZSkpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIEludGVncmFsVHlwZWRBcnJheUJh
c2UoUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1
bnNpZ25lZCBsZW5ndGgpCi0gICAgICAgIDogVHlwZWRBcnJheUJhc2U8VD4oYnVmZmVyLCBieXRl
T2Zmc2V0LCBsZW5ndGgpCi0gICAgewotICAgIH0KLQotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCmlu
ZGV4IDdhN2ZhYWM3NzZhM2MzNzJmYmZmYTVjMjZiZjYxODExYmE2NjFmZDAuLmIyNGI2ZGI0NmE1
ZWEwOTRkZThiYTgzYmFjODAyMmFhZDk4YjdjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogY29uc3QgQ2xhc3NJbmZvIEpTQXJyYXlCdWZmZXI6OnNfaW5mbyA9IHsKICAgICAi
QXJyYXlCdWZmZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJy
YXlCdWZmZXIpfTsKIAotSlNBcnJheUJ1ZmZlcjo6SlNBcnJheUJ1ZmZlcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlcikKK0pT
QXJyYXlCdWZmZXI6OkpTQXJyYXlCdWZmZXIoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGFycmF5QnVmZmVyKQogICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQogICAgICwgbV9pbXBsKGFycmF5QnVmZmVyLmdldCgpKQogewpAQCAtNTAsMTIgKzUwLDEx
IEBAIHZvaWQgSlNBcnJheUJ1ZmZlcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogfQogCiBKU0FycmF5QnVmZmVyKiBKU0FycmF5QnVmZmVyOjpj
cmVhdGUoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gcGFzc2VkQnVmZmVyKQorICAgIFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVy
PiBidWZmZXIgPSBwYXNzZWRCdWZmZXI7CiAgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0KICAg
ICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcnJheUJ1ZmZlcj4odm0uaGVhcCkp
Ci0gICAgICAgIEpTQXJyYXlCdWZmZXIodm0sIHN0cnVjdHVyZSwgYnVmZmVyKTsKKyAgICAgICAg
SlNBcnJheUJ1ZmZlcih2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIHJlc3Vs
dC0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
QnVmZmVyLmgKaW5kZXggNTkyODdlMTdjYmQ3NWVhOGExYmU3NmNmOTNjNTdmOGRkNzEyMGM0My4u
OTE0MjdhOTBiZDU5ZDM5N2U2MWM2ZTNlNjQzOGE1MmJkOWJkYmMyMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXIuaApAQCAtMzYsMTIgKzM2LDEyIEBA
IGNsYXNzIEpTQXJyYXlCdWZmZXIgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3M7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgSlNBcnJheUJ1ZmZlcihWTSYsIFN0cnVjdHVy
ZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+KTsKKyAgICBKU0FycmF5QnVmZmVyKFZNJiwgU3Ry
dWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKICAgICAKIHB1YmxpYzoKICAgICAvLyBUaGlzIGZ1bmN0
aW9uIHdpbGwgcmVnaXN0ZXIgdGhlIG5ldyB3cmFwcGVyIHdpdGggdGhlIHZtJ3MgVHlwZWRBcnJh
eUNvbnRyb2xsZXIuCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQXJyYXlCdWZmZXIq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+KTsKKyAgICBK
U19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNBcnJheUJ1ZmZlciogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmKTsKIAogICAgIEFycmF5QnVmZmVyKiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IGI4MDNk
OTU1OWQyN2MzZmM0MTZkMTVlOWRlM2Q3MGM4ZjZiMGQ0NmUuLjNjNzZiZjk1YzI0ZTJkZWQ1MGRj
ZjRhYmI3NzE0OTEzZmU0ZTUwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5QnVmZmVyUHJvdG9GdW5j
U2xpY2UoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
Y2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5z
aGFyaW5nTW9kZSgpKTsKICAgICAKLSAgICBKU0FycmF5QnVmZmVyKiByZXN1bHQgPSBKU0FycmF5
QnVmZmVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgbmV3QnVmZmVyKTsKKyAgICBKU0FycmF5QnVm
ZmVyKiByZXN1bHQgPSBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShuZXdCdWZmZXIpKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVm
ZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKaW5kZXggYTNiMzg4ODNlZDcxZjRlZmI5ODYzNzU0MzU2ZTRjNzNjMWY3YWI3Zi4u
NzZiN2ZjZDFmMzc5Y2ZiYjU1ODc0MTdjMjc4ZGQ1MDU5ZjIzMzE0YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25z
dHJ1Y3Rpb25Db250ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29u
dGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKLSAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBhcnJheUJ1ZmZlciwKKyAgICBWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYXJyYXlCdWZmZXIsCiAg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9zdHJ1Y3R1
cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtMTE2LDcgKzExNiw3IEBA
IEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250
ZXh0KAogfQogCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3Ry
dWN0aW9uQ29udGV4dCgKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4gYXJyYXlCdWZmZXIsCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxB
cnJheUJ1ZmZlcj4mJiBhcnJheUJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKQogICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQog
ICAgICwgbV9sZW5ndGgobGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggN2U1MWQ1MWRiZWIxZjExNGQ3MjcyODRhODBi
OGJiNTEyNWQwYWU4Yy4uNDQ3YzgzYTNlZTE3YWRjZjNiYWFkNDY5MGI1NTFkYzRlODhiOWEwZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmll
dy5oCkBAIC0xMjIsMTIgKzEyMiwxMiBAQCBjbGFzcyBKU0FycmF5QnVmZmVyVmlldyA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgQ29uc3RydWN0aW9uQ29udGV4dChTdHJ1Y3R1
cmUqLCB1aW50MzJfdCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgICAgICAgICAgVk0mLCBT
dHJ1Y3R1cmUqLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiwKKyAgICAgICAgICAgIFZNJiwgU3Ry
dWN0dXJlKiwgUmVmUHRyPEFycmF5QnVmZmVyPiYmLAogICAgICAgICAgICAgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgICAgIGVudW0gRGF0YVZp
ZXdUYWcgeyBEYXRhVmlldyB9OwogICAgICAgICBDb25zdHJ1Y3Rpb25Db250ZXh0KAotICAgICAg
ICAgICAgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4sCisgICAgICAgICAgICBT
dHJ1Y3R1cmUqLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYsCiAgICAgICAgICAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIERhdGFWaWV3VGFnKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CkBAIC0x
NjIsOCArMTYyLDggQEAgY2xhc3MgSlNBcnJheUJ1ZmZlclZpZXcgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgQXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkQnVmZmVyKCk7CiAgICAg
SlNBcnJheUJ1ZmZlciogdW5zaGFyZWRKU0J1ZmZlcihFeGVjU3RhdGUqIGV4ZWMpOwogICAgIEpT
QXJyYXlCdWZmZXIqIHBvc3NpYmx5U2hhcmVkSlNCdWZmZXIoRXhlY1N0YXRlKiBleGVjKTsKLSAg
ICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gdW5zaGFyZWRJbXBsKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxBcnJheUJ1ZmZlclZpZXc+IHBvc3NpYmx5U2hhcmVkSW1wbCgpOworICAgIFJlZlB0cjxB
cnJheUJ1ZmZlclZpZXc+IHVuc2hhcmVkSW1wbCgpOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlclZp
ZXc+IHBvc3NpYmx5U2hhcmVkSW1wbCgpOwogICAgIGJvb2wgaXNOZXV0ZXJlZCgpIHsgcmV0dXJu
IGhhc0FycmF5QnVmZmVyKCkgJiYgIXZlY3RvcigpOyB9CiAgICAgdm9pZCBuZXV0ZXIoKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1
ZmZlclZpZXdJbmxpbmVzLmgKaW5kZXggYjk5NTY3ZDQ3NDVjY2VhOGNjNjc3ZmY1N2ZmZTJlNzYy
N2U4YmI4Yy4uZDVjNzI3Zjc0YWY3Y2VkM2MzYWZiNTJjN2VhZDdhZTk5ZjZhODZlZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXdJbmxpbmVzLmgKQEAgLTYxLDE0ICs2MSwxNCBAQCBpbmxpbmUgQXJyYXlCdWZmZXIqIEpTQXJy
YXlCdWZmZXJWaWV3OjpleGlzdGluZ0J1ZmZlckluQnV0dGVyZmx5KCkKICAgICByZXR1cm4gYnV0
dGVyZmx5KCktPmluZGV4aW5nSGVhZGVyKCktPmFycmF5QnVmZmVyKCk7CiB9CiAKLWlubGluZSBQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZpZXc6OnBvc3NpYmx5U2hh
cmVkSW1wbCgpCitpbmxpbmUgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gSlNBcnJheUJ1ZmZlclZp
ZXc6OnBvc3NpYmx5U2hhcmVkSW1wbCgpCiB7CiAgICAgcmV0dXJuIG1ldGhvZFRhYmxlKCktPmdl
dFR5cGVkQXJyYXlJbXBsKHRoaXMpOwogfQogCi1pbmxpbmUgUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwoKQoraW5saW5lIFJlZlB0cjxB
cnJheUJ1ZmZlclZpZXc+IEpTQXJyYXlCdWZmZXJWaWV3Ojp1bnNoYXJlZEltcGwoKQogewotICAg
IFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiByZXN1bHQgPSBwb3NzaWJseVNoYXJlZEltcGwo
KTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiByZXN1bHQgPSBwb3NzaWJseVNoYXJlZElt
cGwoKTsKICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0LT5pc1NoYXJlZCgpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5k
ZXggM2VmODMxZDU4ZDYyZjhlYzAwYjU5MDczNzM2NjU2YTk3MGE1MjM3Ny4uYWNkZDRlODhjMGFm
MTRhMDlmNzZiZTJhM2FhNWExOTBlYTZiODBlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuY3BwCkBAIC0yNTAsMTMgKzI1MCwxMyBAQCBib29sIEpTQ2VsbDo6ZGVmaW5l
T3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFBy
b3BlcgogQXJyYXlCdWZmZXIqIEpTQ2VsbDo6c2xvd0Rvd25BbmRXYXN0ZU1lbW9yeShKU0FycmF5
QnVmZmVyVmlldyopCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+IEpTQ2VsbDo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqKQorUmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gSlNDZWxsOjpnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVm
ZmVyVmlldyopCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdWludDMyX3QgSlNDZWxsOjpnZXRFbnVt
ZXJhYmxlTGVuZ3RoKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgKaW5kZXggYzQ1ZWVhMzBlOTg4Yzk3MWY0MzA4NThhMjlmNTdlYzQ5MmJm
Yjk3Ny4uMTQ2NGJiNTFkNDJjZTJjMjcwNjk5ZDQ1MjA5YWViYTVmZWM3YjBkMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTI1Myw3ICsyNTMsNyBAQCBjbGFzcyBK
U0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCosIEV4
ZWNTdGF0ZSosIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIEFycmF5QnVmZmVyKiBzbG93RG93bkFuZFdhc3RlTWVtb3J5
KEpTQXJyYXlCdWZmZXJWaWV3Kik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmll
dyopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyopOwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IGY0YWZlYmI5MGVlNzQ0ZjQyNjBlYzI4
ZDg1M2IwY2RlN2QxN2M4NDQuLjFmNjdmYmRjYTNlMGM5OWY3OTdiNWY2ODFmMmZiMWEwMTI0OGE5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCkBA
IC00NCwxNCArNDQsMTQgQEAgSlNEYXRhVmlldzo6SlNEYXRhVmlldyhWTSYgdm0sIENvbnN0cnVj
dGlvbkNvbnRleHQmIGNvbnRleHQsIEFycmF5QnVmZmVyKiBidWZmZXIKIH0KIAogSlNEYXRhVmll
dyogSlNEYXRhVmlldzo6Y3JlYXRlKAotICAgIEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IHBhc3NlZEJ1ZmZlciwKKyAgICBFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYg
YnVmZmVyLAogICAgIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IHBhc3NlZEJ1
ZmZlcjsKLSAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoYnVm
ZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoLCBzaXplb2YodWludDhfdCkpKSB7CisgICAgQVNT
RVJUKGJ1ZmZlcik7CisgICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVu
Z3RoKCpidWZmZXIsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHNpemVvZih1aW50OF90KSkpIHsK
ICAgICAgICAgdGhyb3dWTUVycm9yKGV4ZWMsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiKSkpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC02MCw3ICs2MCw3IEBAIEpTRGF0YVZpZXcqIEpT
RGF0YVZpZXc6OmNyZWF0ZSgKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIENv
bnN0cnVjdGlvbkNvbnRleHQgY29udGV4dCgKLSAgICAgICAgc3RydWN0dXJlLCBidWZmZXIsIGJ5
dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIENvbnN0cnVjdGlvbkNvbnRleHQ6OkRhdGFWaWV3KTsKKyAg
ICAgICAgc3RydWN0dXJlLCBidWZmZXIuY29weVJlZigpLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3Ro
LCBDb25zdHJ1Y3Rpb25Db250ZXh0OjpEYXRhVmlldyk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwog
ICAgIEpTRGF0YVZpZXcqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTRGF0YVZpZXc+KHZtLmhlYXApKSBKU0RhdGFWaWV3KHZtLCBjb250ZXh0LCBidWZmZXIu
Z2V0KCkpOwpAQCAtOTIsMTIgKzkyLDEyIEBAIGJvb2wgSlNEYXRhVmlldzo6c2V0SW5kZXgoRXhl
Y1N0YXRlKiwgdW5zaWduZWQsIEpTVmFsdWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1QYXNz
UmVmUHRyPERhdGFWaWV3PiBKU0RhdGFWaWV3Ojpwb3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpCitS
ZWZQdHI8RGF0YVZpZXc+IEpTRGF0YVZpZXc6OnBvc3NpYmx5U2hhcmVkVHlwZWRJbXBsKCkKIHsK
ICAgICByZXR1cm4gRGF0YVZpZXc6OmNyZWF0ZShwb3NzaWJseVNoYXJlZEJ1ZmZlcigpLCBieXRl
T2Zmc2V0KCksIGxlbmd0aCgpKTsKIH0KIAotUGFzc1JlZlB0cjxEYXRhVmlldz4gSlNEYXRhVmll
dzo6dW5zaGFyZWRUeXBlZEltcGwoKQorUmVmUHRyPERhdGFWaWV3PiBKU0RhdGFWaWV3Ojp1bnNo
YXJlZFR5cGVkSW1wbCgpCiB7CiAgICAgcmV0dXJuIERhdGFWaWV3OjpjcmVhdGUodW5zaGFyZWRC
dWZmZXIoKSwgYnl0ZU9mZnNldCgpLCBsZW5ndGgoKSk7CiB9CkBAIC0xODMsNyArMTgzLDcgQEAg
QXJyYXlCdWZmZXIqIEpTRGF0YVZpZXc6OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1
ZmZlclZpZXcqKQogICAgIHJldHVybiAwOwogfQogCi1QYXNzUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4gSlNEYXRhVmlldzo6Z2V0VHlwZWRBcnJheUltcGwoSlNBcnJheUJ1ZmZlclZpZXcqIG9iamVj
dCkKK1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpTRGF0YVZpZXc6OmdldFR5cGVkQXJyYXlJbXBs
KEpTQXJyYXlCdWZmZXJWaWV3KiBvYmplY3QpCiB7CiAgICAgSlNEYXRhVmlldyogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0RhdGFWaWV3Kj4ob2JqZWN0KTsKICAgICByZXR1cm4gdGhpc09iamVjdC0+
cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuaAppbmRleCBjYWUzYTkyOGRkYjFlYTlmNmYyNzRhZWYwOGEzZjhlNDRjZjIz
NTRlLi5mNDIwMzJlOWMzMTE3NzVmZmY0ZGY1MDA2MzMzYjBjZDY1MTM5OGM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5oCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIEpTRGF0YVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgIAogcHVibGlj
OgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0RhdGFWaWV3KiBjcmVhdGUoCi0gICAg
ICAgIEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+LCB1bnNp
Z25lZCBieXRlT2Zmc2V0LAorICAgICAgICBFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsCiAgICAgICAgIHVuc2lnbmVkIGJ5
dGVMZW5ndGgpOwogICAgIAogICAgIC8vIER1bW15IG1ldGhvZHMsIHdoaWNoIGRvbid0IGFjdHVh
bGx5IHdvcms7IHRoZXNlIGFyZSBqdXN0IGluIHBsYWNlIHRvCkBAIC01Nyw4ICs1Nyw4IEBAIGNs
YXNzIEpTRGF0YVZpZXcgOiBwdWJsaWMgSlNBcnJheUJ1ZmZlclZpZXcgewogICAgICAgICByZXR1
cm4gbV9idWZmZXI7CiAgICAgfQogICAgIAotICAgIFBhc3NSZWZQdHI8RGF0YVZpZXc+IHBvc3Np
Ymx5U2hhcmVkVHlwZWRJbXBsKCk7Ci0gICAgUGFzc1JlZlB0cjxEYXRhVmlldz4gdW5zaGFyZWRU
eXBlZEltcGwoKTsKKyAgICBSZWZQdHI8RGF0YVZpZXc+IHBvc3NpYmx5U2hhcmVkVHlwZWRJbXBs
KCk7CisgICAgUmVmUHRyPERhdGFWaWV3PiB1bnNoYXJlZFR5cGVkSW1wbCgpOwogICAgIAogICAg
IHN0YXRpYyBjb25zdCBUeXBlZEFycmF5VHlwZSBUeXBlZEFycmF5U3RvcmFnZVR5cGUgPSBUeXBl
RGF0YVZpZXc7CiAKQEAgLTcxLDcgKzcxLDcgQEAgY2xhc3MgSlNEYXRhVmlldyA6IHB1YmxpYyBK
U0FycmF5QnVmZmVyVmlldyB7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duTm9uSW5kZXhQcm9wZXJ0
eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJh
dGlvbk1vZGUpOwogCiAgICAgc3RhdGljIEFycmF5QnVmZmVyKiBzbG93RG93bkFuZFdhc3RlTWVt
b3J5KEpTQXJyYXlCdWZmZXJWaWV3Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyopOworICAgIHN0YXRp
YyBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVy
VmlldyopOwogICAgIAogcHVibGljOgogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
LmgKaW5kZXggNjEwOTcwNjY2ODBiNzE4MTNkY2QwOTk1NWNmM2IxOTVkOTFlOTk0My4uOGE3NmNh
Yjk3NTU0OTU2MmFiMzc5YmNkZjIwYzc2ZTk5NjcwOGIwMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0x
MDcsOSArMTA3LDkgQEAgY2xhc3MgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcgOiBwdWJsaWMgSlNB
cnJheUJ1ZmZlclZpZXcgewogICAgIHN0YXRpYyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3Jl
YXRlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVXaXRoRmFzdFZlY3RvcihFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqIHZlY3Rvcik7CiAgICAgc3RhdGlj
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGVVbmluaXRpYWxpemVkKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3RhdGljIEpTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3KiBjcmVhdGUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgUGFzc1JlZlB0cjxBcnJh
eUJ1ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgc3Rh
dGljIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBQYXNz
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBpbXBsKTsKLSAgICBzdGF0aWMgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0dsb2JhbE9iamVjdCos
IFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IGltcGwpOworICAgIHN0YXRp
YyBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogY3JlYXRlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSos
IFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsKKyAg
ICBzdGF0aWMgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIGNyZWF0ZShTdHJ1Y3R1cmUqLCBKU0ds
b2JhbE9iamVjdCosIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4mJiBpbXBsKTsK
ICAgICAKICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGgg
KiBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7IH0KICAgICBzaXplX3QgYnl0ZVNpemUo
KSBjb25zdCB7IHJldHVybiBzaXplT2YobV9sZW5ndGgsIHNpemVvZih0eXBlbmFtZSBBZGFwdG9y
OjpUeXBlKSk7IH0KQEAgLTIyNSw4ICsyMjUsOCBAQCBjbGFzcyBKU0dlbmVyaWNUeXBlZEFycmF5
VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgLy8gdGhlbiBpdCB3aWxsIGhh
dmUgdGhyb3duIGFuIGV4Y2VwdGlvbi4KICAgICBib29sIHNldChFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBvZmZzZXQsIEpTT2JqZWN0KiwgdW5zaWduZWQgb2JqZWN0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgsIENvcHlUeXBlIHR5cGUgPSBDb3B5VHlwZTo6VW5vYnNlcnZhYmxlKTsKICAgICAKLSAgICBQ
YXNzUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBwb3NzaWJseVNoYXJlZFR5cGVk
SW1wbCgpOwotICAgIFBhc3NSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IHVuc2hh
cmVkVHlwZWRJbXBsKCk7CisgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBw
b3NzaWJseVNoYXJlZFR5cGVkSW1wbCgpOworICAgIFJlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpW
aWV3VHlwZT4gdW5zaGFyZWRUeXBlZEltcGwoKTsKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKQEAgLTI5MSw3ICsyOTEsNyBAQCBjbGFzcyBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldyA6IHB1YmxpYyBKU0FycmF5QnVmZmVyVmlldyB7CiAgICAgLy8gQWxsb2Nh
dGVzIHRoZSBmdWxsLW9uIG5hdGl2ZSBidWZmZXIgYW5kIG1vdmVzIGRhdGEgaW50byB0aGUgQyBo
ZWFwIGlmCiAgICAgLy8gbmVjZXNzYXJ5LiBOb3RlIHRoYXQgdGhpcyBuZXZlciBhbGxvY2F0ZXMg
aW4gdGhlIEdDIGhlYXAuCiAgICAgc3RhdGljIEFycmF5QnVmZmVyKiBzbG93RG93bkFuZFdhc3Rl
TWVtb3J5KEpTQXJyYXlCdWZmZXJWaWV3Kik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVmZmVyVmlldyopOworICAgIHN0
YXRpYyBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5QnVm
ZmVyVmlldyopOwogCiBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBzdWNjZXNzZnVs
LCBhbmQgZmFsc2Ugb24gZXJyb3I7IGl0IHdpbGwgdGhyb3cgb24gZXJyb3IuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0Nv
bnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCA0NDhhYjkyYzg0ZTY3
NjBiODc1NjA0MzdlOTVhY2JlOGIzZTdlMzdlLi4zZWU5NWEwOTUwMDc3Y2E0OGRjYmQ1MTNjOGRh
YTM4NWFhNjdlZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJ
bmxpbmVzLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBTdAogICAg
ICAgICB9CiAKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICByZXR1cm4gVmlld0Ns
YXNzOjpjcmVhdGUoZXhlYywgc3RydWN0dXJlLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuIFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgV1RGTW92ZShi
dWZmZXIpLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgfQogICAgIEFTU0VSVCghb2Zmc2V0ICYmICFs
ZW5ndGhPcHQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCA2MjFkZTI1
NTlhYzA2YjY1NDEzNGE1YzgyYTkzZjAyNTBmYWI0YzIyLi5mMDE5NjU5YmMyNTA2MzJkYjUyYTc0
YWU1ZWFjODc2YmM2Njk5NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtOTcs
MTQgKzk3LDE0IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNU
eXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlVW5pbml0CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPiogSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OmNyZWF0ZSgKLSAgICBFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBwYXNzZWRCdWZmZXIsCisg
ICAgRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVm
ZmVyPiYmIGJ1ZmZlciwKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBwYXNzZWRC
dWZmZXI7CiAgICAgc2l6ZV90IHNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlwZSk7
Ci0gICAgaWYgKCFBcnJheUJ1ZmZlclZpZXc6OnZlcmlmeVN1YlJhbmdlTGVuZ3RoKGJ1ZmZlciwg
Ynl0ZU9mZnNldCwgbGVuZ3RoLCBzaXplKSkgeworICAgIEFTU0VSVChidWZmZXIpOworICAgIGlm
ICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgsIHNpemUpKSB7CiAgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGV4ZWMsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciIp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTEyLDcgKzExMiw3IEBAIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6Y3JlYXRlKAogICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlUmFuZ2VFcnJvcihleGVjLCAiQnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiKSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBDb25zdHJ1Y3Rpb25Db250ZXh0IGNvbnRl
eHQodm0sIHN0cnVjdHVyZSwgYnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpOworICAgIENvbnN0
cnVjdGlvbkNvbnRleHQgY29udGV4dCh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGJ1ZmZlciksIGJ5
dGVPZmZzZXQsIGxlbmd0aCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIEpTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3KiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldz4odm0uaGVhcCkpCkBAIC0xMjMsMTAgKzEyMyw5IEBA
IEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6Y3JlYXRlKAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogSlNHZW5l
cmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj4qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+OjpjcmVhdGUoCi0gICAgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0
cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gaW1wbCkKKyAgICBWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBSZWZQdHI8dHlwZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+JiYgaW1wbCkK
IHsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGltcGwtPnBvc3NpYmx5U2hhcmVk
QnVmZmVyKCk7Ci0gICAgQ29uc3RydWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1cmUs
IGJ1ZmZlciwgaW1wbC0+Ynl0ZU9mZnNldCgpLCBpbXBsLT5sZW5ndGgoKSk7CisgICAgQ29uc3Ry
dWN0aW9uQ29udGV4dCBjb250ZXh0KHZtLCBzdHJ1Y3R1cmUsIGltcGwtPnBvc3NpYmx5U2hhcmVk
QnVmZmVyKCksIGltcGwtPmJ5dGVPZmZzZXQoKSwgaW1wbC0+bGVuZ3RoKCkpOwogICAgIEFTU0VS
VChjb250ZXh0KTsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogcmVzdWx0ID0KICAgICAg
ICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNHZW5lcmljVHlwZWRBcnJheVZpZXc+KHZt
LmhlYXApKQpAQCAtMTM4LDkgKzEzNyw5IEBAIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0
b3I+KiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogdGVtcGxhdGU8
dHlwZW5hbWUgQWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+KiBKU0dl
bmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Y3JlYXRlKAogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAotICAgIFBhc3NSZWZQdHI8dHlw
ZW5hbWUgQWRhcHRvcjo6Vmlld1R5cGU+IGltcGwpCisgICAgUmVmUHRyPHR5cGVuYW1lIEFkYXB0
b3I6OlZpZXdUeXBlPiYmIGltcGwpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3Qt
PnZtKCksIHN0cnVjdHVyZSwgaW1wbCk7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3Qt
PnZtKCksIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEFkYXB0b3I+CkBAIC0zMjIsMTMgKzMyMSwxMyBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpzZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+Ci1QYXNz
UmVmUHRyPHR5cGVuYW1lIEFkYXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5Vmll
dzxBZGFwdG9yPjo6cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKQorUmVmUHRyPHR5cGVuYW1lIEFk
YXB0b3I6OlZpZXdUeXBlPiBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cG9zc2li
bHlTaGFyZWRUeXBlZEltcGwoKQogewogICAgIHJldHVybiBBZGFwdG9yOjpWaWV3VHlwZTo6Y3Jl
YXRlKHBvc3NpYmx5U2hhcmVkQnVmZmVyKCksIGJ5dGVPZmZzZXQoKSwgbGVuZ3RoKCkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUGFzc1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9y
OjpWaWV3VHlwZT4gSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlw
ZWRJbXBsKCkKK1JlZlB0cjx0eXBlbmFtZSBBZGFwdG9yOjpWaWV3VHlwZT4gSlNHZW5lcmljVHlw
ZWRBcnJheVZpZXc8QWRhcHRvcj46OnVuc2hhcmVkVHlwZWRJbXBsKCkKIHsKICAgICByZXR1cm4g
QWRhcHRvcjo6Vmlld1R5cGU6OmNyZWF0ZSh1bnNoYXJlZEJ1ZmZlcigpLCBieXRlT2Zmc2V0KCks
IGxlbmd0aCgpKTsKIH0KQEAgLTU5MCw4ICs1ODksNyBAQCBBcnJheUJ1ZmZlciogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnNsb3dEb3duQW5kV2FzdGVNZW1vcnkoSlNBcnJheUJ1
ZgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgotUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+Ci1KU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6Z2V0VHlwZWRBcnJheUlt
cGwoSlNBcnJheUJ1ZmZlclZpZXcqIG9iamVjdCkKK1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpnZXRUeXBlZEFycmF5SW1wbChKU0FycmF5
QnVmZmVyVmlldyogb2JqZWN0KQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4ob2JqZWN0KTsKICAgICBy
ZXR1cm4gdGhpc09iamVjdC0+cG9zc2libHlTaGFyZWRUeXBlZEltcGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IDg3NGJhYTYyMWIzMDY0
MmE3MDNiOGE4MDZhZDM3YzU5NmRlMTE2MTIuLjJjYmNhZDM5NTNkZDk3MTY5ZWJiMzE1YWVlZWU2
NjczN2IyNWMxNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5j
dGlvbnMuaApAQCAtNTU2LDcgKzU1Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShWTSZ2CiAKICAg
ICAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFZp
ZXdDbGFzczo6Y3JlYXRlKAotICAgICAgICAgICAgZXhlYywgc3RydWN0dXJlLCBhcnJheUJ1ZmZl
ciwKKyAgICAgICAgICAgIGV4ZWMsIHN0cnVjdHVyZSwgV1RGTW92ZShhcnJheUJ1ZmZlciksCiAg
ICAgICAgICAgICB0aGlzT2JqZWN0LT5ieXRlT2Zmc2V0KCkgKyBvZmZzZXQgKiBWaWV3Q2xhc3M6
OmVsZW1lbnRTaXplLAogICAgICAgICAgICAgbGVuZ3RoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlzLmNwcAppbmRleCBiODhkOWY0MmQ3
ZGRjNTZkZWZjYTI3MmZiMGYwYzBmNzU0M2FiZTlmLi4xNjkzMDhlZjNiMTIzMzE0MWJmOTM5ZmRj
OWMzMmU3N2UwNjAxZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVkQXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlzLmNwcApAQCAtNDksOSArNDksOSBAQCBNQUtFX1NfSU5GTyhVaW50MzIpOwog
TUFLRV9TX0lORk8oRmxvYXQzMik7CiBNQUtFX1NfSU5GTyhGbG9hdDY0KTsKIAotSlNVaW50OEFy
cmF5KiBjcmVhdGVVaW50OFR5cGVkQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIHBhc3NlZEJ1ZmZlciwgdW5zaWduZWQgYnl0
ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQorSlNVaW50OEFycmF5KiBjcmVhdGVVaW50OFR5cGVk
QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEFycmF5
QnVmZmVyPiYmIGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQog
ewotICAgIHJldHVybiBKU1VpbnQ4QXJyYXk6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUsIHN0ZDo6
Zm9yd2FyZDxSZWZQdHI8QXJyYXlCdWZmZXI+PihwYXNzZWRCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpOworICAgIHJldHVybiBKU1VpbnQ4QXJyYXk6OmNyZWF0ZShleGVjLCBzdHJ1Y3R1cmUs
IFdURk1vdmUoYnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTsKIH0KIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheUJhc2UuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOGE2ODc2MTE2ZjIxNmYwN2ZiODQxMTkyZGEzNDJiM2FhODNmOTcxYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5QmFzZS5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgotI2luY2x1ZGUgIkFy
cmF5QnVmZmVyVmlldy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1jbGFzcyBUeXBlZEFycmF5QmFzZSA6IHB1YmxpYyBBcnJheUJ1ZmZlclZpZXcgewotcHVi
bGljOgotICAgIFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUKj4oYmFzZUFk
ZHJlc3MoKSk7IH0KLQotICAgIGJvb2wgc2V0KFR5cGVkQXJyYXlCYXNlPFQ+KiBhcnJheSwgdW5z
aWduZWQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHNldEltcGwoYXJyYXksIG9mZnNl
dCAqIHNpemVvZihUKSk7Ci0gICAgfQotCi0gICAgYm9vbCBzZXRSYW5nZShjb25zdCBUKiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCwgdW5zaWduZWQgb2Zmc2V0KQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHNldFJhbmdlSW1wbChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgZGF0
YUxlbmd0aCAqIHNpemVvZihUKSwgb2Zmc2V0ICogc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICBi
b29sIHplcm9SYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHNpemVfdCBsZW5ndGgpCi0gICAgewotICAg
ICAgICByZXR1cm4gemVyb1JhbmdlSW1wbChvZmZzZXQgKiBzaXplb2YoVCksIGxlbmd0aCAqIHNp
emVvZihUKSk7Ci0gICAgfQotCi0gICAgLy8gT3ZlcnJpZGRlbiBmcm9tIEFycmF5QnVmZmVyVmll
dy4gVGhpcyBtdXN0IGJlIHB1YmxpYyBiZWNhdXNlIG9mCi0gICAgLy8gcnVsZXMgYWJvdXQgaW5o
ZXJpdGFuY2Ugb2YgbWVtYmVycyBpbiB0ZW1wbGF0ZSBjbGFzc2VzLCBhbmQKLSAgICAvLyBiZWNh
dXNlIGl0IGlzIGFjY2Vzc2VkIHZpYSBwb2ludGVycyB0byBzdWJjbGFzc2VzLgotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9sZW5ndGg7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2xlbmd0aCAqIHNpemVvZihUKTsKLSAgICB9Ci0KLSAgICAvLyBJbnZva2Vk
IGJ5IHRoZSBpbmRleGVkIGdldHRlci4gRG9lcyBub3QgcGVyZm9ybSByYW5nZSBjaGVja3M7IGNh
bGxlcgotICAgIC8vIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBzbyBhbmQgcmV0dXJuaW5nIHVu
ZGVmaW5lZCBhcyBuZWNlc3NhcnkuCi0gICAgVCBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
ICAgIHsKLSAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaW5kZXggPCBU
eXBlZEFycmF5QmFzZTxUPjo6bV9sZW5ndGgpOwotICAgICAgICByZXR1cm4gVHlwZWRBcnJheUJh
c2U8VD46OmRhdGEoKVtpbmRleF07Ci0gICAgfQotCi0gICAgYm9vbCBjaGVja0luYm91bmREYXRh
KHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgcG9zKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIChvZmZzZXQgPD0gbV9sZW5ndGgKLSAgICAgICAgICAgICYmIG9mZnNldCArIHBvcyA8PSBt
X2xlbmd0aAotICAgICAgICAgICAgLy8gY2hlY2sgb3ZlcmZsb3cKLSAgICAgICAgICAgICYmIG9m
ZnNldCArIHBvcyA+PSBvZmZzZXQpOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIFR5cGVkQXJy
YXlCYXNlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQotICAgICAgICA6IEFycmF5QnVmZmVyVmlldyhidWZmZXIsIGJ5
dGVPZmZzZXQpCi0gICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgU3ViY2xhc3M+Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3ViY2xh
c3M+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpCi0gICAgewotICAgICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobGVuZ3RoLCBzaXplb2YoVCkpOwot
ICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIucmVsZWFzZSgpLCAwLCBsZW5ndGgpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdWJjbGFzcz4gY3JlYXRlKGNvbnN0IFQqIGFycmF5LCB1bnNpZ25lZCBsZW5ndGgpCi0g
ICAgewotICAgICAgICBSZWZQdHI8U3ViY2xhc3M+IGEgPSBjcmVhdGU8U3ViY2xhc3M+KGxlbmd0
aCk7Ci0gICAgICAgIGlmIChhKQotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgIGEtPnNldChpLCBhcnJheVtpXSk7Ci0gICAg
ICAgIHJldHVybiBhLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3Vi
Y2xhc3M+Ci0gICAgc3RhdGljIFJlZlB0cjxTdWJjbGFzcz4gY3JlYXRlKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXI+IGJ1ZmZlciwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWYoYnVmZmVyKTsKLSAgICAgICAg
aWYgKCF2ZXJpZnlTdWJSYW5nZTxUPihidWYsIGJ5dGVPZmZzZXQsIGxlbmd0aCkpCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN1YmNs
YXNzKGJ1Zi5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGxlbmd0aCkpOwotICAgIH0KLQotICAgIHRl
bXBsYXRlIDxjbGFzcyBTdWJjbGFzcz4KLSAgICBzdGF0aWMgUmVmUHRyPFN1YmNsYXNzPiBjcmVh
dGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxB
cnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVu
Z3RoLCBzaXplb2YoVCkpOwotICAgICAgICBpZiAoIWJ1ZmZlci5nZXQoKSkKLSAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1cm4gY3JlYXRlPFN1YmNsYXNzPihidWZmZXIu
cmVsZWFzZSgpLCAwLCBsZW5ndGgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBTdWJj
bGFzcz4KLSAgICBSZWZQdHI8U3ViY2xhc3M+IHN1YmFycmF5SW1wbChpbnQgc3RhcnQsIGludCBl
bmQpIGNvbnN0Ci0gICAgewotICAgICAgICB1bnNpZ25lZCBvZmZzZXQsIGxlbmd0aDsKLSAgICAg
ICAgY2FsY3VsYXRlT2Zmc2V0QW5kTGVuZ3RoKHN0YXJ0LCBlbmQsIG1fbGVuZ3RoLCAmb2Zmc2V0
LCAmbGVuZ3RoKTsKLSAgICAgICAgY2xhbXBPZmZzZXRBbmROdW1FbGVtZW50czxUPihidWZmZXIo
KSwgbV9ieXRlT2Zmc2V0LCAmb2Zmc2V0LCAmbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZTxTdWJjbGFzcz4oYnVmZmVyKCksIG9mZnNldCwgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgbmV1dGVyKCkKLSAgICB7Ci0gICAgICAgIEFycmF5QnVmZmVyVmlldzo6bmV1dGVy
KCk7Ci0gICAgICAgIG1fbGVuZ3RoID0gMDsKLSAgICB9Ci0KLSAgICAvLyBXZSBkbyBub3Qgd2Fu
dCB0byBoYXZlIHRvIGFjY2VzcyB0aGlzIHZpYSBhIHZpcnR1YWwgZnVuY3Rpb24gaW4gc3ViY2xh
c3NlcywKLSAgICAvLyB3aGljaCBpcyB3aHkgaXQgaXMgcHJvdGVjdGVkIHJhdGhlciB0aGFuIHBy
aXZhdGUuCi0gICAgdW5zaWduZWQgbV9sZW5ndGg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQotdXNpbmcgSlNDOjpUeXBlZEFycmF5QmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDRhNzQxYjc5OTFjY2Vm
YjA1MmY1Yjk0NzNmODY5ZDExMGE4MTllMWYuLmM5OTA0YzA5MWY2MGFjYjMxOGEwYTQ0NzdlNTcz
MmE3OTI2OWE5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTg1NiwzNCArMTg1NiwzNCBAQCBjbGFzcyBDbG9u
ZURlc2VyaWFsaXplciA6IENsb25lQmFzZSB7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YXJyYXlCdWZmZXIgPSB0b1Bvc3NpYmx5U2hhcmVkQXJyYXlCdWZmZXIodm0sIGFycmF5QnVmZmVy
T2JqKTsKICAgICAgICAgc3dpdGNoIChhcnJheUJ1ZmZlclZpZXdTdWJ0YWcpIHsKICAgICAgICAg
Y2FzZSBEYXRhVmlld1RhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IGdldEpTVmFs
dWUoRGF0YVZpZXc6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQo
KSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSBnZXRKU1ZhbHVlKERhdGFWaWV3Ojpj
cmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgSW50OEFycmF5VGFnOgotICAg
ICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBJ
bnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7
CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmpl
Y3QsIEludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBs
ZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFVp
bnQ4QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywg
bV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNl
dCwgbGVuZ3RoKS5nZXQoKSk7CisgICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQ4QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVm
ZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgY2FzZSBVaW50OENsYW1wZWRBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5
QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDhDbGFtcGVkQXJy
YXk6OmNyZWF0ZShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7CisgICAg
ICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9nbG9iYWxPYmplY3QsIFVp
bnQ4Q2xhbXBlZEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZzZXQs
IGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
SW50MTZBcnJheVRhZzoKLSAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVj
LCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRlT2Zm
c2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMo
bV9leGVjLCBtX2dsb2JhbE9iamVjdCwgSW50MTZBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlC
dWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICBjYXNlIFVpbnQxNkFycmF5VGFnOgotICAgICAgICAgICAgYXJyYXlCdWZm
ZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MTZBcnJheTo6Y3JlYXRl
KGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgVWludDE2QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3RoKS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBJbnQzMkFycmF5VGFnOgot
ICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0
LCBJbnQzMkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0
KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFs
T2JqZWN0LCBJbnQzMkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1ZmZlciksIGJ5dGVPZmZz
ZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNh
c2UgVWludDMyQXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1f
ZXhlYywgbV9nbG9iYWxPYmplY3QsIFVpbnQzMkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5
dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAgICAgICAgYXJyYXlCdWZmZXJWaWV3ID0g
dG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBVaW50MzJBcnJheTo6Y3JlYXRlKFdURk1vdmUo
YXJyYXlCdWZmZXIpLCBieXRlT2Zmc2V0LCBsZW5ndGgpLmdldCgpKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICBjYXNlIEZsb2F0MzJBcnJheVRhZzoKLSAgICAgICAgICAgIGFy
cmF5QnVmZmVyVmlldyA9IHRvSlMobV9leGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQzMkFycmF5
OjpjcmVhdGUoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOworICAgICAg
ICAgICAgYXJyYXlCdWZmZXJWaWV3ID0gdG9KUyhtX2V4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBGbG9h
dDMyQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGFycmF5QnVmZmVyKSwgYnl0ZU9mZnNldCwgbGVuZ3Ro
KS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBGbG9hdDY0
QXJyYXlUYWc6Ci0gICAgICAgICAgICBhcnJheUJ1ZmZlclZpZXcgPSB0b0pTKG1fZXhlYywgbV9n
bG9iYWxPYmplY3QsIEZsb2F0NjRBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLCBieXRlT2Zmc2V0
LCBsZW5ndGgpLmdldCgpKTsKKyAgICAgICAgICAgIGFycmF5QnVmZmVyVmlldyA9IHRvSlMobV9l
eGVjLCBtX2dsb2JhbE9iamVjdCwgRmxvYXQ2NEFycmF5OjpjcmVhdGUoV1RGTW92ZShhcnJheUJ1
ZmZlciksIGJ5dGVPZmZzZXQsIGxlbmd0aCkuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlLmNwcAppbmRleCBiNzRjYWI0NzE2YmE5MTJiZTlmNjVmOTJkOGQ1OTliMTJiYWYz
NTNlLi42ZmI3N2MwN2EyZmE3MjA5MmNiZWU3MDgxZmEyMGZmZTMzNDA5N2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Gb250RmFjZS5jcHAKQEAgLTcyLDcgKzcyLDggQEAgRXhjZXB0aW9uT3I8UmVmPEZvbnRGYWNl
Pj4gRm9udEZhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmEK
ICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0sCiAgICAgICAgIFsmXSAoUmVmUHRy
PEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsKLSAgICAg
ICAgICAgIGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gSlNDOjpVaW50OEFycmF5OjpjcmVhdGUoYXJy
YXlCdWZmZXIsIDAsIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICAgICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCA9IGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgICAgICAg
ICBhdXRvIGFycmF5QnVmZmVyVmlldyA9IEpTQzo6VWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUo
YXJyYXlCdWZmZXIpLCAwLCBieXRlTGVuZ3RoKTsKICAgICAgICAgICAgIGRhdGFSZXF1aXJlc0Fz
eW5jaHJvbm91c0xvYWRpbmcgPSBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKHJlc3Vs
dC0+YmFja2luZygpLCBhcnJheUJ1ZmZlclZpZXcucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAg
ICAgICByZXR1cm4geyB9OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCmluZGV4IDdhYjdlY2JlNjE0YTVjNGYx
M2NlNjYzZGJkZjI5ZDJkNzY1YTJmZmUuLmZlZjk1ZGZhOWVkZjYyNDI4OTc0OTVlNjYxZTlkMzlj
ZjI3MDc2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb24uY3BwCkBAIC00MSw3ICs0MSw5IEBACiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVk
aWEuaD4KKyNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9E
YXRhVmlldy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvVHlwZWRBcnJheUlubGluZXMuaD4KICNpbmNs
dWRlIDxydW50aW1lL1VpbnQxNkFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTEwMjgsNyArMTAzMCw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpleHRyYWN0S2V5VVJJS2V5SURBbmRD
ZXJ0aWZpY2F0ZUZyb21Jbml0RGF0CiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBpbml0RGF0YUJ1
ZmZlciA9IGluaXREYXRhLT51bnNoYXJlZEJ1ZmZlcigpOwogCiAgICAgLy8gVXNlIGEgRGF0YVZp
ZXcgdG8gcmVhZCB1aW50MzIgdmFsdWVzIGZyb20gdGhlIGJ1ZmZlciwgYXMgVWludDMyQXJyYXkg
cmVxdWlyZXMgdGhlIHJlYWRzIGJlIGFsaWduZWQgb24gNC1ieXRlIGJvdW5kYXJpZXMuIAotICAg
IFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAg
IFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVh
dGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKTsKICAgICB1aW50MzJfdCBvZmZzZXQgPSAwOwogICAgIGJvb2wgc3RhdHVzID0gdHJ1ZTsK
IApAQCAtMTAzNyw3ICsxMDM5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRpZmljYXRlRnJvbUluaXREYXQKICAgICBpZiAo
IXN0YXR1cyB8fCBvZmZzZXQgKyBrZXlVUklMZW5ndGggPiBpbml0RGF0YS0+bGVuZ3RoKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJy
YXkgPSBVaW50MTZBcnJheTo6Y3JlYXRlKGluaXREYXRhQnVmZmVyLCBvZmZzZXQsIGtleVVSSUxl
bmd0aCk7CisgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9IFVpbnQxNkFycmF5
OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleVVSSUxlbmd0aCk7
CiAgICAgaWYgKCFrZXlVUklBcnJheSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMDQ5
LDcgKzEwNTEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZXh0cmFj
dEtleVVSSUtleUlEQW5kQ2VydGlmaWNhdGVGcm9tSW5pdERhdAogICAgIGlmICghc3RhdHVzIHx8
IG9mZnNldCArIGtleUlETGVuZ3RoID4gaW5pdERhdGEtPmxlbmd0aCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8VWludDhBcnJheT4ga2V5SURBcnJheSA9IFVpbnQ4QXJy
YXk6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlciwgb2Zmc2V0LCBrZXlJRExlbmd0aCk7CisgICAgUmVm
UHRyPFVpbnQ4QXJyYXk+IGtleUlEQXJyYXkgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFC
dWZmZXIuY29weVJlZigpLCBvZmZzZXQsIGtleUlETGVuZ3RoKTsKICAgICBpZiAoIWtleUlEQXJy
YXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTA2MSw3ICsxMDYzLDcgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmV4dHJhY3RLZXlVUklLZXlJREFuZENlcnRp
ZmljYXRlRnJvbUluaXREYXQKICAgICBpZiAoIXN0YXR1cyB8fCBvZmZzZXQgKyBjZXJ0aWZpY2F0
ZUxlbmd0aCA+IGluaXREYXRhLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgY2VydGlmaWNhdGUgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIG9mZnNl
dCwgY2VydGlmaWNhdGVMZW5ndGgpOworICAgIGNlcnRpZmljYXRlID0gVWludDhBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCBvZmZzZXQsIGNlcnRpZmljYXRlTGVuZ3RoKTsK
ICAgICBpZiAoIWNlcnRpZmljYXRlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0YuY3BwCmluZGV4IGNiZDBjM2M1YjQyMzA3MDhlOWIxZjZjZDVjN2UzOTY4NmU4ODZkZTQuLmU0
ZDBmOTE2OWQ0MjU0YjI5ZGUzMzg0NTdhMjY5ZjRiMDM0NWNiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cApAQCAtMTkxMSwxMyArMTkxMSwxNCBAQCBib29sIEFWRldyYXBwZXI6OnNob3VsZFdhaXRGb3JM
b2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0UgogICAgICAg
ICAvLyBbNCBieXRlczoga2V5VVJJIHNpemVdLCBba2V5VVJJIHNpemUgYnl0ZXM6IGtleVVSSV0K
ICAgICAgICAgdW5zaWduZWQga2V5VVJJU2l6ZSA9IGtleVVSSS5sZW5ndGgoKSAqIHNpemVvZihV
Q2hhcik7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gaW5pdERhdGFCdWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKDQgKyBrZXlVUklTaXplLCAxKTsKLSAgICAgICAgUmVmUHRyPEpTQzo6
RGF0YVZpZXc+IGluaXREYXRhVmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1
ZmZlciwgMCwgaW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIFJlZlB0cjxK
U0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERh
dGFCdWZmZXIuY29weVJlZigpLCAwLCBpbml0RGF0YUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAg
ICAgICAgaW5pdERhdGFWaWV3LT5zZXQ8dWludDMyX3Q+KDAsIGtleVVSSVNpemUsIHRydWUpOwog
Ci0gICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6
Y3JlYXRlKGluaXREYXRhQnVmZmVyLCA0LCBrZXlVUkkubGVuZ3RoKCkpOworICAgICAgICBSZWZQ
dHI8VWludDE2QXJyYXk+IGtleVVSSUFycmF5ID0gVWludDE2QXJyYXk6OmNyZWF0ZShpbml0RGF0
YUJ1ZmZlci5jb3B5UmVmKCksIDQsIGtleVVSSS5sZW5ndGgoKSk7CiAgICAgICAgIGtleVVSSUFy
cmF5LT5zZXRSYW5nZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oU3RyaW5nVmll
dyhrZXlVUkkpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwga2V5VVJJLmxlbmd0aCgp
IC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAwKTsKIAotICAgICAgICBSZWZQdHI8VWludDhBcnJh
eT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXRE
YXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0g
aW5pdERhdGFCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgUmVmUHRyPFVpbnQ4QXJyYXk+
IGluaXREYXRhID0gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoaW5pdERhdGFCdWZmZXIpLCAw
LCBieXRlTGVuZ3RoKTsKICAgICAgICAgaWYgKCFtX293bmVyLT5wbGF5ZXIoKS0+a2V5TmVlZGVk
KGluaXREYXRhLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRl
eCAyNjE1NmFjMWY3MzIzYzY2OGE4M2Y2ZDg2NDM4MWZmMmQ3MDM1MTBkLi4yOTkwZjdjODMxZWI5
YWEzZGU5ZmY5ZWE0OGU4ZjZhYThjNGMwM2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9u
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzgsNiArMzgsNyBAQAog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXQuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkFzc2V0UmVzb3VyY2VMb2FkZXIuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1ydW50aW1lLmg+Cisj
aW1wb3J0IDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKQEAg
LTEwMCw3ICsxMDEsOCBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bk9iakM6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmCiAgICAgZGVzdGluYXRpb25V
UkwgPSBTdHJpbmcoKTsKIAogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4ga2V5UmVxdWVzdEJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoW2tleVJlcXVlc3QuZ2V0KCkgYnl0ZXNdLCBba2V5UmVx
dWVzdC5nZXQoKSBsZW5ndGhdKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKGtleVJl
cXVlc3RCdWZmZXIsIDAsIGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKSk7CisgICAgdW5z
aWduZWQgYnl0ZUxlbmd0aCA9IGtleVJlcXVlc3RCdWZmZXItPmJ5dGVMZW5ndGgoKTsKKyAgICBy
ZXR1cm4gVWludDhBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5UmVxdWVzdEJ1ZmZlciksIDAsIGJ5
dGVMZW5ndGgpOwogfQogCiB2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDOjpyZWxlYXNl
S2V5cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNjhmYWQxYzZmMTY4YTk4YzZjOGFi
MmE5YjAwODU3NTM5ZmE2ZGZjLi5mMDM4ZGEwNWE4N2EzNWQ0YzFmZGNhNDc2ZmFmOTJjYTI0MzE0
YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE3NzAsMTkgKzE3NzAsMjIgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0Rm9yTG9hZGlu
Z09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgLy8gWzQgYnl0ZXM6IGtleVVSSSBzaXplXSwg
W2tleVVSSSBzaXplIGJ5dGVzOiBrZXlVUkldCiAgICAgICAgIHVuc2lnbmVkIGtleVVSSVNpemUg
PSBrZXlVUkkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwogICAgICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGluaXREYXRhQnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZSg0ICsga2V5VVJJU2l6
ZSwgMSk7Ci0gICAgICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiBpbml0RGF0YVZpZXcgPSBKU0M6
OkRhdGFWaWV3OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOworICAgICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gaW5pdERhdGFCdWZmZXIt
PmJ5dGVMZW5ndGgoKTsKKyAgICAgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IGluaXREYXRhVmll
dyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShpbml0RGF0YUJ1ZmZlci5jb3B5UmVmKCksIDAsIGJ5
dGVMZW5ndGgpOwogICAgICAgICBpbml0RGF0YVZpZXctPnNldDx1aW50MzJfdD4oMCwga2V5VVJJ
U2l6ZSwgdHJ1ZSk7CiAKLSAgICAgICAgUmVmUHRyPFVpbnQxNkFycmF5PiBrZXlVUklBcnJheSA9
IFVpbnQxNkFycmF5OjpjcmVhdGUoaW5pdERhdGFCdWZmZXIsIDQsIGtleVVSSS5sZW5ndGgoKSk7
CisgICAgICAgIFJlZlB0cjxVaW50MTZBcnJheT4ga2V5VVJJQXJyYXkgPSBVaW50MTZBcnJheTo6
Y3JlYXRlKGluaXREYXRhQnVmZmVyLmNvcHlSZWYoKSwgNCwga2V5VVJJLmxlbmd0aCgpKTsKICAg
ICAgICAga2V5VVJJQXJyYXktPnNldFJhbmdlKFN0cmluZ1ZpZXcoa2V5VVJJKS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKSwga2V5VVJJLmxlbmd0aCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLCAw
KTsKIAotICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5Ojpj
cmVhdGUoaW5pdERhdGFCdWZmZXIsIDAsIGluaXREYXRhQnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwor
ICAgICAgICBSZWZQdHI8VWludDhBcnJheT4gaW5pdERhdGEgPSBVaW50OEFycmF5OjpjcmVhdGUo
V1RGTW92ZShpbml0RGF0YUJ1ZmZlciksIDAsIGJ5dGVMZW5ndGgpOwogICAgICAgICBpZiAoIXBs
YXllcigpLT5rZXlOZWVkZWQoaW5pdERhdGEuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIG1fa2V5VVJJVG9SZXF1ZXN0TWFwLnNldChrZXlVUkksIGF2UmVxdWVz
dCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAoc2NoZW1lID09ICJjbGVh
cmtleSIpIHsKKyAgICB9CisKKyAgICBpZiAoc2NoZW1lID09ICJjbGVhcmtleSIpIHsKICAgICAg
ICAgU3RyaW5nIGtleUlEID0gW1tbYXZSZXF1ZXN0IHJlcXVlc3RdIFVSTF0gcmVzb3VyY2VTcGVj
aWZpZXJdOwogICAgICAgICBTdHJpbmdWaWV3IGtleUlEVmlldyhrZXlJRCk7CiAgICAgICAgIENT
dHJpbmcgdXRmOEVuY29kZWRLZXlJZCA9IFVURjhFbmNvZGluZygpLmVuY29kZShrZXlJRFZpZXcs
IFVSTEVuY29kZWRFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>