<?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>142078</bug_id>
          
          <creation_ts>2015-02-27 00:28:27 -0800</creation_ts>
          <short_desc>Node::hasEditableStyle and isEditablePosition have too many options</short_desc>
          <delta_ts>2015-02-27 18:41:39 -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>HTML Editing</component>
          <version>528+ (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>
          
          <blocked>129034</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072672</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-27 00:28:27 -0800</bug_when>
    <thetext>Don&apos;t pollute Node with EditableType. For starters, Node.h shouldn&apos;t include EditingBoundary.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072924</commentid>
    <comment_count>1</comment_count>
      <attachid>247576</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-02-27 16:42:24 -0800</bug_when>
    <thetext>Created attachment 247576
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072952</commentid>
    <comment_count>2</comment_count>
      <attachid>247576</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-27 18:41:32 -0800</bug_when>
    <thetext>Comment on attachment 247576
Cleanup

Clearing flags on attachment: 247576

Committed r180809: &lt;http://trac.webkit.org/changeset/180809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072953</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-27 18:41:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247576</attachid>
            <date>2015-02-27 16:42:24 -0800</date>
            <delta_ts>2015-02-27 18:41:32 -0800</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-142078-20150227164210.patch</filename>
            <type>text/plain</type>
            <size>27957</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTI3ZmRkNTM4Mzc1MDQ4
YTBjNjU3OWU1NTJmOWVhMjExZWU0N2Q5NC4uMjI3Yzc1ZmQwY2FlYTBkNzBiZjllZGFkZmY4MDYz
N2UwNGFmMTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE1LTAyLTI3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE5vZGU6Omhhc0VkaXRhYmxl
U3R5bGUgYW5kIGlzRWRpdGFibGVQb3NpdGlvbiBoYXZlIHRvbyBtYW55IG9wdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjA3OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmVkIHRoZSBjb2Rl
IHRoYXQgZGVhbHQgd2l0aCBhY2Nlc3NpYmlsaXR5IHRvIGh0bWxlZGl0aW5nLmNwcCBmcm9tIE5v
ZGUuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcworICAgICAgICBuZXcgZWRpdGluZyBoZWxwZXIgZnVu
Y3Rpb25zIGhhc0VkaXRhYmxlU3R5bGUgYW5kIGlzRWRpdGFibGVOb2RlIGZvciB0aGlzIHB1cnBv
c2UuCisKKyAgICAgICAgQWxzbyByZW1vdmVkIFVzZXJTZWxlY3RBbGxUcmVhdG1lbnQgZnJvbSBp
c0NvbnRlbnRFZGl0YWJsZSdzIGFyZ3VtZW50cyBpbiB0aGUgZmF2b3Igb2YgdXNpbmcKKyAgICAg
ICAgbmV3bHkgZXh0cmFjdGVkIGNvbXB1dGVFZGl0YWJpbGl0eSBpbiBjYWxsIHNpdGVzIHRoYXQg
c3BlY2lmeSB0aGlzIG9wdGlvbiBzaW5jZSBpc0NvbnRlbnRFZGl0YWJsZQorICAgICAgICBpcyBh
IHB1YmxpYyBET00gQVBJLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBzaG91
bGQgYmUgbm8gb2JzZXJ2YWJsZSBiZWhhdmlvciBjaGFuZ2VzLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmg6IFJlbW92ZWQgdGhlIGRlY2xhcmF0aW9uIG9mIGFuIHVu
ZGVmaW5lZCBmdW5jdGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNob3VsZFVzZUlucHV0TWV0aG9kKTogVXNlcyBuZXdseSBhZGRl
ZCBjb21wdXRlRWRpdGFiaWxpdHkuCisKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjppc0NvbnRlbnRFZGl0YWJsZSk6IERpdHRvLiBObyBsb25nZXIgdGFr
ZXMgVXNlclNlbGVjdEFsbFRyZWF0bWVudCBhcyBhbiBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmlzQ29udGVudFJpY2hseUVkaXRhYmxlKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpjb21wdXRlRWRpdGFiaWxpdHkpOiBSZW5hbWVkIGZyb20gaGFzRWRpdGFibGVT
dHlsZSB0byBhdm9pZCB0aGUgY29uZnVzaW9uIHdpdGgKKyAgICAgICAgYSBoZWxwZXIgZnVuY3Rp
b24gb2YgdGhlIHNhbWUgbmFtZS4gQWRkZWQgU2hvdWxkVXBkYXRlU3R5bGUgYXMgYW4gYXJndW1l
bnQgdG8gb3B0aW9uYWxseSB1cGRhdGUKKyAgICAgICAgc3R5bGUgdHJlZS4gQWxzbyByZXR1cm5z
IHRyaS1zdGF0ZSBFZGl0YWJpbGl0eSBlbnVtIGluc3RlYWQgb2YgcmV0dXJuaW5nIGEgYm9vbGVh
biBiYXNlZCBvbgorICAgICAgICB0aGUgdmFsdWUgb2YgRWRpdGFibGVMZXZlbCBhcmd1bWVudC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkpOiBNb3Zl
ZCB0byBodG1sZWRpdGluZy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cyk6IFVzZXMgbmV3bHkgYWRkZWQgY29tcHV0ZUVkaXRhYmlsaXR5
LgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cm9vdEVkaXRhYmxlRWxlbWVudCk6IE1vdmVkIHRv
IGh0bWxlZGl0aW5nLmNwcC4KKworICAgICAgICAqIGRvbS9Ob2RlLmg6IE5vIGxvbmdlciBpbmNs
dWRlcyBFZGl0aW5nQm91bmRhcnkuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzQ29udGVu
dEVkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc0VkaXRhYmxlU3R5bGUpOiBO
byBsb25nZXIgdGFrZXMgRWRpdGFibGVUeXBlIGFzIGFuIGFyZ3VtZW50LgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6aGFzUmljaGx5RWRpdGFibGVTdHlsZSk6IERpdHRvLgorCisgICAgICAgICog
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0
eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCk6IFVzZXMgbmV3bHkgYWRk
ZWQgaXNFZGl0YWJsZU5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
c3Vycm91bmROb2RlUmFuZ2VXaXRoRWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcv
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVG
cm9tVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYXJldEJhc2U6OmludmFsaWRh
dGVDYXJldFJlY3QpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL0luc2VydE5vZGVCZWZvcmVD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpk
b0FwcGx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNlcnROb2RlQmVmb3JlQ29tbWFu
ZDo6ZG9VbmFwcGx5KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVOb2RlQ29tbWFuZDo6ZG9BcHBseSk6IERp
dHRvLgorCisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb246Omhhc0VkaXRhYmxlU3R5bGUpOiBTaW5jZSB0aGlz
IGlzIHRoZSBvbmx5IGNhbGxlciBvZiBpc0VkaXRhYmxlUG9zaXRpb24KKyAgICAgICAgd2hpY2gg
c2V0cyBEb05vdFVwZGF0ZVN0eWxlLCBkaXJlY3RseSBjYWxsIGhhc0VkaXRhYmxlU3R5bGUgb24g
dGhlIGNvbnRhaW5lciBub2RlIGluc3RlYWQuIFRoaXMgd2FzCisgICAgICAgIG5vdCBwb3NzaWJs
ZSBwcmlvciB0byByMTgwNzI2IGJlY2F1c2UgaXNFZGl0YWJsZVBvc2l0aW9uIGhhZCB0byBtb3Zl
IG91dCBvZiB0YWJsZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KTogVXNlcyBu
ZXdseSBhZGRlZCBoYXNFZGl0YWJsZVN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6bmV4dExlYWZX
aXRoU2FtZUVkaXRhYmlsaXR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpyb290RWRpdGFi
bGVPckRvY3VtZW50RWxlbWVudCk6IEV4dHJhY3RlZCBmcm9tIHByZXZpb3VzTGluZVBvc2l0aW9u
LiBVc2UgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICBpbiBodG1sZWRpdGluZy5jcHAgaW5zdGVh
ZCBvZiBtZW1iZXIgZnVuY3Rpb25zIG9mIE5vZGUgc2luY2UgdGhleSBubyBsb25nZXIgc3VwcG9y
dCBFZGl0YWJsZVR5cGUuCisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xpbmVQb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpuZXh0TGluZVBvc2l0aW9uKToKKworICAgICAgICAqIGVkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGlnaGVzdEVkaXRhYmxlUm9v
dCk6IFVzZXMgbmV3bHkgYWRkZWQgaGFzRWRpdGFibGVTdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6
OmlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkpOiBNb3ZlZCBmcm9tIE5vZGUuCisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlRWRpdGFiaWxpdHkpOiBFeHRyYWN0ZWQgZnJvbSBpc0VkaXRhYmxlUG9z
aXRpb24uCisgICAgICAgIChXZWJDb3JlOjpoYXNFZGl0YWJsZVN0eWxlKTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjppc0VkaXRhYmxlTm9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
aXNFZGl0YWJsZVBvc2l0aW9uKTogTm93IGNhbGxzIGNvbXB1dGVFZGl0YWJpbGl0eS4KKyAgICAg
ICAgKFdlYkNvcmU6OmlzUmljaGx5RWRpdGFibGVQb3NpdGlvbik6IE5vIGxvbmdlciB0YWtlcyBF
ZGl0YWJsZVR5cGUgc2luY2UgdGhhdCB2YXJpYW50IHdhcyBuZXZlciB1c2VkLgorICAgICAgICAo
V2ViQ29yZTo6ZWRpdGFibGVSb290Rm9yUG9zaXRpb24pOiBNb3ZlZCB0aGUgY29kZSBmcm9tIE5v
ZGU6OnJvb3RFZGl0YWJsZUVsZW1lbnQuCisKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5n
Lmg6CisKIDIwMTUtMDItMjYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgaU9TIGJ1aWxkIGZpeCBhZnRlciByMTgwNzE3LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCBmODNlYTdkNGE4N2VmY2ZkMWJmMWUw
ZjdiYjMwMGJkNDlhNDNhYTQwLi5iZmE5Mjc3MjY1NDYzOTBjNWU0ZDlmZDc0YzIwYzkyMjU4ZTM5
OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApA
QCAtMTQ2LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUFYSUQoQWNjZXNzaWJp
bGl0eU9iamVjdCopOwogICAgIGJvb2wgaXNJRGluVXNlKEFYSUQgaWQpIGNvbnN0IHsgcmV0dXJu
IG1faWRzSW5Vc2UuY29udGFpbnMoaWQpOyB9CiAKLSAgICBFbGVtZW50KiByb290QVhFZGl0YWJs
ZUVsZW1lbnQoTm9kZSopOwogICAgIGNvbnN0IEVsZW1lbnQqIHJvb3RBWEVkaXRhYmxlRWxlbWVu
dChjb25zdCBOb2RlKik7CiAgICAgYm9vbCBub2RlSXNUZXh0Q29udHJvbChjb25zdCBOb2RlKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkMDkzMjIyMGMxMzFiYzg3YWQ4OGFmOWZiYWEy
MWQ3Y2QwMTVhMzgwLi43ZGZlY2JkNWU1ZWE2MmM0MDdiYjVkOGQxN2EyNTMxNmZhMWIzNWFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgYm9vbCBFbGVtZW50Ojpp
c01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIAogYm9vbCBFbGVtZW50OjpzaG91bGRVc2VJbnB1dE1l
dGhvZCgpCiB7Ci0gICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKFVzZXJTZWxlY3RBbGxJc0Fs
d2F5c05vbkVkaXRhYmxlKTsKKyAgICByZXR1cm4gY29tcHV0ZUVkaXRhYmlsaXR5KFVzZXJTZWxl
Y3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlLCBTaG91bGRVcGRhdGVTdHlsZTo6VXBkYXRlKSAhPSBF
ZGl0YWJpbGl0eTo6UmVhZE9ubHk7CiB9CiAKIGJvb2wgRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUV2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGludCBkZXRhaWwsIEVsZW1lbnQqIHJlbGF0ZWRUYXJnZXQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKaW5kZXggZWJmNDYxODdmYjdmYWQ0OGFiODg0OGU5YWIwNDA0NTRmOGM5NTA4
MS4uZjQ0ODc2NDc0ZDQzYjI4ODU5ZWJhZGQwNTQyOGRmYTJlMjlkMjg5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcApAQCAtNTM3LDE2ICs1MzcsMTQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBOb2RlOjpuYW1l
c3BhY2VVUkkoKSBjb25zdAogICAgIHJldHVybiBudWxsQXRvbTsKIH0KIAotYm9vbCBOb2RlOjpp
c0NvbnRlbnRFZGl0YWJsZShVc2VyU2VsZWN0QWxsVHJlYXRtZW50IHRyZWF0bWVudCkKK2Jvb2wg
Tm9kZTo6aXNDb250ZW50RWRpdGFibGUoKQogewotICAgIGRvY3VtZW50KCkudXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOwotICAgIHJldHVybiBoYXNFZGl0YWJsZVN0eWxlKEVkaXRhYmxlLCB0cmVhdG1l
bnQpOworICAgIHJldHVybiBjb21wdXRlRWRpdGFiaWxpdHkoVXNlclNlbGVjdEFsbERvZXNOb3RB
ZmZlY3RFZGl0YWJpbGl0eSwgU2hvdWxkVXBkYXRlU3R5bGU6OlVwZGF0ZSkgIT0gRWRpdGFiaWxp
dHk6OlJlYWRPbmx5OwogfQogCiBib29sIE5vZGU6OmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkK
IHsKLSAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKLSAgICByZXR1cm4gaGFz
RWRpdGFibGVTdHlsZShSaWNobHlFZGl0YWJsZSwgVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRp
dGFibGUpOworICAgIHJldHVybiBjb21wdXRlRWRpdGFiaWxpdHkoVXNlclNlbGVjdEFsbElzQWx3
YXlzTm9uRWRpdGFibGUsIFNob3VsZFVwZGF0ZVN0eWxlOjpVcGRhdGUpID09IEVkaXRhYmlsaXR5
OjpDYW5FZGl0UmljaGx5OwogfQogCiB2b2lkIE5vZGU6Omluc3BlY3QoKQpAQCAtNTU1LDE1ICs1
NTMsMTggQEAgdm9pZCBOb2RlOjppbnNwZWN0KCkKICAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS5pbnNwZWN0KHRoaXMpOwogfQogCi1ib29sIE5vZGU6Omhh
c0VkaXRhYmxlU3R5bGUoRWRpdGFibGVMZXZlbCBlZGl0YWJsZUxldmVsLCBVc2VyU2VsZWN0QWxs
VHJlYXRtZW50IHRyZWF0bWVudCkgY29uc3QKK05vZGU6OkVkaXRhYmlsaXR5IE5vZGU6OmNvbXB1
dGVFZGl0YWJpbGl0eShVc2VyU2VsZWN0QWxsVHJlYXRtZW50IHRyZWF0bWVudCwgU2hvdWxkVXBk
YXRlU3R5bGUgc2hvdWxkVXBkYXRlU3R5bGUpIGNvbnN0CiB7CisgICAgaWYgKHNob3VsZFVwZGF0
ZVN0eWxlID09IFNob3VsZFVwZGF0ZVN0eWxlOjpVcGRhdGUpCisgICAgICAgIGRvY3VtZW50KCku
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCiAgICAgaWYgKCFkb2N1bWVudCgpLmhhc0xpdmluZ1Jl
bmRlclRyZWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRWRpdGFi
aWxpdHk6OlJlYWRPbmx5OwogICAgIGlmIChkb2N1bWVudCgpLmZyYW1lKCkgJiYgZG9jdW1lbnQo
KS5mcmFtZSgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS5mcmFtZSgpLT5wYWdlKCktPmlzRWRpdGFi
bGUoKSAmJiAhY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybiBFZGl0YWJpbGl0eTo6Q2FuRWRpdFJpY2hseTsKIAogICAgIGlmIChpc1Bz
ZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gRWRp
dGFiaWxpdHk6OlJlYWRPbmx5OwogCiAgICAgLy8gSWRlYWxseSB3ZSdkIGNhbGwgQVNTRVJUKCFu
ZWVkc1N0eWxlUmVjYWxjKCkpIGhlcmUsIGJ1dAogICAgIC8vIENvbnRhaW5lck5vZGU6OnNldEZv
Y3VzKCkgY2FsbHMgc2V0TmVlZHNTdHlsZVJlY2FsYygpLCBzbyB0aGUgYXNzZXJ0aW9uCkBAIC01
NzksNDAgKzU4MCwyMiBAQCBib29sIE5vZGU6Omhhc0VkaXRhYmxlU3R5bGUoRWRpdGFibGVMZXZl
bCBlZGl0YWJsZUxldmVsLCBVc2VyU2VsZWN0QWxsVHJlYXRtZW50CiAgICAgICAgIC8vIEVsZW1l
bnRzIHdpdGggdXNlci1zZWxlY3Q6IGFsbCBzdHlsZSBhcmUgY29uc2lkZXJlZCBhdG9taWMKICAg
ICAgICAgLy8gdGhlcmVmb3JlIG5vbiBlZGl0YWJsZS4KICAgICAgICAgaWYgKHRyZWF0bWVudCA9
PSBVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSAmJiBzdHlsZS0+dXNlclNlbGVjdCgp
ID09IFNFTEVDVF9BTEwpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBy
ZXR1cm4gRWRpdGFiaWxpdHk6OlJlYWRPbmx5OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFN
KHRyZWF0bWVudCk7CiAjZW5kaWYKICAgICAgICAgc3dpdGNoIChzdHlsZS0+dXNlck1vZGlmeSgp
KSB7CiAgICAgICAgIGNhc2UgUkVBRF9PTkxZOgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpSZWFkT25seTsKICAgICAgICAgY2FzZSBS
RUFEX1dSSVRFOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4g
RWRpdGFiaWxpdHk6OkNhbkVkaXRSaWNobHk7CiAgICAgICAgIGNhc2UgUkVBRF9XUklURV9QTEFJ
TlRFWFRfT05MWToKLSAgICAgICAgICAgIHJldHVybiBlZGl0YWJsZUxldmVsICE9IFJpY2hseUVk
aXRhYmxlOworICAgICAgICAgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpDYW5FZGl0UGxhaW5UZXh0
OwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBFZGl0YWJpbGl0eTo6UmVhZE9ubHk7CiAgICAgfQot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBOb2RlOjppc0VkaXRhYmxlVG9BY2Nlc3NpYmls
aXR5KEVkaXRhYmxlTGV2ZWwgZWRpdGFibGVMZXZlbCkgY29uc3QKLXsKLSAgICBpZiAoaGFzRWRp
dGFibGVTdHlsZShlZGl0YWJsZUxldmVsKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAv
LyBGSVhNRTogUmVzcGVjdCBlZGl0YWJsZUxldmVsIGZvciBBUklBIGVkaXRhYmxlIGVsZW1lbnRz
LgotICAgIGlmIChlZGl0YWJsZUxldmVsID09IFJpY2hseUVkaXRhYmxlKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBBU1NFUlQoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJs
ZWQoKSk7Ci0gICAgQVNTRVJUKGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpOwot
Ci0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hlLT5yb290QVhFZGl0YWJsZUVsZW1lbnQo
dGhpcyk7Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpSZWFk
T25seTsKIH0KIAogUmVuZGVyQm94KiBOb2RlOjpyZW5kZXJCb3goKSBjb25zdApAQCAtMTAzMCwx
NiArMTAxMyw2IEBAIGJvb2wgTm9kZTo6aXNSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QKICAg
ICAgICAgfHwgIXBhcmVudE5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpIHx8IGhhc1RhZ05hbWUoYm9k
eVRhZykpOwogfQogCi1FbGVtZW50KiBOb2RlOjpyb290RWRpdGFibGVFbGVtZW50KEVkaXRhYmxl
VHlwZSBlZGl0YWJsZVR5cGUpIGNvbnN0Ci17Ci0gICAgaWYgKGVkaXRhYmxlVHlwZSA9PSBIYXNF
ZGl0YWJsZUFYUm9sZSkgewotICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1
bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQotICAgICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8RWxlbWVudCo+KGNhY2hlLT5yb290QVhFZGl0YWJsZUVsZW1lbnQodGhpcykpOwotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gcm9vdEVkaXRhYmxlRWxlbWVudCgpOwotfQotCiBFbGVtZW50
KiBOb2RlOjpyb290RWRpdGFibGVFbGVtZW50KCkgY29uc3QKIHsKICAgICBFbGVtZW50KiByZXN1
bHQgPSBudWxscHRyOwpAQCAtMjE2Myw3ICsyMTM2LDggQEAgYm9vbCBOb2RlOjp3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoZG93
bmNhc3Q8RWxlbWVudD4oKnRoaXMpLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGlzQ29udGVudEVkaXRhYmxlKFVzZXJTZWxlY3RBbGxJ
c0Fsd2F5c05vbkVkaXRhYmxlKSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91
c2V1cEV2ZW50KSB8fCBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubW91c2Vkb3duRXZl
bnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB8fCBoYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVFdmVudCk7CisgICAgcmV0dXJu
IGNvbXB1dGVFZGl0YWJpbGl0eShVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSwgU2hv
dWxkVXBkYXRlU3R5bGU6OlVwZGF0ZSkgIT0gRWRpdGFiaWxpdHk6OlJlYWRPbmx5CisgICAgICAg
IHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpIHx8IGhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkgfHwgaGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHx8IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50
TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBk
Y2NlMjdhMDIwNGRlNDgxMjE2ZWM3ZTNiYTZkMmI0NjNjNmQ0NzQ1Li4yNDY1YjA2ZWZiZDZlOTZi
MTFkZjhkODk3ZTE5ZmJiNzFmODVjZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI1LDcgKzI1LDYgQEAK
ICNpZm5kZWYgTm9kZV9oCiAjZGVmaW5lIE5vZGVfaAogCi0jaW5jbHVkZSAiRWRpdGluZ0JvdW5k
YXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJVUkxIYXNoLmgiCiAj
aW5jbHVkZSAiTGF5b3V0UmVjdC5oIgpAQCAtMzEzLDcgKzMxMiw2IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNSb290RWRpdGFibGVFbGVtZW50KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
RWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIHJvb3RF
ZGl0YWJsZUVsZW1lbnQoRWRpdGFibGVUeXBlKSBjb25zdDsKIAogICAgIC8vIENhbGxlZCBieSB0
aGUgcGFyc2VyIHdoZW4gdGhpcyBlbGVtZW50J3MgY2xvc2UgdGFnIGlzIHJlYWNoZWQsCiAgICAg
Ly8gc2lnbmFsaW5nIHRoYXQgYWxsIGNoaWxkIHRhZ3MgaGF2ZSBiZWVuIHBhcnNlZCBhbmQgYWRk
ZWQuCkBAIC0zNTgsMzUgKzM1NiwyNSBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJTZWxlY3RBbGxE
b2VzTm90QWZmZWN0RWRpdGFiaWxpdHksCiAgICAgICAgIFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05v
bkVkaXRhYmxlCiAgICAgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGVudEVkaXRh
YmxlKFVzZXJTZWxlY3RBbGxUcmVhdG1lbnQgPSBVc2VyU2VsZWN0QWxsRG9lc05vdEFmZmVjdEVk
aXRhYmlsaXR5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ29udGVudEVkaXRhYmxlKCk7
CiAgICAgYm9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbnNwZWN0KCk7CiAKLSAgICBib29sIGhhc0VkaXRhYmxlU3R5bGUoRWRpdGFibGVU
eXBlIGVkaXRhYmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlLCBVc2VyU2VsZWN0QWxsVHJlYXRt
ZW50IHRyZWF0bWVudCA9IFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSBjb25zdAor
ICAgIGJvb2wgaGFzRWRpdGFibGVTdHlsZShVc2VyU2VsZWN0QWxsVHJlYXRtZW50IHRyZWF0bWVu
dCA9IFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSBjb25zdAogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChlZGl0YWJsZVR5cGUpIHsKLSAgICAgICAgY2FzZSBDb250ZW50SXNFZGl0YWJs
ZToKLSAgICAgICAgICAgIHJldHVybiBoYXNFZGl0YWJsZVN0eWxlKEVkaXRhYmxlLCB0cmVhdG1l
bnQpOwotICAgICAgICBjYXNlIEhhc0VkaXRhYmxlQVhSb2xlOgotICAgICAgICAgICAgcmV0dXJu
IGlzRWRpdGFibGVUb0FjY2Vzc2liaWxpdHkoRWRpdGFibGUpOwotICAgICAgICB9Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBjb21wdXRlRWRpdGFiaWxpdHkodHJlYXRtZW50LCBTaG91bGRVcGRhdGVTdHlsZTo6RG9O
b3RVcGRhdGUpICE9IEVkaXRhYmlsaXR5OjpSZWFkT25seTsKICAgICB9Ci0KLSAgICBib29sIGhh
c1JpY2hseUVkaXRhYmxlU3R5bGUoRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSA9IENvbnRlbnRJ
c0VkaXRhYmxlKSBjb25zdAorICAgIC8vIEZJWE1FOiBSZXBsYWNlIGV2ZXJ5IHVzZSBvZiB0aGlz
IGZ1bmN0aW9uIGJ5IGhlbHBlcnMgaW4gaHRtbGVkaXRpbmcuaAorICAgIGJvb2wgaGFzUmljaGx5
RWRpdGFibGVTdHlsZSgpIGNvbnN0CiAgICAgewotICAgICAgICBzd2l0Y2ggKGVkaXRhYmxlVHlw
ZSkgewotICAgICAgICBjYXNlIENvbnRlbnRJc0VkaXRhYmxlOgotICAgICAgICAgICAgcmV0dXJu
IGhhc0VkaXRhYmxlU3R5bGUoUmljaGx5RWRpdGFibGUsIFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05v
bkVkaXRhYmxlKTsKLSAgICAgICAgY2FzZSBIYXNFZGl0YWJsZUFYUm9sZToKLSAgICAgICAgICAg
IHJldHVybiBpc0VkaXRhYmxlVG9BY2Nlc3NpYmlsaXR5KFJpY2hseUVkaXRhYmxlKTsKLSAgICAg
ICAgfQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gY29tcHV0ZUVkaXRhYmlsaXR5KFVzZXJTZWxlY3RBbGxJc0Fsd2F5
c05vbkVkaXRhYmxlLCBTaG91bGRVcGRhdGVTdHlsZTo6RG9Ob3RVcGRhdGUpID09IEVkaXRhYmls
aXR5OjpDYW5FZGl0UmljaGx5OwogICAgIH0KIAorICAgIGVudW0gY2xhc3MgRWRpdGFiaWxpdHkg
eyBSZWFkT25seSwgQ2FuRWRpdFBsYWluVGV4dCwgQ2FuRWRpdFJpY2hseSB9OworICAgIGVudW0g
Y2xhc3MgU2hvdWxkVXBkYXRlU3R5bGUgeyBVcGRhdGUsIERvTm90VXBkYXRlIH07CisgICAgV0VC
Q09SRV9FWFBPUlQgRWRpdGFiaWxpdHkgY29tcHV0ZUVkaXRhYmlsaXR5KFVzZXJTZWxlY3RBbGxU
cmVhdG1lbnQsIFNob3VsZFVwZGF0ZVN0eWxlKSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JU
IExheW91dFJlY3QgcmVuZGVyUmVjdChib29sKiBpc1JlcGxhY2VkKTsKICAgICBJbnRSZWN0IHBp
eGVsU25hcHBlZFJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCkgeyByZXR1cm4gc25hcHBlZElu
dFJlY3QocmVuZGVyUmVjdChpc1JlcGxhY2VkKSk7IH0KIApAQCAtNjg5LDEwICs2NzcsNiBAQCBw
cml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKICAgICBi
b29sIGhhc1RyZWVTaGFyZWRQYXJlbnQoKSBjb25zdCB7IHJldHVybiAhIXBhcmVudE5vZGUoKTsg
fQogCi0gICAgZW51bSBFZGl0YWJsZUxldmVsIHsgRWRpdGFibGUsIFJpY2hseUVkaXRhYmxlIH07
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNFZGl0YWJsZVN0eWxlKEVkaXRhYmxlTGV2ZWws
IFVzZXJTZWxlY3RBbGxUcmVhdG1lbnQgPSBVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJs
ZSkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VkaXRhYmxlVG9BY2Nlc3NpYmls
aXR5KEVkaXRhYmxlTGV2ZWwpIGNvbnN0OwotCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApp
bmRleCBhZDNkOTU0M2VkZjk0NTBjODJlNzhhODNhNDMyNzRkMWM5N2E5YmMyLi5lMzNiOGY2MWRi
MjQzZjg4ZmE2MzI5YWZlMzI5NzAwOTViYjcyODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtODc5LDcgKzg3OSw3IEBAIGJvb2wgQXBwbHlT
dHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoRWRpdGluZ1N0eWxlKiBz
dHlsZSwgUGFzc1JlCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCi0gICAgaWYgKCFlbGVtZW50
LT5wYXJlbnROb2RlKCkgfHwgIWVsZW1lbnQtPnBhcmVudE5vZGUoKS0+aXNDb250ZW50RWRpdGFi
bGUoTm9kZTo6VXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUpKQorICAgIGlmICghZWxl
bWVudC0+cGFyZW50Tm9kZSgpIHx8ICFpc0VkaXRhYmxlTm9kZSgqZWxlbWVudC0+cGFyZW50Tm9k
ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGlzU3R5bGVkSW5saW5lRWxl
bWVudFRvUmVtb3ZlKGVsZW1lbnQuZ2V0KCkpKSB7CkBAIC0xMzQ5LDcgKzEzNDksNyBAQCB2b2lk
IEFwcGx5U3R5bGVDb21tYW5kOjpzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KFBhc3NSZWZQ
dHI8Tm9kZT4gcGFzc2VkU3RhcgogICAgIFJlZlB0cjxOb2RlPiBub2RlID0gc3RhcnROb2RlOwog
ICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gbm9kZS0+bmV4
dFNpYmxpbmcoKTsKLSAgICAgICAgaWYgKG5vZGUtPmlzQ29udGVudEVkaXRhYmxlKE5vZGU6OlVz
ZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSkgeworICAgICAgICBpZiAoaXNFZGl0YWJs
ZU5vZGUoKm5vZGUpKSB7CiAgICAgICAgICAgICByZW1vdmVOb2RlKG5vZGUpOwogICAgICAgICAg
ICAgYXBwZW5kTm9kZShub2RlLCBlbGVtZW50KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAKaW5kZXggYTc2
ZjYwNDkyMzA0ZTE4NmJlMDY1NTdkYjExMDg3ZDBjZjIzMDNkNy4uMmVhOTZkNTVjYWZkM2RhYzMz
NDg4MGM1NWQyYzkxMDAxZTE2MTJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC0yNSwxMSArMjUsMTIgQEAKIAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQu
aCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhv
bGRlci5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiVGV4
dC5oIgorI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDgsNyArNDksNyBAQCB2b2lkIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmRvQXBwbHko
KQogewogICAgIEFTU0VSVChtX25vZGUpOwogCi0gICAgaWYgKCFtX25vZGUtPmlzQ29udGVudEVk
aXRhYmxlKE5vZGU6OlVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSkKKyAgICBpZiAo
IWlzRWRpdGFibGVOb2RlKCptX25vZGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
aW5kZXggNGQxMWY1ODIzZDI4Y2NjMWE1Mzg0YWQ2YmQxMmMwM2I0Y2IwNjAxYS4uNGQzNGZiZDM1
OTI1NWIwNWQ0ZWQ0MjY5NjE5ZjZhMmJmZDU3YzkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ2FyZXRCYXNl
OjppbnZhbGlkYXRlQ2FyZXRSZWN0KE5vZGUqIG5vZGUsIGJvb2wgY2FyZXRSZWN0Q2hhbmdlZCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBub2RlLT5kb2N1
bWVudCgpLnJlbmRlclZpZXcoKSkgewotICAgICAgICBpZiAoc2hvdWxkUmVwYWludENhcmV0KHZp
ZXcsIG5vZGUtPmlzQ29udGVudEVkaXRhYmxlKE5vZGU6OlVzZXJTZWxlY3RBbGxJc0Fsd2F5c05v
bkVkaXRhYmxlKSkpCisgICAgICAgIGlmIChzaG91bGRSZXBhaW50Q2FyZXQodmlldywgaXNFZGl0
YWJsZU5vZGUoKm5vZGUpKSkKICAgICAgICAgICAgIHJlcGFpbnRDYXJldEZvckxvY2FsUmVjdChu
b2RlLCBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcAppbmRleCBi
MjQ4MzJjZjA2MjE0NmJiMzgzMWI0MmEwZDUwMzk4MjgyMTc0YmEwLi5kMTZiNWQ2MWUxZGI0YzI3
NzM5NzI2MTFmMmEyNjUxNWMyODc1NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcApAQCAtNTEsOSArNTEsOSBAQCBJbnNlcnRO
b2RlQmVmb3JlQ29tbWFuZDo6SW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQoUGFzc1JlZlB0cjxOb2Rl
PiBpbnNlcnRDaGlsZCwgUAogdm9pZCBJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9BcHBseSgp
CiB7CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgp
OwotICAgIGlmICghcGFyZW50IHx8IChtX3Nob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRh
YmxlID09IERvTm90QXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUgJiYgIXBhcmVudC0+aXND
b250ZW50RWRpdGFibGUoTm9kZTo6VXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUpKSkK
KyAgICBpZiAoIXBhcmVudCB8fCAobV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJs
ZSA9PSBEb05vdEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlICYmICFpc0VkaXRhYmxlTm9k
ZSgqcGFyZW50KSkpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQocGFyZW50LT5pc0NvbnRl
bnRFZGl0YWJsZShOb2RlOjpVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkpOworICAg
IEFTU0VSVChpc0VkaXRhYmxlTm9kZSgqcGFyZW50KSk7CiAKICAgICBwYXJlbnQtPmluc2VydEJl
Zm9yZShtX2luc2VydENoaWxkLmdldCgpLCBtX3JlZkNoaWxkLmdldCgpLCBJR05PUkVfRVhDRVBU
SU9OKTsKIApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpk
b0FwcGx5KCkKIAogdm9pZCBJbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIHsK
LSAgICBpZiAoIW1faW5zZXJ0Q2hpbGQtPmlzQ29udGVudEVkaXRhYmxlKE5vZGU6OlVzZXJTZWxl
Y3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSkKKyAgICBpZiAoIWlzRWRpdGFibGVOb2RlKCptX2lu
c2VydENoaWxkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTmVlZCB0byBub3RpZnkgdGhp
cyBiZWZvcmUgYWN0dWFsbHkgZGVsZXRpbmcgdGhlIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggZTVmYTk2YmI2ZGRiN2QzMjgxNGZiNzNl
YjgyNWM2MzM4MmUzZTc1NS4uMzFjNTRkMWU4ODJlMmQ0NjU0MDQwOGU0NTA2MGM0OWQ5MDhiYmVj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgImh0
bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDYsOSArNDcsOSBAQCB2b2lkIFJlbW92ZU5vZGVDb21tYW5kOjpkb0FwcGx5
KCkKIHsKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBtX25vZGUtPnBhcmVudE5vZGUoKTsK
ICAgICBpZiAoIXBhcmVudCB8fCAobV9zaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJs
ZSA9PSBEb05vdEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlCi0gICAgICAgICYmICFwYXJl
bnQtPmlzQ29udGVudEVkaXRhYmxlKE5vZGU6OlVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRh
YmxlKSAmJiBwYXJlbnQtPnJlbmRlcmVyKCkpKQorICAgICAgICAmJiAhaXNFZGl0YWJsZU5vZGUo
KnBhcmVudCkgJiYgcGFyZW50LT5yZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuOwotICAgIEFT
U0VSVChwYXJlbnQtPmlzQ29udGVudEVkaXRhYmxlKE5vZGU6OlVzZXJTZWxlY3RBbGxJc0Fsd2F5
c05vbkVkaXRhYmxlKSB8fCAhcGFyZW50LT5yZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoaXNFZGl0
YWJsZU5vZGUoKnBhcmVudCkgfHwgIXBhcmVudC0+cmVuZGVyZXIoKSk7CiAKICAgICBtX3BhcmVu
dCA9IHBhcmVudDsKICAgICBtX3JlZkNoaWxkID0gbV9ub2RlLT5uZXh0U2libGluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggYzk5ZjViZjhk
ZGMwYzAxZDMzOGE5ZDMxYTgyZDA3OWUzMTFkMjQ1OC4uOTg2Nzc4YzU2OGIyNDYxMThkMWEzZGEy
N2M5NDhjZWViODE5N2Q3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxl
Y3Rpb24uY3BwCkBAIC02NDMsNyArNjQzLDkgQEAgYm9vbCBWaXNpYmxlU2VsZWN0aW9uOjppc0Nv
bnRlbnRFZGl0YWJsZSgpIGNvbnN0CiAKIGJvb2wgVmlzaWJsZVNlbGVjdGlvbjo6aGFzRWRpdGFi
bGVTdHlsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzRWRpdGFibGVQb3NpdGlvbihzdGFydCgp
LCBDb250ZW50SXNFZGl0YWJsZSwgRG9Ob3RVcGRhdGVTdHlsZSk7CisgICAgaWYgKE5vZGUqIGNv
bnRhaW5lck5vZGUgPSBzdGFydCgpLmNvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGNv
bnRhaW5lck5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgVmlzaWJsZVNlbGVjdGlvbjo6aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCmluZGV4IDM3NWMzMjk2YjA1OTFl
Njg2OTljNzA4ODIzMWJlZWFlNjA4Yjk5NzAuLjc3MjNlYzBjZDg1MDQzMGNmNWUwM2IyZTc1NThj
NDg0ZGZhMDZjNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAg
LTQ4LDI1ICs0OCwyNSBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2RlOwogCiBzdGF0aWMg
Tm9kZSogcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShOb2RlKiBub2RlLCBFZGl0YWJs
ZVR5cGUgZWRpdGFibGVUeXBlKQogewotICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5oYXNFZGl0
YWJsZVN0eWxlKGVkaXRhYmxlVHlwZSk7CisgICAgYm9vbCBlZGl0YWJsZSA9IGhhc0VkaXRhYmxl
U3R5bGUoKm5vZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAgbm9kZSA9IHByZXZpb3VzTGVhZk5vZGUo
bm9kZSk7CiAgICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKGVkaXRhYmxlID09IG5vZGUt
Pmhhc0VkaXRhYmxlU3R5bGUoZWRpdGFibGVUeXBlKSkKKyAgICAgICAgaWYgKGVkaXRhYmxlID09
IGhhc0VkaXRhYmxlU3R5bGUoKm5vZGUsIGVkaXRhYmxlVHlwZSkpCiAgICAgICAgICAgICByZXR1
cm4gbm9kZTsKICAgICAgICAgbm9kZSA9IHByZXZpb3VzTGVhZk5vZGUobm9kZSk7CiAgICAgfQog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVk
aXRhYmlsaXR5KE5vZGUqIG5vZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBDb250ZW50
SXNFZGl0YWJsZSkKK3N0YXRpYyBOb2RlKiBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkoTm9k
ZSogbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIHsKICAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGJvb2wgZWRpdGFibGUgPSBub2RlLT5o
YXNFZGl0YWJsZVN0eWxlKGVkaXRhYmxlVHlwZSk7CisgICAgYm9vbCBlZGl0YWJsZSA9IGhhc0Vk
aXRhYmxlU3R5bGUoKm5vZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAgbm9kZSA9IG5leHRMZWFmTm9k
ZShub2RlKTsKICAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBpZiAoZWRpdGFibGUgPT0gbm9k
ZS0+aGFzRWRpdGFibGVTdHlsZShlZGl0YWJsZVR5cGUpKQorICAgICAgICBpZiAoZWRpdGFibGUg
PT0gaGFzRWRpdGFibGVTdHlsZSgqbm9kZSwgZWRpdGFibGVUeXBlKSkKICAgICAgICAgICAgIHJl
dHVybiBub2RlOwogICAgICAgICBub2RlID0gbmV4dExlYWZOb2RlKG5vZGUpOwogICAgIH0KQEAg
LTkzNSw2ICs5MzUsMTMgQEAgc3RhdGljIGlubGluZSBJbnRQb2ludCBhYnNvbHV0ZUxpbmVEaXJl
Y3Rpb25Qb2ludFRvTG9jYWxQb2ludEluQmxvY2soUm9vdElubGluZUIKICAgICByZXR1cm4gSW50
UG9pbnQocm9vdC5ibG9ja0RpcmVjdGlvblBvaW50SW5MaW5lKCksIGxpbmVEaXJlY3Rpb25Qb2lu
dCAtIGFic29sdXRlQmxvY2tQb2ludC55KCkpOwogfQogCitzdGF0aWMgRWxlbWVudCogcm9vdEVk
aXRhYmxlT3JEb2N1bWVudEVsZW1lbnQoTm9kZSYgbm9kZSwgRWRpdGFibGVUeXBlIGVkaXRhYmxl
VHlwZSkKK3sKKyAgICBpZiAoaGFzRWRpdGFibGVTdHlsZShub2RlLCBlZGl0YWJsZVR5cGUpKQor
ICAgICAgICByZXR1cm4gZWRpdGFibGVSb290Rm9yUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JC
ZWZvcmVOb2RlKCZub2RlKSwgZWRpdGFibGVUeXBlKTsKKyAgICByZXR1cm4gbm9kZS5kb2N1bWVu
dCgpLmRvY3VtZW50RWxlbWVudCgpOworfQorCiBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5l
UG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sIGludCBsaW5l
RGlyZWN0aW9uUG9pbnQsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCiB7CiAgICAgUG9zaXRp
b24gcCA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwpAQCAtOTg0LDcgKzk5MSw3
IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50CiAgICAgLy8gQ291bGQgbm90IGZpbmQgYSBwcmV2
aW91cyBsaW5lLiBUaGlzIG1lYW5zIHdlIG11c3QgYWxyZWFkeSBiZSBvbiB0aGUgZmlyc3QgbGlu
ZS4KICAgICAvLyBNb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgY29udGVudCBpbiB0aGlzIGJsb2Nr
LCB3aGljaCBlZmZlY3RpdmVseSBtb3ZlcyB1cwogICAgIC8vIHRvIHRoZSBzdGFydCBvZiB0aGUg
bGluZSB3ZSdyZSBvbi4KLSAgICBFbGVtZW50KiByb290RWxlbWVudCA9IG5vZGUtPmhhc0VkaXRh
YmxlU3R5bGUoZWRpdGFibGVUeXBlKSA/IG5vZGUtPnJvb3RFZGl0YWJsZUVsZW1lbnQoZWRpdGFi
bGVUeXBlKSA6IG5vZGUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCk7CisgICAgRWxlbWVu
dCogcm9vdEVsZW1lbnQgPSByb290RWRpdGFibGVPckRvY3VtZW50RWxlbWVudCgqbm9kZSwgZWRp
dGFibGVUeXBlKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5O
b2RlKHJvb3RFbGVtZW50KSwgRE9XTlNUUkVBTSk7CkBAIC0xMDQyLDcgKzEwNDksNyBAQCBWaXNp
YmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2li
bGVQb3NpdGlvbiwgaW50IGxpbgogICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgbmV4dCBsaW5lLiBU
aGlzIG1lYW5zIHdlIG11c3QgYWxyZWFkeSBiZSBvbiB0aGUgbGFzdCBsaW5lLgogICAgIC8vIE1v
dmUgdG8gdGhlIGVuZCBvZiB0aGUgY29udGVudCBpbiB0aGlzIGJsb2NrLCB3aGljaCBlZmZlY3Rp
dmVseSBtb3ZlcyB1cwogICAgIC8vIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUgd2UncmUgb24uCi0g
ICAgRWxlbWVudCogcm9vdEVsZW1lbnQgPSBub2RlLT5oYXNFZGl0YWJsZVN0eWxlKGVkaXRhYmxl
VHlwZSkgPyBub2RlLT5yb290RWRpdGFibGVFbGVtZW50KGVkaXRhYmxlVHlwZSkgOiBub2RlLT5k
b2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQqIHJvb3RFbGVtZW50ID0g
cm9vdEVkaXRhYmxlT3JEb2N1bWVudEVsZW1lbnQoKm5vZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAg
aWYgKCFyb290RWxlbWVudCkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFzdFBvc2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50KSwg
RE9XTlNUUkVBTSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IDIz
ZWM5MGJlZDA4ZmQxNmU3NTNjYzJjYmQxMmM0ZGJjZTZiZjY3OTguLjMxZmViZmI4YTI3NGE3MjQz
NzNjOGIzNjI3MjQ4ZjhiYTA1MzhlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRp
bmcuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgTm9kZSogaGlnaGVzdEVkaXRhYmxlUm9vdChjb25z
dCBQb3NpdGlvbiYgcG9zaXRpb24sIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCiAgICAgICAg
IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+aGFzRWRpdGFibGVTdHlsZShlZGl0YWJsZVR5
cGUpKQorICAgICAgICBpZiAoaGFzRWRpdGFibGVTdHlsZSgqbm9kZSwgZWRpdGFibGVUeXBlKSkK
ICAgICAgICAgICAgIGhpZ2hlc3RFZGl0YWJsZVJvb3QgPSBub2RlOwogICAgIH0KIApAQCAtMTQx
LDE3ICsxNDEsNDYgQEAgTm9kZSogbG93ZXN0RWRpdGFibGVBbmNlc3RvcihOb2RlKiBub2RlKQog
ICAgIHJldHVybiAwOwogfQogCi1ib29sIGlzRWRpdGFibGVQb3NpdGlvbihjb25zdCBQb3NpdGlv
biYgcCwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSwgRVVwZGF0ZVN0eWxlIHVwZGF0ZVN0eWxl
KQorc3RhdGljIGJvb2wgaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShjb25zdCBOb2RlJiBub2Rl
KQogewotICAgIE5vZGUqIG5vZGUgPSBwLmNvbnRhaW5lck5vZGUoKTsKLSAgICBpZiAoIW5vZGUp
CisgICAgQVNTRVJUKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpOworICAg
IEFTU0VSVChub2RlLmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpOworCisgICAg
aWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gbm9kZS5kb2N1bWVudCgpLmV4aXN0aW5nQVhPYmpl
Y3RDYWNoZSgpKQorICAgICAgICByZXR1cm4gY2FjaGUtPnJvb3RBWEVkaXRhYmxlRWxlbWVudCgm
bm9kZSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGNvbXB1dGVFZGl0
YWJpbGl0eShjb25zdCBOb2RlJiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlLCBOb2Rl
OjpTaG91bGRVcGRhdGVTdHlsZSBzaG91bGRVcGRhdGVTdHlsZSkKK3sKKyAgICBpZiAobm9kZS5j
b21wdXRlRWRpdGFiaWxpdHkoTm9kZTo6VXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUs
IHNob3VsZFVwZGF0ZVN0eWxlKSAhPSBOb2RlOjpFZGl0YWJpbGl0eTo6UmVhZE9ubHkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgc3dpdGNoIChlZGl0YWJsZVR5cGUpIHsKKyAgICBjYXNl
IENvbnRlbnRJc0VkaXRhYmxlOgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKHVwZGF0
ZVN0eWxlID09IFVwZGF0ZVN0eWxlKQotICAgICAgICBub2RlLT5kb2N1bWVudCgpLnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKLSAgICBlbHNlCi0gICAgICAgIEFTU0VSVCh1cGRhdGVTdHlsZSA9PSBE
b05vdFVwZGF0ZVN0eWxlKTsKKyAgICBjYXNlIEhhc0VkaXRhYmxlQVhSb2xlOgorICAgICAgICBy
ZXR1cm4gaXNFZGl0YWJsZVRvQWNjZXNzaWJpbGl0eShub2RlKTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgcmV0dXJuIG5vZGUt
Pmhhc0VkaXRhYmxlU3R5bGUoZWRpdGFibGVUeXBlKTsKK2Jvb2wgaGFzRWRpdGFibGVTdHlsZShj
b25zdCBOb2RlJiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQoreworICAgIHJldHVy
biBjb21wdXRlRWRpdGFiaWxpdHkobm9kZSwgZWRpdGFibGVUeXBlLCBOb2RlOjpTaG91bGRVcGRh
dGVTdHlsZTo6RG9Ob3RVcGRhdGUpOworfQorCitib29sIGlzRWRpdGFibGVOb2RlKGNvbnN0IE5v
ZGUmIG5vZGUpCit7CisgICAgcmV0dXJuIGNvbXB1dGVFZGl0YWJpbGl0eShub2RlLCBDb250ZW50
SXNFZGl0YWJsZSwgTm9kZTo6U2hvdWxkVXBkYXRlU3R5bGU6OlVwZGF0ZSk7Cit9CisKK2Jvb2wg
aXNFZGl0YWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgRWRpdGFibGVUeXBl
IGVkaXRhYmxlVHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gcG9zaXRpb24uY29udGFpbmVyTm9k
ZSgpOworICAgIHJldHVybiBub2RlICYmIGNvbXB1dGVFZGl0YWJpbGl0eSgqbm9kZSwgZWRpdGFi
bGVUeXBlLCBOb2RlOjpTaG91bGRVcGRhdGVTdHlsZTo6VXBkYXRlKTsKIH0KIAogYm9vbCBpc0F0
VW5zcGxpdHRhYmxlRWxlbWVudChjb25zdCBQb3NpdGlvbiYgcG9zKQpAQCAtMTYxLDEzICsxOTAs
MTIgQEAgYm9vbCBpc0F0VW5zcGxpdHRhYmxlRWxlbWVudChjb25zdCBQb3NpdGlvbiYgcG9zKQog
fQogICAgIAogICAgIAotYm9vbCBpc1JpY2hseUVkaXRhYmxlUG9zaXRpb24oY29uc3QgUG9zaXRp
b24mIHAsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUpCitib29sIGlzUmljaGx5RWRpdGFibGVQ
b3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAgTm9kZSogbm9kZSA9IHAu
Y29udGFpbmVyTm9kZSgpOworICAgIE5vZGUqIG5vZGUgPSBwb3NpdGlvbi5jb250YWluZXJOb2Rl
KCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
bm9kZS0+aGFzUmljaGx5RWRpdGFibGVTdHlsZShlZGl0YWJsZVR5cGUpOworICAgIHJldHVybiBu
b2RlLT5oYXNSaWNobHlFZGl0YWJsZVN0eWxlKCk7CiB9CiAKIEVsZW1lbnQqIGVkaXRhYmxlUm9v
dEZvclBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBl
KQpAQCAtMTc2LDcgKzIwNCwxNSBAQCBFbGVtZW50KiBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihj
b25zdCBQb3NpdGlvbiYgcCwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG5vZGUtPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoZWRpdGFibGVUeXBlKTsKKyAgICBzd2l0Y2ggKGVkaXRhYmxlVHlwZSkgeworICAgIGNh
c2UgSGFzRWRpdGFibGVBWFJvbGU6CisgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9
IG5vZGUtPmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gY29uc3RfY2FzdDxFbGVtZW50Kj4oY2FjaGUtPnJvb3RBWEVkaXRhYmxlRWxlbWVudChu
b2RlKSk7CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIGNhc2UgQ29udGVudElzRWRpdGFibGU6
CisgICAgICAgIHJldHVybiBub2RlLT5yb290RWRpdGFibGVFbGVtZW50KCk7CisgICAgfQorICAg
IHJldHVybiAwOwogfQogCiAvLyBGaW5kcyB0aGUgZW5jbG9zaW5nIGVsZW1lbnQgdW50aWwgd2hp
Y2ggdGhlIHRyZWUgY2FuIGJlIHNwbGl0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5o
CmluZGV4IGNlODk1ZTMyNzM0YzE3ZmU5ZWE3NDgzZmQ2OTk4Y2Q0YzYyOTJiZGYuLjk0N2M1N2Mz
MDdjMmRkZmE1YzMwNWNkMTJjYzkwNTViY2ExMmI0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmgKQEAgLTg1LDYgKzg1LDkgQEAgaW50IGNhcmV0TWF4T2Zmc2V0KGNvbnN0IE5v
ZGUqKTsKIAogLy8gYm9vbGVhbiBmdW5jdGlvbnMgb24gTm9kZQogCitib29sIGhhc0VkaXRhYmxl
U3R5bGUoY29uc3QgTm9kZSYsIEVkaXRhYmxlVHlwZSk7Citib29sIGlzRWRpdGFibGVOb2RlKGNv
bnN0IE5vZGUmKTsKKwogLy8gRklYTUU6IGVkaXRpbmdJZ25vcmVzQ29udGVudCwgY2FuSGF2ZUNo
aWxkcmVuRm9yRWRpdGluZywgYW5kIGlzQXRvbWljTm9kZQogLy8gc2hvdWxkIGJlIHJlbmFtZWQg
dG8gcmVmbGVjdCBpdHMgdXNhZ2UuCiAKQEAgLTE2NCw5ICsxNjcsOCBAQCBpbnQgY29tcGFyZVBv
c2l0aW9ucyhjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKIC8vIGJvb2xlYW4g
ZnVuY3Rpb25zIG9uIFBvc2l0aW9uCiAKLWVudW0gRVVwZGF0ZVN0eWxlIHsgVXBkYXRlU3R5bGUs
IERvTm90VXBkYXRlU3R5bGUgfTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgaXNFZGl0YWJsZVBvc2l0
aW9uKGNvbnN0IFBvc2l0aW9uJiwgRWRpdGFibGVUeXBlID0gQ29udGVudElzRWRpdGFibGUsIEVV
cGRhdGVTdHlsZSA9IFVwZGF0ZVN0eWxlKTsKLWJvb2wgaXNSaWNobHlFZGl0YWJsZVBvc2l0aW9u
KGNvbnN0IFBvc2l0aW9uJiwgRWRpdGFibGVUeXBlID0gQ29udGVudElzRWRpdGFibGUpOworV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0VkaXRhYmxlUG9zaXRpb24oY29uc3QgUG9zaXRpb24mLCBFZGl0
YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0YWJsZSk7Citib29sIGlzUmljaGx5RWRpdGFibGVQb3Np
dGlvbihjb25zdCBQb3NpdGlvbiYpOwogYm9vbCBpc0ZpcnN0VmlzaWJsZVBvc2l0aW9uSW5TcGVj
aWFsRWxlbWVudChjb25zdCBQb3NpdGlvbiYpOwogYm9vbCBpc0xhc3RWaXNpYmxlUG9zaXRpb25J
blNwZWNpYWxFbGVtZW50KGNvbnN0IFBvc2l0aW9uJik7CiBib29sIGxpbmVCcmVha0V4aXN0c0F0
UG9zaXRpb24oY29uc3QgUG9zaXRpb24mKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>