<?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>123906</bug_id>
          
          <creation_ts>2013-11-06 11:23:41 -0800</creation_ts>
          <short_desc>HTMLCollection should use CollectionIndexCache</short_desc>
          <delta_ts>2013-11-12 09:43: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>DOM</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947805</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-06 11:23:41 -0800</bug_when>
    <thetext>make it so</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947809</commentid>
    <comment_count>1</comment_count>
      <attachid>216198</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-06 11:35:03 -0800</bug_when>
    <thetext>Created attachment 216198
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947844</commentid>
    <comment_count>2</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-11-06 12:37:08 -0800</bug_when>
    <thetext>https://trac.webkit.org/r158774</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949711</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-12 09:43:03 -0800</bug_when>
    <thetext>This caused a regression, bug 124145. Antti, could you please look into that?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216198</attachid>
            <date>2013-11-06 11:35:03 -0800</date>
            <delta_ts>2013-11-06 11:46:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>htmlcollection-index-cache.patch</filename>
            <type>text/plain</type>
            <size>29538</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODc2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDEzLTExLTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBIVE1MQ29sbGVjdGlvbiBzaG91
bGQgdXNlIENvbGxlY3Rpb25JbmRleENhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjM5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1vcmUgY29kZSBzaGFyaW5nLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRlcik6
CisgICAgICAgICogZG9tL0NoaWxkTm9kZUxpc3QuaDoKKyAgICAgICAgKiBkb20vQ29sbGVjdGlv
bkluZGV4Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6bm9kZUJlZm9yZUNhY2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjo6Om5vZGVBZnRlckNhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjo6
Om5vZGVBdCk6CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFkZCBhIG1lY2hhbmlzbSBmb3Ig
ZGlzYWJsaW5nIHVzZSBvZiBiYWNrd2FyZCB0cmF2ZXJzYWwuCisKKyAgICAgICAgKiBkb20vTGl2
ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMaXZlTm9kZUxpc3Q6OmNvbGxlY3Rpb25D
YW5UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjppc01hdGNoaW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29sbGVjdGlvbjo6aXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpmaXJzdE1hdGNoaW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TWF0Y2hpbmdF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpsZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwpOgorICAgICAgICAoV2ViQ29yZTo6Zmly
c3RNYXRjaGluZ0NoaWxkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TWF0Y2hpbmdT
aWJsaW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6Zmlyc3RF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp0cmF2ZXJzZUZvcndh
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25GaXJzdCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvbkxhc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25UcmF2ZXJzZUJh
Y2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2Fj
aGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKToKKyAgICAgICAg
KiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlv
bjo6Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAKKyAgICAgICAgICAg
IERpc2FibGUgdXNlIG9mIGJhY2t3YXJkIHRyYXZlcnNhbCBmb3IgY29sbGVjdGlvbnMgdGhhdCB1
c2UgY3VzdG9tIHRyYXZlcnNhbC4KKwogMjAxMy0xMS0wNiAgQnJlbmRhbiBMb25nICA8Yi5sb25n
QGNhYmxlbGFicy5jb20+CiAKICAgICAgICAgQWRkICJpZCIgYXR0cmlidXRlIHRvIFRleHRUcmFj
awpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gMTU4NzU3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsOCArMTAxLDcgQEAg
c3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZQogCiAgICAgaWYgKFVOTElL
RUxZKHRvSFRNTERvY3VtZW50KGRvY3VtZW50KS0+d2luZG93TmFtZWRJdGVtQ29udGFpbnNNdWx0
aXBsZUVsZW1lbnRzKCphdG9taWNQcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBSZWZQdHI8SFRN
TENvbGxlY3Rpb24+IGNvbGxlY3Rpb24gPSBkb2N1bWVudC0+d2luZG93TmFtZWRJdGVtcyhhdG9t
aWNQcm9wZXJ0eU5hbWUpOwotICAgICAgICBBU1NFUlQoIWNvbGxlY3Rpb24tPmlzRW1wdHkoKSk7
Ci0gICAgICAgIEFTU0VSVCghY29sbGVjdGlvbi0+aGFzRXhhY3RseU9uZUl0ZW0oKSk7CisgICAg
ICAgIEFTU0VSVChjb2xsZWN0aW9uLT5sZW5ndGgoKSA+IDEpOwogICAgICAgICByZXR1cm4gdG9K
UyhleGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29sbGVjdGlvbikp
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1l
bnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTU4NzU3KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw4ICs2OCw3IEBAIEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1MK
IAogICAgIGlmIChVTkxJS0VMWShkb2N1bWVudC5kb2N1bWVudE5hbWVkSXRlbUNvbnRhaW5zTXVs
dGlwbGVFbGVtZW50cygqYXRvbWljUHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgUmVmUHRyPEhU
TUxDb2xsZWN0aW9uPiBjb2xsZWN0aW9uID0gZG9jdW1lbnQuZG9jdW1lbnROYW1lZEl0ZW1zKGF0
b21pY1Byb3BlcnR5TmFtZSk7Ci0gICAgICAgIEFTU0VSVCghY29sbGVjdGlvbi0+aXNFbXB0eSgp
KTsKLSAgICAgICAgQVNTRVJUKCFjb2xsZWN0aW9uLT5oYXNFeGFjdGx5T25lSXRlbSgpKTsKKyAg
ICAgICAgQVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMSk7CiAgICAgICAgIHJldHVybiB0
b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjb2xsZWN0aW9u
KSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgJKHJldmlzaW9u
IDE1ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIE5vZGUqIGNvbGxlY3Rpb25MYXN0
KCkgY29uc3Q7CiAgICAgTm9kZSogY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChOb2RlJiwgdW5z
aWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7CiAgICAgTm9kZSog
Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoTm9kZSYsIHVuc2lnbmVkIGNvdW50KSBjb25zdDsK
KyAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENoaWxkTm9kZUxpc3QoQ29udGFpbmVy
Tm9kZSYgcGFyZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhD
YWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db2xsZWN0aW9uSW5kZXhD
YWNoZS5oCShyZXZpc2lvbiAxNTg3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29sbGVjdGlv
bkluZGV4Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBpbmxpbmUgTm9k
ZVR5cGUqIENvbGxlY3Rpb25JbmRleENhY2hlPENvCiAgICAgQVNTRVJUKGluZGV4IDwgbV9jdXJy
ZW50SW5kZXgpOwogCiAgICAgYm9vbCBmaXJzdElzQ2xvc2VyID0gaW5kZXggPCBtX2N1cnJlbnRJ
bmRleCAtIGluZGV4OwotICAgIGlmIChmaXJzdElzQ2xvc2VyKSB7CisgICAgaWYgKGZpcnN0SXND
bG9zZXIgfHwgIWNvbGxlY3Rpb24uY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSkgewog
ICAgICAgICBtX2N1cnJlbnROb2RlID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRmlyc3QoKTsKICAg
ICAgICAgbV9jdXJyZW50SW5kZXggPSAwOwogICAgICAgICBpZiAoaW5kZXgpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgaW5saW5lIE5vZGVUeXBlKiBDb2xsZWN0aW9uSW5kZXhDYWNoZTxDbwogICAgIEFT
U0VSVCghbV9ub2RlQ291bnRWYWxpZCB8fCBpbmRleCA8IG1fbm9kZUNvdW50KTsKIAogICAgIGJv
b2wgbGFzdElzQ2xvc2VyID0gbV9ub2RlQ291bnRWYWxpZCAmJiBtX25vZGVDb3VudCAtIGluZGV4
IDwgaW5kZXggLSBtX2N1cnJlbnRJbmRleDsKLSAgICBpZiAobGFzdElzQ2xvc2VyKSB7CisgICAg
aWYgKGxhc3RJc0Nsb3NlciAmJiBjb2xsZWN0aW9uLmNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3
YXJkKCkpIHsKICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkxh
c3QoKTsKICAgICAgICAgaWYgKGluZGV4IDwgbV9ub2RlQ291bnQgLSAxKQogICAgICAgICAgICAg
bV9jdXJyZW50Tm9kZSA9IGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoKm1f
Y3VycmVudE5vZGUsIG1fbm9kZUNvdW50IC0gaW5kZXggLSAxKTsKQEAgLTE0Miw3ICsxNDIsNyBA
QCBpbmxpbmUgTm9kZVR5cGUqIENvbGxlY3Rpb25JbmRleENhY2hlPENvCiAgICAgfQogCiAgICAg
Ym9vbCBsYXN0SXNDbG9zZXIgPSBtX25vZGVDb3VudFZhbGlkICYmIG1fbm9kZUNvdW50IC0gaW5k
ZXggPCBpbmRleDsKLSAgICBpZiAobGFzdElzQ2xvc2VyKSB7CisgICAgaWYgKGxhc3RJc0Nsb3Nl
ciAmJiBjb2xsZWN0aW9uLmNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkpIHsKICAgICAg
ICAgbV9jdXJyZW50Tm9kZSA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkxhc3QoKTsKICAgICAgICAg
aWYgKGluZGV4IDwgbV9ub2RlQ291bnQgLSAxKQogICAgICAgICAgICAgbV9jdXJyZW50Tm9kZSA9
IGNvbGxlY3Rpb24uY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoKm1fY3VycmVudE5vZGUsIG1f
bm9kZUNvdW50IC0gaW5kZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9k
ZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgJ
KHJldmlzaW9uIDE1ODc1NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgZG9jdW1l
bnQoKS5yZWdpc3Rlck5vZGVMaXN0KCp0aGlzKTsKICAgICB9Ci0gICAgdmlydHVhbCBOb2RlKiBu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgRklO
QUw7CiAgICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKEVsZW1lbnQqKSBjb25zdCA9IDA7CiAK
ICAgICB2aXJ0dWFsIH5MaXZlTm9kZUxpc3QoKQpAQCAtNzUsOCArNzUsOCBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgLy8gRE9NIEFQSQotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBPVkVSUklE
RSBGSU5BTDsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBP
VkVSUklERSBGSU5BTDsKIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Jvb3RlZEF0RG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRBdERvY3Vt
ZW50OyB9CiAgICAgQUxXQVlTX0lOTElORSBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxp
ZGF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwZT4obV9pbnZhbGlkYXRpb25UeXBlKTsgfQpAQCAtOTQsNiArOTQsNyBAQCBwdWJsaWM6
CiAgICAgRWxlbWVudCogY29sbGVjdGlvbkxhc3QoKSBjb25zdDsKICAgICBFbGVtZW50KiBjb2xs
ZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmLCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50KSBjb25zdDsKICAgICBFbGVtZW50KiBjb2xsZWN0aW9uVHJhdmVyc2VC
YWNrd2FyZChFbGVtZW50JiwgdW5zaWduZWQgY291bnQpIGNvbnN0OworICAgIGJvb2wgY29sbGVj
dGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX293bmVyTm9k
ZS0+ZG9jdW1lbnQoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDE1ODc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsOSArMTMzLDYgQEAgc3RhdGljIE5vZGVMaXN0
SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYQogCiBIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rp
b24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBFbGVtZW50
VHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlKQogICAgIDogbV9vd25lck5vZGUob3duZXJOb2Rl
KQotICAgICwgbV9jYWNoZWRFbGVtZW50KG51bGxwdHIpCi0gICAgLCBtX2lzTGVuZ3RoQ2FjaGVW
YWxpZChmYWxzZSkKLSAgICAsIG1faXNFbGVtZW50Q2FjaGVWYWxpZChmYWxzZSkKICAgICAsIG1f
cm9vdFR5cGUocm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUodHlwZSkpCiAgICAgLCBtX2ludmFs
aWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMo
dHlwZSkpCiAgICAgLCBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oc2hvdWxkT25s
eUluY2x1ZGVEaXJlY3RDaGlsZHJlbih0eXBlKSkKQEAgLTE3Miw1MyArMTY5LDUzIEBAIENvbnRh
aW5lck5vZGUmIEhUTUxDb2xsZWN0aW9uOjpyb290Tm9kZSgKICAgICByZXR1cm4gb3duZXJOb2Rl
KCk7CiB9CiAKLWlubGluZSBib29sIGlzTWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0
aW9uKiBodG1sQ29sbGVjdGlvbiwgRWxlbWVudCogZWxlbWVudCkKK2lubGluZSBib29sIGlzTWF0
Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBodG1sQ29sbGVjdGlvbiwgRWxlbWVu
dCYgZWxlbWVudCkKIHsKLSAgICBDb2xsZWN0aW9uVHlwZSB0eXBlID0gaHRtbENvbGxlY3Rpb24t
PnR5cGUoKTsKLSAgICBpZiAoIWVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAhKHR5cGUgPT0g
RG9jQWxsIHx8IHR5cGUgPT0gTm9kZUNoaWxkcmVuIHx8IHR5cGUgPT0gV2luZG93TmFtZWRJdGVt
cykpCisgICAgQ29sbGVjdGlvblR5cGUgdHlwZSA9IGh0bWxDb2xsZWN0aW9uLnR5cGUoKTsKKyAg
ICBpZiAoIWVsZW1lbnQuaXNIVE1MRWxlbWVudCgpICYmICEodHlwZSA9PSBEb2NBbGwgfHwgdHlw
ZSA9PSBOb2RlQ2hpbGRyZW4gfHwgdHlwZSA9PSBXaW5kb3dOYW1lZEl0ZW1zKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBEb2NJbWFnZXM6
Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNMb2NhbE5hbWUoaW1nVGFnKTsKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzTG9jYWxOYW1lKGltZ1RhZyk7CiAgICAgY2FzZSBEb2NTY3JpcHRz
OgotICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKHNjcmlwdFRhZyk7CisgICAg
ICAgIHJldHVybiBlbGVtZW50Lmhhc0xvY2FsTmFtZShzY3JpcHRUYWcpOwogICAgIGNhc2UgRG9j
Rm9ybXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNMb2NhbE5hbWUoZm9ybVRhZyk7Cisg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0xvY2FsTmFtZShmb3JtVGFnKTsKICAgICBjYXNlIFRh
YmxlVEJvZGllczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0xvY2FsTmFtZSh0Ym9keVRh
Zyk7CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0xvY2FsTmFtZSh0Ym9keVRhZyk7CiAgICAg
Y2FzZSBUUkNlbGxzOgotICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKHRkVGFn
KSB8fCBlbGVtZW50LT5oYXNMb2NhbE5hbWUodGhUYWcpOworICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNMb2NhbE5hbWUodGRUYWcpIHx8IGVsZW1lbnQuaGFzTG9jYWxOYW1lKHRoVGFnKTsKICAg
ICBjYXNlIFRTZWN0aW9uUm93czoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0xvY2FsTmFt
ZSh0clRhZyk7CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0xvY2FsTmFtZSh0clRhZyk7CiAg
ICAgY2FzZSBTZWxlY3RPcHRpb25zOgotICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxO
YW1lKG9wdGlvblRhZyk7CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0xvY2FsTmFtZShvcHRp
b25UYWcpOwogICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgotICAgICAgICByZXR1cm4gZWxlbWVu
dC0+aGFzTG9jYWxOYW1lKG9wdGlvblRhZykgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50
KS0+c2VsZWN0ZWQoKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzTG9jYWxOYW1lKG9wdGlv
blRhZykgJiYgdG9IVE1MT3B0aW9uRWxlbWVudChlbGVtZW50KS5zZWxlY3RlZCgpOwogICAgIGNh
c2UgRGF0YUxpc3RPcHRpb25zOgotICAgICAgICBpZiAoZWxlbWVudC0+aGFzTG9jYWxOYW1lKG9w
dGlvblRhZykpIHsKLSAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24gPSB0b0hU
TUxPcHRpb25FbGVtZW50KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFvcHRpb24tPmlzRGlz
YWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24tPnZhbHVlKCkuaXNFbXB0eSgpKQorICAgICAg
ICBpZiAoZWxlbWVudC5oYXNMb2NhbE5hbWUob3B0aW9uVGFnKSkgeworICAgICAgICAgICAgSFRN
TE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IHRvSFRNTE9wdGlvbkVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgICAgICAgICBpZiAoIW9wdGlvbi5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhb3B0aW9u
LnZhbHVlKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIE1hcEFyZWFzOgotICAgICAgICBy
ZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFyZWFUYWcpOworICAgICAgICByZXR1cm4gZWxl
bWVudC5oYXNMb2NhbE5hbWUoYXJlYVRhZyk7CiAgICAgY2FzZSBEb2NBcHBsZXRzOgotICAgICAg
ICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFwcGxldFRhZykgfHwgKGVsZW1lbnQtPmhh
c0xvY2FsTmFtZShvYmplY3RUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxPYmplY3RFbGVtZW50Kj4o
ZWxlbWVudCktPmNvbnRhaW5zSmF2YUFwcGxldCgpKTsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQu
aGFzTG9jYWxOYW1lKGFwcGxldFRhZykgfHwgKGVsZW1lbnQuaGFzTG9jYWxOYW1lKG9iamVjdFRh
ZykgJiYgdG9IVE1MT2JqZWN0RWxlbWVudChlbGVtZW50KS5jb250YWluc0phdmFBcHBsZXQoKSk7
CiAgICAgY2FzZSBEb2NFbWJlZHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50LT5oYXNMb2NhbE5h
bWUoZW1iZWRUYWcpOworICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNMb2NhbE5hbWUoZW1iZWRU
YWcpOwogICAgIGNhc2UgRG9jTGlua3M6Ci0gICAgICAgIHJldHVybiAoZWxlbWVudC0+aGFzTG9j
YWxOYW1lKGFUYWcpIHx8IGVsZW1lbnQtPmhhc0xvY2FsTmFtZShhcmVhVGFnKSkgJiYgZWxlbWVu
dC0+ZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7CisgICAgICAgIHJldHVybiAoZWxlbWVudC5o
YXNMb2NhbE5hbWUoYVRhZykgfHwgZWxlbWVudC5oYXNMb2NhbE5hbWUoYXJlYVRhZykpICYmIGVs
ZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgY2FzZSBEb2NBbmNob3JzOgot
ICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFUYWcpICYmIGVsZW1lbnQtPmZh
c3RIYXNBdHRyaWJ1dGUobmFtZUF0dHIpOworICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNMb2Nh
bE5hbWUoYVRhZykgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRyKTsKICAgICBj
YXNlIERvY0FsbDoKICAgICBjYXNlIE5vZGVDaGlsZHJlbjoKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKj4oaHRtbENvbGxlY3Rpb24pLT5ub2RlTWF0
Y2hlcyhlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50
TmFtZUNvbGxlY3Rpb24mPihodG1sQ29sbGVjdGlvbikubm9kZU1hdGNoZXMoJmVsZW1lbnQpOwog
ICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNv
bnN0IFdpbmRvd05hbWVDb2xsZWN0aW9uKj4oaHRtbENvbGxlY3Rpb24pLT5ub2RlTWF0Y2hlcyhl
bGVtZW50KTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdpbmRvd05hbWVDb2xs
ZWN0aW9uJj4oaHRtbENvbGxlY3Rpb24pLm5vZGVNYXRjaGVzKCZlbGVtZW50KTsKICAgICBjYXNl
IEZvcm1Db250cm9sczoKICAgICBjYXNlIFRhYmxlUm93czoKICAgICAgICAgYnJlYWs7CkBAIC0y
MzIsMjE2ICsyMjksMTM5IEBAIHN0YXRpYyBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnQoQ29udGFp
bmUKICAgICByZXR1cm4gb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IEVsZW1lbnRUcmF2ZXJz
YWw6OnByZXZpb3VzU2libGluZyhwcmV2aW91cykgOiBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91
cyhwcmV2aW91cywgJmJhc2UpOwogfQogCi1zdGF0aWMgRWxlbWVudCogbGFzdEVsZW1lbnQoQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUsIGJvb2wgb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikKLXsK
LSAgICByZXR1cm4gb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IEVsZW1lbnRUcmF2ZXJzYWw6
Omxhc3RDaGlsZCgmcm9vdE5vZGUpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbigmcm9v
dE5vZGUpOwotfQotCiBBTFdBWVNfSU5MSU5FIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjppdGVy
YXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnQqIGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgYm9v
bCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID0gbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENo
aWxkcmVuOwogICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gdGhpcy0+cm9vdE5vZGUoKTsK
ICAgICBmb3IgKDsgY3VycmVudDsgY3VycmVudCA9IHByZXZpb3VzRWxlbWVudChyb290Tm9kZSwg
Y3VycmVudCwgb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikpIHsKLSAgICAgICAgaWYgKGlzTWF0
Y2hpbmdFbGVtZW50KHRoaXMsIGN1cnJlbnQpKQorICAgICAgICBpZiAoaXNNYXRjaGluZ0VsZW1l
bnQoKnRoaXMsICpjdXJyZW50KSkKICAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwogICAgIH0K
LSAgICByZXR1cm4gMDsKLX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50KiBIVE1MQ29sbGVjdGlv
bjo6aXRlbUJlZm9yZShFbGVtZW50KiBwcmV2aW91cykgY29uc3QKLXsKLSAgICBFbGVtZW50KiBj
dXJyZW50OwotICAgIGlmIChMSUtFTFkoISFwcmV2aW91cykpIC8vIFdpdGhvdXQgdGhpcyBMSUtF
TFksIGxlbmd0aCgpIGFuZCBpdGVtKCkgY2FuIGJlIDEwJSBzbG93ZXIuCi0gICAgICAgIGN1cnJl
bnQgPSBwcmV2aW91c0VsZW1lbnQocm9vdE5vZGUoKSwgcHJldmlvdXMsIG1fc2hvdWxkT25seUlu
Y2x1ZGVEaXJlY3RDaGlsZHJlbik7Ci0gICAgZWxzZQotICAgICAgICBjdXJyZW50ID0gbGFzdEVs
ZW1lbnQocm9vdE5vZGUoKSwgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKTsKLQot
ICAgIHJldHVybiBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KGN1cnJlbnQpOworICAgIHJldHVy
biBudWxscHRyOwogfQogCi1pbmxpbmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0VsZW1lbnQoY29u
c3QgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUqIHJvb3QpCitpbmxp
bmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNv
bGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9
IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwotICAgIHdoaWxlIChlbGVtZW50
ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCBlbGVtZW50KSkKLSAgICAgICAgZWxl
bWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoZWxlbWVudCwgcm9vdCk7CisgICAgRWxlbWVu
dCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKCZyb290KTsKKyAgICB3
aGlsZSAoZWxlbWVudCAmJiAhaXNNYXRjaGluZ0VsZW1lbnQoY29sbGVjdGlvbiwgKmVsZW1lbnQp
KQorICAgICAgICBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dChlbGVtZW50LCAmcm9v
dCk7CiAgICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKLWlubGluZSBFbGVtZW50KiBuZXh0TWF0Y2hp
bmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBFbGVtZW50KiBjdXJy
ZW50LCBDb250YWluZXJOb2RlKiByb290KQoraW5saW5lIEVsZW1lbnQqIG5leHRNYXRjaGluZ0Vs
ZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIEVsZW1lbnQqIGN1cnJlbnQs
IENvbnRhaW5lck5vZGUmIHJvb3QpCiB7CiAgICAgZG8gewotICAgICAgICBjdXJyZW50ID0gRWxl
bWVudFRyYXZlcnNhbDo6bmV4dChjdXJyZW50LCByb290KTsKLSAgICB9IHdoaWxlIChjdXJyZW50
ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCBjdXJyZW50KSk7CisgICAgICAgIGN1
cnJlbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KGN1cnJlbnQsICZyb290KTsKKyAgICB9IHdo
aWxlIChjdXJyZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCAqY3VycmVudCkp
OwogICAgIHJldHVybiBjdXJyZW50OwogfQogCi1pbmxpbmUgRWxlbWVudCogdHJhdmVyc2VNYXRj
aGluZ0VsZW1lbnRzRm9yd2FyZFRvT2Zmc2V0KGNvbnN0IEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0
aW9uLCB1bnNpZ25lZCBvZmZzZXQsIEVsZW1lbnQqIGN1cnJlbnRFbGVtZW50LCB1bnNpZ25lZCYg
Y3VycmVudE9mZnNldCwgQ29udGFpbmVyTm9kZSogcm9vdCkKLXsKLSAgICBBU1NFUlRfV0lUSF9T
RUNVUklUWV9JTVBMSUNBVElPTihjdXJyZW50T2Zmc2V0IDwgb2Zmc2V0KTsKLSAgICB3aGlsZSAo
KGN1cnJlbnRFbGVtZW50ID0gbmV4dE1hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCBjdXJyZW50
RWxlbWVudCwgcm9vdCkpKSB7Ci0gICAgICAgIGlmICgrK2N1cnJlbnRPZmZzZXQgPT0gb2Zmc2V0
KQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbGVtZW50OwotICAgIH0KLSAgICByZXR1cm4g
MDsKLX0KLQotYm9vbCBBTFdBWVNfSU5MSU5FIEhUTUxDb2xsZWN0aW9uOjppc0xhc3RJdGVtQ2xv
c2VyVGhhbkxhc3RPckNhY2hlZEl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdAotewotICAgIEFT
U0VSVChpc0xlbmd0aENhY2hlVmFsaWQoKSk7Ci0gICAgdW5zaWduZWQgZGlzdGFuY2VGcm9tTGFz
dEl0ZW0gPSBjYWNoZWRMZW5ndGgoKSAtIG9mZnNldDsKLSAgICBpZiAoIWlzRWxlbWVudENhY2hl
VmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIGRpc3RhbmNlRnJvbUxhc3RJdGVtIDwgb2Zmc2V0Owot
Ci0gICAgcmV0dXJuIGNhY2hlZEVsZW1lbnRPZmZzZXQoKSA8IG9mZnNldCAmJiBkaXN0YW5jZUZy
b21MYXN0SXRlbSA8IG9mZnNldCAtIGNhY2hlZEVsZW1lbnRPZmZzZXQoKTsKLX0KLSAgICAKLWJv
b2wgQUxXQVlTX0lOTElORSBIVE1MQ29sbGVjdGlvbjo6aXNGaXJzdEl0ZW1DbG9zZXJUaGFuQ2Fj
aGVkSXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGlzRWxlbWVudENh
Y2hlVmFsaWQoKSk7Ci0gICAgaWYgKGNhY2hlZEVsZW1lbnRPZmZzZXQoKSA8IG9mZnNldCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgdW5zaWduZWQgZGlzdGFuY2VGcm9tQ2FjaGVkSXRl
bSA9IGNhY2hlZEVsZW1lbnRPZmZzZXQoKSAtIG9mZnNldDsKLSAgICByZXR1cm4gb2Zmc2V0IDwg
ZGlzdGFuY2VGcm9tQ2FjaGVkSXRlbTsKLX0KLQogdW5zaWduZWQgSFRNTENvbGxlY3Rpb246Omxl
bmd0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKGlzTGVuZ3RoQ2FjaGVWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gY2FjaGVkTGVuZ3RoKCk7Ci0KLSAgICBpdGVtKFVJTlRfTUFYKTsKLSAgICBBU1NFUlQo
aXNMZW5ndGhDYWNoZVZhbGlkKCkpOwotICAgIAotICAgIHJldHVybiBjYWNoZWRMZW5ndGgoKTsK
KyAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudCgqdGhpcyk7CiB9CiAKIE5vZGUqIEhU
TUxDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKIHsKLSAgICBpZiAoaXNF
bGVtZW50Q2FjaGVWYWxpZCgpICYmIGNhY2hlZEVsZW1lbnRPZmZzZXQoKSA9PSBvZmZzZXQpCi0g
ICAgICAgIHJldHVybiBjYWNoZWRFbGVtZW50KCk7Ci0KLSAgICBpZiAoaXNMZW5ndGhDYWNoZVZh
bGlkKCkgJiYgY2FjaGVkTGVuZ3RoKCkgPD0gb2Zmc2V0KQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIENvbnRhaW5lck5vZGUmIHJvb3QgPSByb290Tm9kZSgpOwotCi0gICAgaWYgKGlzTGVuZ3Ro
Q2FjaGVWYWxpZCgpICYmICF1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSAmJiBpc0xh
c3RJdGVtQ2xvc2VyVGhhbkxhc3RPckNhY2hlZEl0ZW0ob2Zmc2V0KSkgewotICAgICAgICBFbGVt
ZW50KiBsYXN0SXRlbSA9IGl0ZW1CZWZvcmUoMCk7Ci0gICAgICAgIEFTU0VSVChsYXN0SXRlbSk7
Ci0gICAgICAgIHNldENhY2hlZEVsZW1lbnQoKmxhc3RJdGVtLCBjYWNoZWRMZW5ndGgoKSAtIDEp
OwotICAgIH0gZWxzZSBpZiAoIWlzRWxlbWVudENhY2hlVmFsaWQoKSB8fCBpc0ZpcnN0SXRlbUNs
b3NlclRoYW5DYWNoZWRJdGVtKG9mZnNldCkgfHwgKHVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZl
cnNhbCgpICYmIG9mZnNldCA8IGNhY2hlZEVsZW1lbnRPZmZzZXQoKSkpIHsKLSAgICAgICAgRWxl
bWVudCogZmlyc3RJdGVtID0gZmlyc3RFbGVtZW50KCZyb290KTsKLQotICAgICAgICBpZiAoIWZp
cnN0SXRlbSkgewotICAgICAgICAgICAgc2V0TGVuZ3RoQ2FjaGUoMCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBzZXRDYWNoZWRFbGVtZW50KCpmaXJzdEl0ZW0s
IDApOwotICAgICAgICBBU1NFUlQoIWNhY2hlZEVsZW1lbnRPZmZzZXQoKSk7Ci0gICAgfQotCi0g
ICAgaWYgKGNhY2hlZEVsZW1lbnRPZmZzZXQoKSA9PSBvZmZzZXQpCi0gICAgICAgIHJldHVybiBj
YWNoZWRFbGVtZW50KCk7Ci0KLSAgICByZXR1cm4gZWxlbWVudEJlZm9yZU9yQWZ0ZXJDYWNoZWRF
bGVtZW50KG9mZnNldCwgJnJvb3QpOworICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KCp0
aGlzLCBvZmZzZXQpOwogfQogCi1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmVsZW1l
bnRCZWZvcmVPckFmdGVyQ2FjaGVkRWxlbWVudCh1bnNpZ25lZCBvZmZzZXQsIENvbnRhaW5lck5v
ZGUqIHJvb3QpIGNvbnN0Ci17Ci0gICAgdW5zaWduZWQgY3VycmVudE9mZnNldCA9IGNhY2hlZEVs
ZW1lbnRPZmZzZXQoKTsKLSAgICBFbGVtZW50KiBjdXJyZW50SXRlbSA9IGNhY2hlZEVsZW1lbnQo
KTsKLSAgICBBU1NFUlQoY3VycmVudEl0ZW0pOwotICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0ICE9
IG9mZnNldCk7Ci0KLSAgICBpZiAob2Zmc2V0IDwgY2FjaGVkRWxlbWVudE9mZnNldCgpKSB7Ci0g
ICAgICAgIEFTU0VSVCghdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkpOwotICAgICAg
ICB3aGlsZSAoKGN1cnJlbnRJdGVtID0gaXRlbUJlZm9yZShjdXJyZW50SXRlbSkpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoY3VycmVudE9mZnNldCk7Ci0gICAgICAgICAgICBjdXJyZW50T2Zmc2V0
LS07Ci0gICAgICAgICAgICBpZiAoY3VycmVudE9mZnNldCA9PSBvZmZzZXQpIHsKLSAgICAgICAg
ICAgICAgICBzZXRDYWNoZWRFbGVtZW50KCpjdXJyZW50SXRlbSwgY3VycmVudE9mZnNldCk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRJdGVtOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0KLSAgICBjdXJyZW50SXRlbSA9IHRyYXZlcnNlRm9yd2FyZFRvT2Zmc2V0KG9mZnNldCwg
Y3VycmVudEl0ZW0sIGN1cnJlbnRPZmZzZXQsIHJvb3QpOwotCi0gICAgaWYgKCFjdXJyZW50SXRl
bSkgewotICAgICAgICAvLyBEaWQgbm90IGZpbmQgdGhlIGl0ZW0uIE9uIHBsdXMgc2lkZSwgd2Ug
bm93IGtub3cgdGhlIGxlbmd0aC4KLSAgICAgICAgc2V0TGVuZ3RoQ2FjaGUoY3VycmVudE9mZnNl
dCArIDEpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgc2V0Q2FjaGVkRWxlbWVudCgq
Y3VycmVudEl0ZW0sIGN1cnJlbnRPZmZzZXQpOwotICAgIHJldHVybiBjdXJyZW50SXRlbTsKLX0K
LQotc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhU
TUxFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2li
bGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQogewogICAgIC8vIFRoZSBkb2N1
bWVudC5hbGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBlcyBvZiBlbGVtZW50
cyBieSBuYW1lLAogICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5cGUgb2YgZWxlbWVu
dCBieSBpZC4KLSAgICByZXR1cm4gZWxlbWVudC0+aGFzTG9jYWxOYW1lKGFwcGxldFRhZykKLSAg
ICAgICAgfHwgZWxlbWVudC0+aGFzTG9jYWxOYW1lKGVtYmVkVGFnKQotICAgICAgICB8fCBlbGVt
ZW50LT5oYXNMb2NhbE5hbWUoZm9ybVRhZykKLSAgICAgICAgfHwgZWxlbWVudC0+aGFzTG9jYWxO
YW1lKGltZ1RhZykKLSAgICAgICAgfHwgZWxlbWVudC0+aGFzTG9jYWxOYW1lKGlucHV0VGFnKQot
ICAgICAgICB8fCBlbGVtZW50LT5oYXNMb2NhbE5hbWUob2JqZWN0VGFnKQotICAgICAgICB8fCBl
bGVtZW50LT5oYXNMb2NhbE5hbWUoc2VsZWN0VGFnKTsKKyAgICByZXR1cm4gZWxlbWVudC5oYXNM
b2NhbE5hbWUoYXBwbGV0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc0xvY2FsTmFtZShlbWJl
ZFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNMb2NhbE5hbWUoZm9ybVRhZykKKyAgICAgICAg
fHwgZWxlbWVudC5oYXNMb2NhbE5hbWUoaW1nVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc0xv
Y2FsTmFtZShpbnB1dFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNMb2NhbE5hbWUob2JqZWN0
VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc0xvY2FsTmFtZShzZWxlY3RUYWcpOwogfQogCi1p
bmxpbmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0NoaWxkRWxlbWVudChjb25zdCBIVE1MQ29sbGVj
dGlvbiogbm9kZUxpc3QsIENvbnRhaW5lck5vZGUqIHJvb3QpCitpbmxpbmUgRWxlbWVudCogZmly
c3RNYXRjaGluZ0NoaWxkRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgbm9kZUxpc3QsIENv
bnRhaW5lck5vZGUmIHJvb3QpCiB7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2
ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc01hdGNo
aW5nRWxlbWVudChub2RlTGlzdCwgZWxlbWVudCkpCisgICAgRWxlbWVudCogZWxlbWVudCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKCZyb290KTsKKyAgICB3aGlsZSAoZWxlbWVudCAm
JiAhaXNNYXRjaGluZ0VsZW1lbnQobm9kZUxpc3QsICplbGVtZW50KSkKICAgICAgICAgZWxlbWVu
dCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGVsZW1lbnQpOwogICAgIHJldHVybiBl
bGVtZW50OwogfQogCi1pbmxpbmUgRWxlbWVudCogbmV4dE1hdGNoaW5nU2libGluZ0VsZW1lbnQo
Y29uc3QgSFRNTENvbGxlY3Rpb24qIG5vZGVMaXN0LCBFbGVtZW50KiBjdXJyZW50KQoraW5saW5l
IEVsZW1lbnQqIG5leHRNYXRjaGluZ1NpYmxpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9u
JiBub2RlTGlzdCwgRWxlbWVudCogY3VycmVudCkKIHsKICAgICBkbyB7CiAgICAgICAgIGN1cnJl
bnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjdXJyZW50KTsKLSAgICB9IHdoaWxl
IChjdXJyZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChub2RlTGlzdCwgY3VycmVudCkpOworICAg
IH0gd2hpbGUgKGN1cnJlbnQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KG5vZGVMaXN0LCAqY3VycmVu
dCkpOwogICAgIHJldHVybiBjdXJyZW50OwogfQogCi1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxl
Y3Rpb246OmZpcnN0RWxlbWVudChDb250YWluZXJOb2RlKiByb290KSBjb25zdAoraW5saW5lIEVs
ZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpmaXJzdEVsZW1lbnQoQ29udGFpbmVyTm9kZSYgcm9vdCkg
Y29uc3QKIHsKICAgICBpZiAodXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkpCiAgICAg
ICAgIHJldHVybiBjdXN0b21FbGVtZW50QWZ0ZXIobnVsbHB0cik7CiAgICAgaWYgKG1fc2hvdWxk
T25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikKLSAgICAgICAgcmV0dXJuIGZpcnN0TWF0Y2hpbmdD
aGlsZEVsZW1lbnQodGhpcywgcm9vdCk7Ci0gICAgcmV0dXJuIGZpcnN0TWF0Y2hpbmdFbGVtZW50
KHRoaXMsIHJvb3QpOworICAgICAgICByZXR1cm4gZmlyc3RNYXRjaGluZ0NoaWxkRWxlbWVudCgq
dGhpcywgcm9vdCk7CisgICAgcmV0dXJuIGZpcnN0TWF0Y2hpbmdFbGVtZW50KCp0aGlzLCByb290
KTsKIH0KIAotaW5saW5lIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjp0cmF2ZXJzZUZvcndhcmRU
b09mZnNldCh1bnNpZ25lZCBvZmZzZXQsIEVsZW1lbnQqIGN1cnJlbnRFbGVtZW50LCB1bnNpZ25l
ZCYgY3VycmVudE9mZnNldCwgQ29udGFpbmVyTm9kZSogcm9vdCkgY29uc3QKK2lubGluZSBFbGVt
ZW50KiBIVE1MQ29sbGVjdGlvbjo6dHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQsIENvbnRhaW5lck5vZGUmIHJv
b3QpIGNvbnN0CiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY3VycmVu
dE9mZnNldCA8IG9mZnNldCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9ICZjdXJyZW50OwogICAg
IGlmICh1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSkgewotICAgICAgICB3aGlsZSAo
KGN1cnJlbnRFbGVtZW50ID0gY3VzdG9tRWxlbWVudEFmdGVyKGN1cnJlbnRFbGVtZW50KSkpIHsK
LSAgICAgICAgICAgIGlmICgrK2N1cnJlbnRPZmZzZXQgPT0gb2Zmc2V0KQotICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50RWxlbWVudDsKKyAgICAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9
IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAg
ICAgIGVsZW1lbnQgPSBjdXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7CisgICAgICAgICAgICBp
ZiAoIWVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgIH0KICAgICBp
ZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSB7Ci0gICAgICAgIHdoaWxlICgo
Y3VycmVudEVsZW1lbnQgPSBuZXh0TWF0Y2hpbmdTaWJsaW5nRWxlbWVudCh0aGlzLCBjdXJyZW50
RWxlbWVudCkpKSB7Ci0gICAgICAgICAgICBpZiAoKytjdXJyZW50T2Zmc2V0ID09IG9mZnNldCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7CisgICAgICAgIGZvciAodHJh
dmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50
KSB7CisgICAgICAgICAgICBlbGVtZW50ID0gbmV4dE1hdGNoaW5nU2libGluZ0VsZW1lbnQoKnRo
aXMsIGVsZW1lbnQpOworICAgICAgICAgICAgaWYgKCFlbGVtZW50KQorICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gZWxlbWVudDsKICAgICB9Ci0gICAgcmV0dXJuIHRyYXZlcnNlTWF0Y2hpbmdFbGVtZW50
c0ZvcndhcmRUb09mZnNldCh0aGlzLCBvZmZzZXQsIGN1cnJlbnRFbGVtZW50LCBjdXJyZW50T2Zm
c2V0LCByb290KTsKKyAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQg
PCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgeworICAgICAgICBlbGVtZW50ID0gbmV4dE1hdGNo
aW5nRWxlbWVudCgqdGhpcywgZWxlbWVudCwgcm9vdCk7CisgICAgICAgIGlmICghZWxlbWVudCkK
KyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudDsK
K30KKworRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25GaXJzdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZpcnN0RWxlbWVudChyb290Tm9kZSgpKTsKK30KKworRWxlbWVudCogSFRN
TENvbGxlY3Rpb246OmNvbGxlY3Rpb25MYXN0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJseSB0byB0aGUgZm9yd2FyZCBjYXNlLgorICAg
IGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOworICAgIEVsZW1lbnQqIGxhc3QgPSBtX3Nob3VsZE9u
bHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQoJnJv
b3QpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbigmcm9vdCk7CisgICAgcmV0dXJuIGl0
ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQobGFzdCk7Cit9CisKK0VsZW1lbnQqIEhUTUxDb2xsZWN0
aW9uOjpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRy
YXZlcnNlRm9yd2FyZChjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQsIHJvb3ROb2RlKCkp
OworfQorCitFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dh
cmQoRWxlbWVudCYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0Cit7CisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIG9wdGltaXplZCBzaW1pbGFybHkgdG8gdGhlIGZvcndhcmQgY2Fz
ZS4KKyAgICBhdXRvJiByb290ID0gcm9vdE5vZGUoKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0g
JmN1cnJlbnQ7CisgICAgZm9yICg7IGNvdW50ICYmIGVsZW1lbnQgOyAtLWNvdW50KQorICAgICAg
ICBlbGVtZW50ID0gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50VHJhdmVyc2FsOjpw
cmV2aW91cyhlbGVtZW50LCAmcm9vdCkpOworICAgIHJldHVybiBlbGVtZW50OwogfQogCiB2b2lk
IEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoKSBjb25zdAogewotICAgIG1fY2FjaGVk
RWxlbWVudCA9IG51bGxwdHI7Ci0gICAgbV9pc0xlbmd0aENhY2hlVmFsaWQgPSBmYWxzZTsKLSAg
ICBtX2lzRWxlbWVudENhY2hlVmFsaWQgPSBmYWxzZTsKKyAgICBtX2luZGV4Q2FjaGUuaW52YWxp
ZGF0ZSgpOwogICAgIG1faXNOYW1lQ2FjaGVWYWxpZCA9IGZhbHNlOwogICAgIG1faXNJdGVtUmVm
RWxlbWVudHNDYWNoZVZhbGlkID0gZmFsc2U7CiAgICAgbV9pZENhY2hlLmNsZWFyKCk7CkBAIC00
NzUsMTQgKzM5NSwxMyBAQCBOb2RlKiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0
CiAgICAgICAgIH0gZWxzZSBpZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoTmFtZSgqbmFtZS5p
bXBsKCkpKSB7CiAgICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxl
bWVudHNXaXRoTmFtZShuYW1lKSkgewogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVT
Y29wZS5nZXRFbGVtZW50QnlOYW1lKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmIChjYW5kaWRh
dGUgJiYgdHlwZSgpID09IERvY0FsbCAmJiAoIWNhbmRpZGF0ZS0+aXNIVE1MRWxlbWVudCgpIHx8
ICFuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCh0b0hUTUxFbGVtZW50KGNhbmRpZGF0
ZSkpKSkKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICYmIHR5cGUoKSA9PSBEb2NBbGwg
JiYgKCFjYW5kaWRhdGUtPmlzSFRNTEVsZW1lbnQoKSB8fCAhbmFtZVNob3VsZEJlVmlzaWJsZUlu
RG9jdW1lbnRBbGwodG9IVE1MRWxlbWVudCgqY2FuZGlkYXRlKSkpKQogICAgICAgICAgICAgICAg
ICAgICBjYW5kaWRhdGUgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGlmIChjYW5kaWRhdGUKLSAgICAgICAgICAgICYm
IGlzTWF0Y2hpbmdFbGVtZW50KHRoaXMsIGNhbmRpZGF0ZSkKKyAgICAgICAgaWYgKGNhbmRpZGF0
ZSAmJiBpc01hdGNoaW5nRWxlbWVudCgqdGhpcywgKmNhbmRpZGF0ZSkKICAgICAgICAgICAgICYm
IChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBjYW5kaWRhdGUtPnBhcmVudE5v
ZGUoKSA9PSAmcm9vdCA6IGNhbmRpZGF0ZS0+aXNEZXNjZW5kYW50T2YoJnJvb3QpKSkKICAgICAg
ICAgICAgIHJldHVybiBjYW5kaWRhdGU7CiAgICAgfQpAQCAtNTEwLDE1ICs0MjksMTUgQEAgdm9p
ZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgYwogCiAgICAgQ29udGFpbmVyTm9k
ZSYgcm9vdCA9IHJvb3ROb2RlKCk7CiAKLSAgICB1bnNpZ25lZCBvZmZzZXQgPSAwOwotICAgIGZv
ciAoRWxlbWVudCogZWxlbWVudCA9IGZpcnN0RWxlbWVudCgmcm9vdCk7IGVsZW1lbnQ7IGVsZW1l
bnQgPSB0cmF2ZXJzZUZvcndhcmRUb09mZnNldChvZmZzZXQgKyAxLCBlbGVtZW50LCBvZmZzZXQs
ICZyb290KSkgeworICAgIHVuc2lnbmVkIGNvdW50OworICAgIGZvciAoRWxlbWVudCogZWxlbWVu
dCA9IGZpcnN0RWxlbWVudChyb290KTsgZWxlbWVudDsgZWxlbWVudCA9IHRyYXZlcnNlRm9yd2Fy
ZCgqZWxlbWVudCwgMSwgY291bnQsIHJvb3QpKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaWRBdHRyVmFsID0gZWxlbWVudC0+Z2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFp
ZEF0dHJWYWwuaXNFbXB0eSgpKQogICAgICAgICAgICAgYXBwZW5kSWRDYWNoZShpZEF0dHJWYWws
IGVsZW1lbnQpOwogICAgICAgICBpZiAoIWVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVBdHRyVmFs
ID0gZWxlbWVudC0+Z2V0TmFtZUF0dHJpYnV0ZSgpOwotICAgICAgICBpZiAoIW5hbWVBdHRyVmFs
LmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwgIT0gbmFtZUF0dHJWYWwgJiYgKHR5cGUoKSAhPSBEb2NB
bGwgfHwgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwodG9IVE1MRWxlbWVudChlbGVt
ZW50KSkpKQorICAgICAgICBpZiAoIW5hbWVBdHRyVmFsLmlzRW1wdHkoKSAmJiBpZEF0dHJWYWwg
IT0gbmFtZUF0dHJWYWwgJiYgKHR5cGUoKSAhPSBEb2NBbGwgfHwgbmFtZVNob3VsZEJlVmlzaWJs
ZUluRG9jdW1lbnRBbGwodG9IVE1MRWxlbWVudCgqZWxlbWVudCkpKSkKICAgICAgICAgICAgIGFw
cGVuZE5hbWVDYWNoZShuYW1lQXR0clZhbCwgZWxlbWVudCk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxNTg3NTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIz
LDcgQEAKICNpZm5kZWYgSFRNTENvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MQ29sbGVjdGlvbl9o
CiAKKyNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIgogI2luY2x1ZGUgIkNvbGxlY3Rp
b25UeXBlLmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCkBAIC01MSwyNSArNTIsNiBAQCBwdWJsaWM6CiAgICAgLy8gTm9uLURPTSBBUEkKICAgICBi
b29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIHZv
aWQgbmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWY8RWxlbWVu
dD4+JikgY29uc3Q7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlm
IChpc0xlbmd0aENhY2hlVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiAhY2FjaGVkTGVuZ3Ro
KCk7Ci0gICAgICAgIGlmIChpc0VsZW1lbnRDYWNoZVZhbGlkKCkpCi0gICAgICAgICAgICByZXR1
cm4gIWNhY2hlZEVsZW1lbnQoKTsKLSAgICAgICAgcmV0dXJuICFpdGVtKDApOwotICAgIH0KLSAg
ICBib29sIGhhc0V4YWN0bHlPbmVJdGVtKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc0xl
bmd0aENhY2hlVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjYWNoZWRMZW5ndGgoKSA9PSAx
OwotICAgICAgICBpZiAoaXNFbGVtZW50Q2FjaGVWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJu
IGNhY2hlZEVsZW1lbnQoKSAmJiAhY2FjaGVkRWxlbWVudE9mZnNldCgpICYmICFpdGVtKDEpOwot
ICAgICAgICByZXR1cm4gaXRlbSgwKSAmJiAhaXRlbSgxKTsKLSAgICB9Ci0KLSAgICBFbGVtZW50
KiBmaXJzdEVsZW1lbnQoQ29udGFpbmVyTm9kZSogcm9vdCkgY29uc3Q7Ci0gICAgRWxlbWVudCog
dHJhdmVyc2VGb3J3YXJkVG9PZmZzZXQodW5zaWduZWQgb2Zmc2V0LCBFbGVtZW50KiBjdXJyZW50
RWxlbWVudCwgdW5zaWduZWQmIGN1cnJlbnRPZmZzZXQsIENvbnRhaW5lck5vZGUqIHJvb3QpIGNv
bnN0OwogCiAgICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3Jv
b3RUeXBlID09IE5vZGVMaXN0SXNSb290ZWRBdERvY3VtZW50OyB9CiAgICAgTm9kZUxpc3RJbnZh
bGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxOb2RlTGlzdEludmFsaWRhdGlvblR5cGU+KG1faW52YWxpZGF0aW9uVHlwZSk7IH0KQEAgLTg1
LDYgKzY3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKCkg
Y29uc3Q7CiAgICAgdm9pZCBpbnZhbGlkYXRlSWROYW1lQ2FjaGVNYXBzKCkgY29uc3Q7CiAKKyAg
ICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGUKKyAgICBFbGVtZW50KiBjb2xsZWN0aW9uRmly
c3QoKSBjb25zdDsKKyAgICBFbGVtZW50KiBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OworICAgIEVs
ZW1lbnQqIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudCYsIHVuc2lnbmVkIGNvdW50
LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0OworICAgIEVsZW1lbnQqIGNvbGxlY3Rp
b25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnQmLCB1bnNpZ25lZCBjb3VudCkgY29uc3Q7CisgICAg
Ym9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuICFtX3Vz
ZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbDsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBF
bGVtZW50VHJhdmVyc2FsVHlwZSB7IE5vcm1hbFRyYXZlcnNhbCwgQ3VzdG9tRm9yd2FyZE9ubHlU
cmF2ZXJzYWwgfTsKICAgICBIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xs
ZWN0aW9uVHlwZSwgRWxlbWVudFRyYXZlcnNhbFR5cGUgPSBOb3JtYWxUcmF2ZXJzYWwpOwpAQCAt
MTAxLDI0ICs5MCw2IEBAIHByb3RlY3RlZDoKICAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSgp
IGNvbnN0OwogICAgIGJvb2wgdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWw7IH0KIAotICAgIGJvb2wg
aXNFbGVtZW50Q2FjaGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbGVtZW50Q2FjaGVWYWxp
ZDsgfQotICAgIEVsZW1lbnQqIGNhY2hlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NhY2hl
ZEVsZW1lbnQ7IH0KLSAgICB1bnNpZ25lZCBjYWNoZWRFbGVtZW50T2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRFbGVtZW50T2Zmc2V0OyB9Ci0KLSAgICBib29sIGlzTGVuZ3RoQ2FjaGVW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMZW5ndGhDYWNoZVZhbGlkOyB9Ci0gICAgdW5zaWdu
ZWQgY2FjaGVkTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRMZW5ndGg7IH0KLSAgICB2
b2lkIHNldExlbmd0aENhY2hlKHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IG1fY2FjaGVkTGVuZ3RoID0gbGVuZ3RoOwotICAgICAgICBtX2lzTGVuZ3RoQ2FjaGVWYWxpZCA9
IHRydWU7Ci0gICAgfQotICAgIHZvaWQgc2V0Q2FjaGVkRWxlbWVudChFbGVtZW50JiBlbGVtZW50
LCB1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Ci0gICAgewotICAgICAgICBtX2NhY2hlZEVsZW1lbnQg
PSAmZWxlbWVudDsKLSAgICAgICAgbV9jYWNoZWRFbGVtZW50T2Zmc2V0ID0gb2Zmc2V0OwotICAg
ICAgICBtX2lzRWxlbWVudENhY2hlVmFsaWQgPSB0cnVlOwotICAgIH0KLQogICAgIGJvb2wgaXNJ
dGVtUmVmRWxlbWVudHNDYWNoZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pc0l0ZW1SZWZFbGVt
ZW50c0NhY2hlVmFsaWQ7IH0KICAgICB2b2lkIHNldEl0ZW1SZWZFbGVtZW50c0NhY2hlVmFsaWQo
KSBjb25zdCB7IG1faXNJdGVtUmVmRWxlbWVudHNDYWNoZVZhbGlkID0gdHJ1ZTsgfQogCkBAIC0x
MzAsMjAgKzEwMSwxNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGFw
cGVuZChOb2RlQ2FjaGVNYXAmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBFbGVtZW50Kik7CiAKLSAg
ICBFbGVtZW50KiBlbGVtZW50QmVmb3JlT3JBZnRlckNhY2hlZEVsZW1lbnQodW5zaWduZWQgb2Zm
c2V0LCBDb250YWluZXJOb2RlKiByb290KSBjb25zdDsKLSAgICBib29sIGlzTGFzdEl0ZW1DbG9z
ZXJUaGFuTGFzdE9yQ2FjaGVkSXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0OwotICAgIGJvb2wg
aXNGaXJzdEl0ZW1DbG9zZXJUaGFuQ2FjaGVkSXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Owog
ICAgIEVsZW1lbnQqIGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudCogY3VycmVudCkg
Y29uc3Q7Ci0gICAgRWxlbWVudCogaXRlbUJlZm9yZShFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNv
bnN0OworICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudChDb250YWluZXJOb2RlJiByb290KSBjb25z
dDsKKyAgICBFbGVtZW50KiB0cmF2ZXJzZUZvcndhcmQoRWxlbWVudCYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50
KikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAg
IFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9kZTsKLSAgICBtdXRhYmxlIEVsZW1lbnQqIG1f
Y2FjaGVkRWxlbWVudDsKLSAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkTGVuZ3RoOwotICAg
IG11dGFibGUgdW5zaWduZWQgbV9jYWNoZWRFbGVtZW50T2Zmc2V0OwotICAgIG11dGFibGUgdW5z
aWduZWQgbV9pc0xlbmd0aENhY2hlVmFsaWQgOiAxOwotICAgIG11dGFibGUgdW5zaWduZWQgbV9p
c0VsZW1lbnRDYWNoZVZhbGlkIDogMTsKKworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2Fj
aGU8SFRNTENvbGxlY3Rpb24sIEVsZW1lbnQ+IG1faW5kZXhDYWNoZTsKKwogICAgIGNvbnN0IHVu
c2lnbmVkIG1fcm9vdFR5cGUgOiAyOwogICAgIGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9u
VHlwZSA6IDQ7CiAgICAgY29uc3QgdW5zaWduZWQgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENo
aWxkcmVuIDogMTsK
</data>
<flag name="review"
          id="239120"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>